diff options
| author | Lars Ingebrigtsen | 2019-06-12 18:21:35 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2019-06-12 18:21:35 +0200 |
| commit | 26f2b1faaa1dc8847f2013268c20f51c144ae711 (patch) | |
| tree | ac2a36c2da794f06a5641bd928e8123b08538d96 /lisp | |
| parent | 48178edeed1006775a4a6755c6ee22bf5ab7a8e4 (diff) | |
| download | emacs-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.el | 26 |
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) |