Skip to content

Commit 26f2b1f

Browse files
committed
Rewrite the kmacro register function to avoid using obsolete functions
* lisp/kmacro.el (kmacro-register): New struct to replace the general registerv struct. (register-val-jump-to, register-val-describe) (register-val-insert): New methods to implement the register interface. (kmacro-to-register): Use the kmacro-register struct.
1 parent 48178ed commit 26f2b1f

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

lisp/kmacro.el

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112

113113
;; Customization:
114114
(require 'replace)
115+
(require 'cl-lib)
115116

116117
(defgroup kmacro nil
117118
"Simplified keyboard macro user interface."
@@ -872,8 +873,20 @@ Such a \"function\" cannot be called from Lisp, but it is a valid editor command
872873
(put symbol 'kmacro t))
873874

874875

875-
(defun kmacro-execute-from-register (k)
876-
(kmacro-call-macro current-prefix-arg nil nil k))
876+
(cl-defstruct (kmacro-register
877+
(:constructor nil)
878+
(:constructor kmacro-make-register (macro)))
879+
macro)
880+
881+
(cl-defmethod register-val-jump-to ((data kmacro-register) _arg)
882+
(kmacro-call-macro current-prefix-arg nil nil (kmacro-register-macro data)))
883+
884+
(cl-defmethod register-val-describe ((data kmacro-register) _verbose)
885+
(princ (format "a keyboard macro:\n %s"
886+
(format-kbd-macro (kmacro-register-macro data)))))
887+
888+
(cl-defmethod register-val-insert ((data kmacro-register))
889+
(insert (format-kbd-macro (kmacro-register-macro data))))
877890

878891
(defun kmacro-to-register (r)
879892
"Store the last keyboard macro in register R.
@@ -883,14 +896,7 @@ Interactively, reads the register using `register-read-with-preview'."
883896
(progn
884897
(or last-kbd-macro (error "No keyboard macro defined"))
885898
(list (register-read-with-preview "Save to register: "))))
886-
(set-register r (registerv-make
887-
last-kbd-macro
888-
:jump-func 'kmacro-execute-from-register
889-
:print-func (lambda (k)
890-
(princ (format "a keyboard macro:\n %s"
891-
(format-kbd-macro k))))
892-
:insert-func (lambda (k)
893-
(insert (format-kbd-macro k))))))
899+
(set-register r (kmacro-make-register last-kbd-macro)))
894900

895901

896902
(defun kmacro-view-macro (&optional _arg)

0 commit comments

Comments
 (0)