summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortdback <tyler@tdback.net>2025-02-10 22:15:01 -0500
committertdback <tyler@tdback.net>2025-02-10 22:15:01 -0500
commitff732109b88e451f8902f0a370cff184b75f481f (patch)
tree4fc645f5e91c1771b640222e87bfee16af75e7ee
parent7cf5688f1d69ea0802d570adbfbce5e1d8ef556c (diff)
lisp: add meow config
-rw-r--r--init.el2
-rw-r--r--lisp/td-meow.el105
2 files changed, 106 insertions, 1 deletions
diff --git a/init.el b/init.el
index 93aeaa7..bf54efd 100644
--- a/init.el
+++ b/init.el
@@ -27,8 +27,8 @@
(require 'td-common)
(require 'td-dired)
-(require 'td-evil)
(require 'td-functions)
+(require 'td-meow)
(require 'td-mu4e)
(require 'td-org)
(require 'td-present)
diff --git a/lisp/td-meow.el b/lisp/td-meow.el
new file mode 100644
index 0000000..bf6beec
--- /dev/null
+++ b/lisp/td-meow.el
@@ -0,0 +1,105 @@
+;;; td-meow.el --- making emacs purr -*- lexical-binding: t; -*-
+
+(defun meow-setup ()
+ (setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
+ (meow-motion-overwrite-define-key
+ '("j" . meow-next)
+ '("k" . meow-prev)
+ '("<escape>" . ignore))
+ (meow-leader-define-key
+ ;; `SPC j/k' will run the original command in MOTION state.
+ '("j" . "H-j")
+ '("k" . "H-k")
+ ;; Use `SPC (0-9)' for digit arguments.
+ '("1" . meow-digit-argument)
+ '("2" . meow-digit-argument)
+ '("3" . meow-digit-argument)
+ '("4" . meow-digit-argument)
+ '("5" . meow-digit-argument)
+ '("6" . meow-digit-argument)
+ '("7" . meow-digit-argument)
+ '("8" . meow-digit-argument)
+ '("9" . meow-digit-argument)
+ '("0" . meow-digit-argument)
+ '("/" . meow-keypad-describe-key)
+ '("?" . meow-cheatsheet))
+ (meow-normal-define-key
+ '("0" . meow-expand-0)
+ '("9" . meow-expand-9)
+ '("8" . meow-expand-8)
+ '("7" . meow-expand-7)
+ '("6" . meow-expand-6)
+ '("5" . meow-expand-5)
+ '("4" . meow-expand-4)
+ '("3" . meow-expand-3)
+ '("2" . meow-expand-2)
+ '("1" . meow-expand-1)
+ '("-" . negative-argument)
+ '(";" . meow-reverse)
+ '("," . meow-inner-of-thing)
+ '("." . meow-bounds-of-thing)
+ '("[" . meow-beginning-of-thing)
+ '("]" . meow-end-of-thing)
+ '("a" . meow-append)
+ '("A" . meow-open-below)
+ '("b" . meow-back-word)
+ '("B" . meow-back-symbol)
+ '("c" . meow-change)
+ '("d" . meow-delete)
+ '("D" . meow-backward-delete)
+ '("e" . meow-next-word)
+ '("E" . meow-next-symbol)
+ '("f" . meow-find)
+ '("g" . meow-cancel-selection)
+ '("G" . meow-grab)
+ '("h" . meow-left)
+ '("H" . meow-left-expand)
+ '("i" . meow-insert)
+ '("I" . meow-open-above)
+ '("j" . meow-next)
+ '("J" . meow-next-expand)
+ '("k" . meow-prev)
+ '("K" . meow-prev-expand)
+ '("l" . meow-right)
+ '("L" . meow-right-expand)
+ '("m" . meow-join)
+ '("n" . meow-search)
+ '("o" . meow-block)
+ '("O" . meow-to-block)
+ '("p" . meow-yank)
+ '("q" . meow-quit)
+ '("Q" . meow-goto-line)
+ '("r" . meow-replace)
+ '("R" . meow-swap-grab)
+ '("s" . meow-kill)
+ '("t" . meow-till)
+ '("u" . meow-undo)
+ '("U" . meow-undo-in-selection)
+ '("v" . meow-visit)
+ '("w" . meow-mark-word)
+ '("W" . meow-mark-symbol)
+ '("x" . meow-line)
+ '("X" . meow-goto-line)
+ '("y" . meow-save)
+ '("Y" . meow-sync-grab)
+ '("z" . meow-pop-selection)
+ '("'" . repeat)
+ '("<escape>" . ignore))
+ ;; Allow `C-g' to exit to NORMAL state, similar to how evil does it.
+ (meow-define-keys 'insert '("C-g" . meow-insert-exit)))
+
+(use-package meow
+ :ensure t
+ :custom
+ (meow-display-thing-help t)
+ (meow-expand-hint-counts '((word . 30)
+ (line . 30)
+ (block . 30)
+ (find . 30)
+ (till . 30)))
+ :config
+ (meow-setup)
+ (meow-global-mode))
+
+(provide 'td-meow)
+;;; td-meow.el ends here