aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorLars Ingebrigtsen2019-06-12 18:21:35 +0200
committerLars Ingebrigtsen2019-06-12 18:21:35 +0200
commit26f2b1faaa1dc8847f2013268c20f51c144ae711 (patch)
treeac2a36c2da794f06a5641bd928e8123b08538d96 /lisp
parent48178edeed1006775a4a6755c6ee22bf5ab7a8e4 (diff)
downloademacs-26f2b1faaa1dc8847f2013268c20f51c144ae711.tar.gz
emacs-26f2b1faaa1dc8847f2013268c20f51c144ae711.zip
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.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/kmacro.el26
1 files changed, 16 insertions, 10 deletions
diff --git a/lisp/kmacro.el b/lisp/kmacro.el
index 01dc0586140..e5d505662b5 100644
--- a/lisp/kmacro.el
+++ b/lisp/kmacro.el
@@ -112,6 +112,7 @@
112 112
113;; Customization: 113;; Customization:
114(require 'replace) 114(require 'replace)
115(require 'cl-lib)
115 116
116(defgroup kmacro nil 117(defgroup kmacro nil
117 "Simplified keyboard macro user interface." 118 "Simplified keyboard macro user interface."
@@ -872,8 +873,20 @@ Such a \"function\" cannot be called from Lisp, but it is a valid editor command
872 (put symbol 'kmacro t)) 873 (put symbol 'kmacro t))
873 874
874 875
875(defun kmacro-execute-from-register (k) 876(cl-defstruct (kmacro-register
876 (kmacro-call-macro current-prefix-arg nil nil k)) 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))))
877 890
878(defun kmacro-to-register (r) 891(defun kmacro-to-register (r)
879 "Store the last keyboard macro in register R. 892 "Store the last keyboard macro in register R.
@@ -883,14 +896,7 @@ Interactively, reads the register using `register-read-with-preview'."
883 (progn 896 (progn
884 (or last-kbd-macro (error "No keyboard macro defined")) 897 (or last-kbd-macro (error "No keyboard macro defined"))
885 (list (register-read-with-preview "Save to register: ")))) 898 (list (register-read-with-preview "Save to register: "))))
886 (set-register r (registerv-make 899 (set-register r (kmacro-make-register last-kbd-macro)))
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))))))
894 900
895 901
896(defun kmacro-view-macro (&optional _arg) 902(defun kmacro-view-macro (&optional _arg)