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