Subject: Re: bug#71406: 30.0.50; string-edit signals error when user aborts and :abort-callback parameter nil

From: Eli Zaretskii <[email-masked]>
Date: Sat, 08 Jun 2024 16:09:33 +0300

> From: Nicholas Vollmer <[email-masked]>
> Date: Thu, 06 Jun 2024 12:03:34 -0400
> 
> 
> 1. emacs -q
> 2. eval (string-edit "test" "" #'ignore)
> 3. In the "*edit string*" buffer eval string-edit-abort.
> 
> The following error is signaled:
> 
> Debugger entered--Lisp error: (void-variable 
> string-edit--abort-callback)
>   string-edit-abort()
>   funcall-interactively(string-edit-abort)
>   command-execute(string-edit-abort)
> 
> Seeing as string-edit specifies this parameter as a &key, it 
> should either provide a default (#'ignore?) or error if the caller 
> does not provide an abort function (Though why specify it as a 
> keyword arg if it's mandatory?).

Thanks, I fixed this with the patch below.

diff --git a/lisp/textmodes/string-edit.el b/lisp/textmodes/string-edit.el
index 03be426..cafed5a 100644
--- a/lisp/textmodes/string-edit.el
+++ b/lisp/textmodes/string-edit.el
@@ -75,8 +75,7 @@ string-edit
     (setq buffer-undo-list nil)
     (string-edit-mode)
     (setq-local string-edit--success-callback success-callback)
-    (when abort-callback
-      (setq-local string-edit--abort-callback abort-callback))
+    (setq-local string-edit--abort-callback abort-callback)
     (setq-local header-line-format
                 (substitute-command-keys
                  "Type \\<string-edit-mode-map>\\[string-edit-done] when you've finished editing or \\[string-edit-abort] to abort"))