summaryrefslogtreecommitdiff
path: root/lisp/edmacro.el
diff options
context:
space:
mode:
authorStefan Kangas <stefan@marxist.se>2022-06-19 13:16:19 +0200
committerStefan Kangas <stefan@marxist.se>2022-06-19 14:32:13 +0200
commite611dbcc7c815d321199deb380df333737bab06a (patch)
tree8321eb5c515bd9dd67723feb30132195a1c488a5 /lisp/edmacro.el
parent176256cf2f80be2a692df444c7c79e9d6575c59b (diff)
downloademacs-e611dbcc7c815d321199deb380df333737bab06a.tar.gz
Add rudimentary font-locking to edmacro-mode
* lisp/edmacro.el (edmacro-label): New face. (edmacro-mode-font-lock-keywords): New variable. (edit-kbd-macro): Use font-lock in 'edmacro-mode'. Minor improvement to command substitution.
Diffstat (limited to 'lisp/edmacro.el')
-rw-r--r--lisp/edmacro.el35
1 files changed, 34 insertions, 1 deletions
diff --git a/lisp/edmacro.el b/lisp/edmacro.el
index 11afb68883d..debd76c43ad 100644
--- a/lisp/edmacro.el
+++ b/lisp/edmacro.el
@@ -76,6 +76,32 @@ Default nil means to write characters above \\177 in octal notation."
"C-c C-c" #'edmacro-finish-edit
"C-c C-q" #'edmacro-insert-key)
+(defface edmacro-label
+ '((default :inherit bold)
+ (((class color) (background dark)) :foreground "light blue")
+ (((min-colors 88) (class color) (background light)) :foreground "DarkBlue")
+ (((class color) (background light)) :foreground "blue")
+ (t :inherit bold))
+ "Face used for labels in `edit-kbd-macro'."
+ :version "29.1"
+ :group 'kmacro)
+
+(defvar edmacro-mode-font-lock-keywords
+ `((,(rx bol (group (or "Command" "Key" "Macro") ":")) 0 'edmacro-label)
+ (,(rx bol
+ (group ";; Keyboard Macro Editor. Press ")
+ (group (*? any))
+ (group " to finish; press "))
+ (1 'font-lock-comment-face)
+ (2 'help-key-binding)
+ (3 'font-lock-comment-face)
+ (,(rx (group (*? any))
+ (group " to cancel" (* any)))
+ nil nil
+ (1 'help-key-binding)
+ (2 'font-lock-comment-face)))
+ (,(rx (one-or-more ";") (zero-or-more any)) 0 'font-lock-comment-face)))
+
(defvar edmacro-store-hook)
(defvar edmacro-finish-hook)
(defvar edmacro-original-buffer)
@@ -151,11 +177,18 @@ With a prefix argument, format the macro in a more concise way."
(setq-local edmacro-original-buffer oldbuf)
(setq-local edmacro-finish-hook finish-hook)
(setq-local edmacro-store-hook store-hook)
+ (setq-local font-lock-defaults
+ '(edmacro-mode-font-lock-keywords nil nil nil nil))
+ (setq font-lock-multiline nil)
(erase-buffer)
(insert (substitute-command-keys
(concat
+ ;; When editing this, make sure to update
+ ;; `edmacro-mode-font-lock-keywords' to match.
";; Keyboard Macro Editor. Press \\[edmacro-finish-edit] "
- "to finish; press \\`C-x k RET' to cancel.\n")))
+ "to finish; press \\[kill-buffer] \\`RET' to cancel.\n")
+ ;; Use 'no-face argument to not conflict with font-lock.
+ 'no-face))
(insert ";; Original keys: " fmt "\n")
(unless store-hook
(insert "\nCommand: " (if cmd (symbol-name cmd) "none") "\n")