(Emacs)~refactor general-def system

Firstly use ~(general-evil-setup t)~ to create aliases for general-def
that are similar to evil (nmap, vmap, etc).  Define my own nmmap which
combines normal and motion states.

Refactor all uses into the general-evil aliases.
This commit is contained in:
2022-08-12 21:19:04 +01:00
parent 34434e3ac8
commit 1ed167c747

View File

@@ -223,7 +223,14 @@ instead just picking stuff I think is useful.
(general-create-definer local-leader (general-create-definer local-leader
:states '(normal motion) :states '(normal motion)
:prefix "SPC ,")) :prefix "SPC ,")
(general-create-definer general-nmmap
:states '(normal motion))
(defalias 'nmmap #'general-nmmap)
(general-evil-setup t))
#+end_src #+end_src
Add bindings for ~+literate/~ namespace, allows for quick reloads. Add bindings for ~+literate/~ namespace, allows for quick reloads.
@@ -246,8 +253,7 @@ moment), bind to general some basic binds.
(general-def (general-def
"C-x d" #'delete-frame) "C-x d" #'delete-frame)
(general-def (nmmap
:states '(normal motion)
"C--" #'text-scale-decrease "C--" #'text-scale-decrease
"C-=" #'text-scale-increase) "C-=" #'text-scale-increase)
@@ -304,8 +310,7 @@ Setup the evil package, with some opinionated keybindings:
:demand t :demand t
:hook (after-init-hook . evil-mode) :hook (after-init-hook . evil-mode)
:general :general
(general-def (nmmap
:states '(normal motion)
"TAB" #'evil-jump-item "TAB" #'evil-jump-item
"r" #'evil-replace-state "r" #'evil-replace-state
"zC" #'hs-hide-level "zC" #'hs-hide-level
@@ -321,12 +326,15 @@ Setup the evil package, with some opinionated keybindings:
(leader (leader
"w" #'evil-window-map "w" #'evil-window-map
"wd" #'delete-frame) "wd" #'delete-frame)
(vmap
:keymaps '(emacs-lisp-mode-map lisp-interaction-mode-map)
"gr" #'eval-region)
:init :init
(setq evil-want-keybinding nil (setq evil-want-keybinding nil
evil-split-window-below t evil-split-window-below t
evil-vsplit-window-right t evil-vsplit-window-right t
evil-want-abbrev-expand-on-insert-exit t evil-want-abbrev-expand-on-insert-exit t
evil-undo-system 'undo-tree) evil-undo-system #'undo-tree)
:config :config
(fset #'evil-window-vsplit #'make-frame)) (fset #'evil-window-vsplit #'make-frame))
#+end_src #+end_src
@@ -347,18 +355,13 @@ Setup the evil package, with some opinionated keybindings:
*** Evil multi cursor *** Evil multi cursor
Setup for multi cursors in Evil mode. Don't let evil-mc setup it's own Setup for multi cursors in Evil mode. Don't let evil-mc setup it's own
keymap because it uses 'gr' as its prefix, which I don't like. keymap because it uses 'gr' as its prefix, which I don't like.
Instead, bind some useful functions to my personal =+dx:evil-mc-map=
which is bound to 'gz'. Define a function =dx:evil-mc-cursor-here=
which pauses cursors upon placing a cursor at the current position.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package evil-mc (use-package evil-mc
:after evil :after evil
:init :init
(defvar evil-mc-key-map (make-sparse-keymap)) (defvar evil-mc-key-map (make-sparse-keymap))
:general :general
(general-def (nmap
:states 'normal
:infix "gz" :infix "gz"
"q" #'evil-mc-undo-all-cursors "q" #'evil-mc-undo-all-cursors
"d" #'evil-mc-make-and-goto-next-match "d" #'evil-mc-make-and-goto-next-match
@@ -497,9 +500,8 @@ with more text based functions.
(use-package simple (use-package simple
:straight nil :straight nil
:general :general
(general-def (nmmap
:keymaps 'completion-list-mode-map :keymaps 'completion-list-mode-map
:states '(normal motion)
"l" #'next-completion "l" #'next-completion
"h" #'previous-completion "h" #'previous-completion
"ESC" #'delete-completion-window "ESC" #'delete-completion-window
@@ -602,13 +604,10 @@ just setup some evil binds for company.
(prog-mode-hook . company-mode) (prog-mode-hook . company-mode)
(eshell-mode-hook . company-mode) (eshell-mode-hook . company-mode)
:general :general
(general-def (imap (kbd "C-SPC") #'company-complete)
:states 'insert (:states '(normal insert)
(kbd "C-SPC") #'company-complete) "M-j" #'company-select-next
(general-def "M-k" #'company-select-previous))
:states '(normal insert)
"M-j" #'company-select-next
"M-k" #'company-select-previous))
#+end_src #+end_src
** Pretty symbols ** Pretty symbols
Prettify symbols mode allows for users to declare 'symbols' that Prettify symbols mode allows for users to declare 'symbols' that
@@ -1075,8 +1074,7 @@ focus on a buffer.
(use-package info (use-package info
:straight nil :straight nil
:general :general
(general-def (nmmap
:states '(normal motion)
:keymaps 'Info-mode-map :keymaps 'Info-mode-map
"h" #'evil-backward-char "h" #'evil-backward-char
"k" #'evil-previous-line "k" #'evil-previous-line
@@ -1144,8 +1142,7 @@ need to use it.
(leader (leader
:infix "s" :infix "s"
"l" #'avy-goto-line) "l" #'avy-goto-line)
(general-def (nmmap
:states '(normal motion)
(kbd "C-s") #'avy-goto-char-timer (kbd "C-s") #'avy-goto-char-timer
(kbd "M-s") #'isearch-forward)) (kbd "M-s") #'isearch-forward))
#+end_src #+end_src
@@ -1161,8 +1158,7 @@ window can provide some nicer chords for higher management of windows
:custom :custom
(aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)) (aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
:general :general
(general-def (nmmap
:states '(normal motion)
[remap evil-window-next] #'ace-window)) [remap evil-window-next] #'ace-window))
#+end_src #+end_src
** Helpful ** Helpful
@@ -1281,12 +1277,10 @@ initial startup screen in default Emacs.
:general :general
(leader (leader
"ab" #'dashboard-refresh-buffer) "ab" #'dashboard-refresh-buffer)
(general-def (:states '(normal motion emacs)
:states '(normal motion emacs) :keymaps 'dashboard-mode-map
:keymaps 'dashboard-mode-map "q" (proc (interactive) (kill-this-buffer)))
"q" (proc (interactive) (kill-this-buffer))) (nmmap
(general-def
:states '(normal motion)
:keymaps 'dashboard-mode-map :keymaps 'dashboard-mode-map
"r" #'dashboard-jump-to-recent-files "r" #'dashboard-jump-to-recent-files
"p" #'dashboard-jump-to-projects "p" #'dashboard-jump-to-projects
@@ -1328,8 +1322,8 @@ calendar to the kill ring and bind it to "Y".
(inhibit-duplicate-buffer . t) (inhibit-duplicate-buffer . t)
(window-height . 0.17)) (window-height . 0.17))
:general :general
(:keymaps 'calendar-mode-map (nmmap
:states '(normal motion) :keymaps 'calendar-mode-map
"Y" #'+calendar/copy-date) "Y" #'+calendar/copy-date)
(leader (leader
"ad" #'+calendar/toggle-calendar) "ad" #'+calendar/toggle-calendar)
@@ -1360,8 +1354,7 @@ integrate it into my workflow just a bit better.
:commands (notmuch +mail/flag-thread) :commands (notmuch +mail/flag-thread)
:general :general
(leader "am" #'notmuch) (leader "am" #'notmuch)
(general-def (nmap
:states 'normal
:keymaps 'notmuch-search-mode-map :keymaps 'notmuch-search-mode-map
"f" #'+mail/flag-thread) "f" #'+mail/flag-thread)
:init :init
@@ -1459,8 +1452,7 @@ thumb, otherwise open the file."
(call-interactively #'dired-other-frame) (call-interactively #'dired-other-frame)
(call-interactively #'dired))) (call-interactively #'dired)))
(general-def (nmmap
:states '(normal motion)
:keymaps 'dired-mode-map :keymaps 'dired-mode-map
"SPC" nil "SPC" nil
"SPC ," nil) "SPC ," nil)
@@ -1505,8 +1497,7 @@ results of work very quickly without switching windows or workspaces.
(display-buffer-pop-up-frame)) (display-buffer-pop-up-frame))
:general :general
(leader "au" #'xwidget-webkit-browse-url) (leader "au" #'xwidget-webkit-browse-url)
(general-def (nmmap
:states '(normal motion)
:keymaps 'xwidget-webkit-mode-map :keymaps 'xwidget-webkit-mode-map
"q" #'quit-window "q" #'quit-window
"h" #'xwidget-webkit-scroll-backward "h" #'xwidget-webkit-scroll-backward
@@ -1612,7 +1603,7 @@ pretty symbols to eshell.
(proc (proc
(interactive) (interactive)
(general-def (general-def
:states '(insert normal) :states '(normal insert)
:keymaps 'eshell-mode-map :keymaps 'eshell-mode-map
"M-l" (proc (interactive) (eshell/clear) "M-l" (proc (interactive) (eshell/clear)
"M-j" #'eshell-next-matching-input-from-input "M-j" #'eshell-next-matching-input-from-input
@@ -1646,8 +1637,7 @@ to elfeed for loading the system.
(use-package elfeed (use-package elfeed
:general :general
(leader "ar" #'elfeed) (leader "ar" #'elfeed)
(general-def (nmmap
:states '(normal motion)
:keymaps 'elfeed-search-mode-map :keymaps 'elfeed-search-mode-map
"gr" #'elfeed-update "gr" #'elfeed-update
"s" #'elfeed-search-live-filter "s" #'elfeed-search-live-filter
@@ -1767,8 +1757,7 @@ Core proced config, just a few bindings and evil collection setup.
:general :general
(leader (leader
"ap" #'proced) "ap" #'proced)
(general-def (nmap
:states 'normal
:keymaps 'proced-mode-map :keymaps 'proced-mode-map
"za" #'proced-toggle-auto-update) "za" #'proced-toggle-auto-update)
:display :display
@@ -1789,8 +1778,7 @@ further filtering of the process list.
:straight t :straight t
:after proced :after proced
:general :general
(general-def (nmap
:states 'normal
:keymaps 'proced-mode-map :keymaps 'proced-mode-map
"%" #'proced-narrow)) "%" #'proced-narrow))
#+end_src #+end_src
@@ -1878,8 +1866,7 @@ flyspell-mode should be hooked to text-mode.
(use-package flyspell (use-package flyspell
:hook (text-mode-hook . flyspell-mode) :hook (text-mode-hook . flyspell-mode)
:general :general
(general-def (nmmap
:states '(normal motion)
:keymaps 'text-mode-map :keymaps 'text-mode-map
(kbd "M-C") #'flyspell-correct-word-before-point (kbd "M-C") #'flyspell-correct-word-before-point
(kbd "M-c") #'flyspell-auto-correct-word)) (kbd "M-c") #'flyspell-auto-correct-word))
@@ -1903,8 +1890,7 @@ limit), so set it for specific modes need the help.
(use-package whitespace (use-package whitespace
:straight nil :straight nil
:general :general
(general-def (nmmap
:states '(normal motion)
"M--" #'whitespace-cleanup) "M--" #'whitespace-cleanup)
:hook :hook
(before-save-hook . whitespace-cleanup) (before-save-hook . whitespace-cleanup)
@@ -2095,8 +2081,7 @@ to standard grep (but for PDFs!).
:after pdf-tools :after pdf-tools
:hook (pdf-view-mode-hook . pdfgrep-mode) :hook (pdf-view-mode-hook . pdfgrep-mode)
:general :general
(general-def (nmap
:states 'normal
:keymaps 'pdf-view-mode-map :keymaps 'pdf-view-mode-map
"M-g" #'pdfgrep)) "M-g" #'pdfgrep))
#+end_src #+end_src
@@ -2332,8 +2317,7 @@ a very tidy way to manage your time.
(leader (leader
"fa" (proc (interactive) (find-file (car org-agenda-files))) "fa" (proc (interactive) (find-file (car org-agenda-files)))
"aa" #'org-agenda) "aa" #'org-agenda)
(general-def (nmmap
:states '(normal motion)
:keymaps 'org-agenda-mode-map :keymaps 'org-agenda-mode-map
"J" #'org-agenda-later "J" #'org-agenda-later
"K" #'org-agenda-earlier "K" #'org-agenda-earlier
@@ -2683,8 +2667,7 @@ Then emmet for super speed
(use-package emmet-mode (use-package emmet-mode
:hook (web-mode-hook . emmet-mode) :hook (web-mode-hook . emmet-mode)
:general :general
(general-def (imap
:states 'insert
:keymaps 'emmet-mode-keymap :keymaps 'emmet-mode-keymap
"TAB" #'emmet-expand-line "TAB" #'emmet-expand-line
"M-j" #'emmet-next-edit-point "M-j" #'emmet-next-edit-point