Moved modal section into its own file.

This commit is contained in:
Micheal Smith
2025-10-30 13:50:08 -05:00
parent 97b4a23582
commit c6b1f34a2b
2 changed files with 119 additions and 222 deletions

118
config/modal.org Normal file
View File

@@ -0,0 +1,118 @@
* Modal Editing
I like using =vi= inspired modal editing. For a while I tried project evil, but
I had issues keeping up with all the binding management. This is how I came to
start using [[https://github.com/meow-edit/meow][meow]]. Aside from motions and a few other changes the meow system
mostly keeps emacs bindings similar, and also accessible via space. This
way you can switch between meow, and emacs bindings pretty seemlessly.
Here are my bindings which come from the Meow wiki. It is /mostly/ akin to
=vi= bindings. Though deletion and line editing are a good deal different.
#+begin_src emacs-lisp
(defun meow-setup ()
(setq meow-cheatsheet-layout meow-cheatsheet-layout-qwerty)
(dolist (state '((notmuch-hello-mode . motion)
(notmuch-search-mode . motion)
(notmuch-tree-mode . motion)
(notmuch-show-mode . motion)))
(add-to-list 'meow-mode-state-list state))
(meow-motion-define-key
'("j" . meow-next)
'("k" . meow-prev)
'("<escape>" . ignore))
(meow-leader-define-key
;; 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
'("C-," . major-mode-hydra)
'("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)
'("P" . meow-yank-pop)
'("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)
'("/" . consult-line)
'("'" . repeat)
'("<escape>" . ignore)))
#+end_src
There's also no dependencies that rely on meow so adding this is pretty straight
forward.
#+begin_src emacs-lisp
(use-package meow
:ensure t
:config
(meow-setup)
(meow-global-mode 1))
#+end_src