Document changes in 'edmacro-parse-keys'

* lisp/edmacro.el (edmacro-parse-keys): Add a comment for forcing
output to be a vector.
(read-kbd-macro): Adjust the doc string to changes in
'edmacro-parse-keys'.  (Bug#67182)
This commit is contained in:
Eli Zaretskii 2023-11-18 11:52:48 +02:00
parent 3327f36ad9
commit d9e43f2197

View file

@ -228,14 +228,14 @@ With a prefix argument, format the macro in a more concise way."
;;;###autoload ;;;###autoload
(defun read-kbd-macro (start &optional end) (defun read-kbd-macro (start &optional end)
"Read the region as a keyboard macro definition. "Read the region as a keyboard macro definition.
The region is interpreted as spelled-out keystrokes, e.g., \"M-x abc RET\". The region between START and END is interpreted as spelled-out keystrokes,
See documentation for `edmacro-mode' for details. e.g., \"M-x abc RET\". See documentation for `edmacro-mode' for details.
Leading/trailing \"C-x (\" and \"C-x )\" in the text are allowed and ignored. Leading/trailing \"C-x (\" and \"C-x )\" in the text are allowed and ignored.
The resulting macro is installed as the \"current\" keyboard macro. The resulting macro is installed as the \"current\" keyboard macro.
In Lisp, may also be called with a single STRING argument in which case In Lisp, may also be called with a single STRING argument in which case
the result is returned rather than being installed as the current macro. the result is returned rather than being installed as the current macro.
The result will be a string if possible, otherwise an event vector. The result is a vector of input events.
Second argument NEED-VECTOR means to return an event vector always." Second argument NEED-VECTOR means to return an event vector always."
(interactive "r") (interactive "r")
(if (stringp start) (if (stringp start)
@ -672,6 +672,13 @@ This function assumes that the events can be stored in a string."
(defun edmacro-parse-keys (string &optional _need-vector) (defun edmacro-parse-keys (string &optional _need-vector)
(let ((result (kbd string))) (let ((result (kbd string)))
;; Always return a vector. Stefan Monnier <monnier@iro.umontreal.ca>
;; writes: "I want to eliminate the use of strings that stand for a
;; sequence of events because it does nothing more than leave latent
;; bugs and create confusion (between the strings used as input to
;; `read-kbd-macro' and the strings that used to be output by
;; `read-kbd-macro'), while increasing the complexity of the rest of
;; the code which has to handle both vectors and strings."
(if (stringp result) (if (stringp result)
(seq-into result 'vector) (seq-into result 'vector)
result))) result)))