summaryrefslogtreecommitdiff
path: root/emacs/.config/emacs-kj/lisp/kj-lib.el
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2023-03-14 08:42:06 -0400
committerKjetil Orbekk <kj@orbekk.com>2023-03-14 14:15:17 -0400
commit4da5f34732d048917e8dcbdba7f7649f4dcac316 (patch)
tree6067fede5db05d2d7669af37341124dad84664e1 /emacs/.config/emacs-kj/lisp/kj-lib.el
parent85cfe8c4a376b8c521e62759bdc1f7a2fbd9d100 (diff)
add repeating key macro
Diffstat (limited to 'emacs/.config/emacs-kj/lisp/kj-lib.el')
-rw-r--r--emacs/.config/emacs-kj/lisp/kj-lib.el17
1 files changed, 17 insertions, 0 deletions
diff --git a/emacs/.config/emacs-kj/lisp/kj-lib.el b/emacs/.config/emacs-kj/lisp/kj-lib.el
new file mode 100644
index 0000000..117584b
--- /dev/null
+++ b/emacs/.config/emacs-kj/lisp/kj-lib.el
@@ -0,0 +1,17 @@
+;;; -*- lexical-binding: t; -*-
+
+(defmacro define-repeating-key (keymap key cmd &optional desc)
+ "DEF may be a cons cell (DESCRIPTION . FUNC) or a command."
+ `(let ((def
+ ,(if desc
+ `'(,desc ,cmd)
+ `',cmd)))
+ (define-key ,keymap ,key def)
+ (put ',cmd 'repeat-map ',keymap)))
+
+(provide 'kj-lib)
+
+(macroexpand '(define-repeating-key map "." mc/mark-next-like-this ))
+(define-repeating-map)
+
+(macroexpand '(define-repeating-key map "." mc/mark-next-like-this "→ this"))