From 6af86b7c549615b6ce79d809f151efa37e1184a8 Mon Sep 17 00:00:00 2001 From: Janis Date: Wed, 18 Dec 2024 23:18:02 +0100 Subject: [PATCH] using general.el for leader keybinds --- init.org | 151 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 98 insertions(+), 53 deletions(-) diff --git a/init.org b/init.org index 69676e8..7ae2bbe 100644 --- a/init.org +++ b/init.org @@ -437,6 +437,52 @@ Honestly not very happy with this at the moment, but it's kind of hacked togethe #+end_src * Packages +** =general.el= +#+begin_src emacs-lisp +(defconst nemo/leader-evil "SPC") +(defconst nemo/leader-global "C-c") + +(use-package general + :straight t + :config + (general-define-key + :states '(emacs normal) + :prefix-map 'nemo/leader-prefix-map + :prefix-command 'nemo/leader-prefix-command + :global-prefix nemo/leader-global + :prefix nemo/leader-evil) + (general-create-definer leader-def + :prefix-command 'nemo/leader-prefix-command + :prefix-map 'nemo/leader-prefix-map) + (general-create-definer leader-other-def + :states '(emacs normal) + :prefix-map 'nemo/leader-prefix-map + :prefix-command 'nemo/leader-prefix-command + :global-prefix nemo/leader-global + :prefix nemo/leader-evil + ) + ;; magit uses with-editor-mode to spawn the git process + ;; in with the emacs client as the $EDITOR + (general-def '(emacs normal) 'with-editor-mode-map ",," 'with-editor-finish) + (leader-def + "" #'nemo/switch-to-last-buffer + "d" #'duplicate-line + "gb" #'xref-go-back + "gf" #'xref-go-forward + "bk" #'switch-to-prev-buffer + "bp" #'switch-to-prev-buffer + "bj" #'switch-to-next-buffer + "bn" #'switch-to-next-buffer + "bb" #'consult-buffer + "bd" #'kill-current-buffer + "bs" #'scratch-buffer + "wd" #'delete-window + "wo" #'delete-other-windows + "ff" #'find-file + "fi" #'nemo/edit-init-org + ) + ) +#+end_src ** Web Search #+begin_src emacs-lisp (use-package engine-mode @@ -471,7 +517,6 @@ Honestly not very happy with this at the moment, but it's kind of hacked togethe #+end_src ** =magit= - try out =diff-hl= for highlighting diffs in magit: #+begin_src emacs-lisp (use-package diff-hl @@ -483,8 +528,13 @@ try out =diff-hl= for highlighting diffs in magit: =magit= is awesome and the number one reason why I use Emacs! #+begin_src emacs-lisp (use-package magit - :straight t + :straight t :defer t + :general + (leader-def + "gSh" 'magit-status-here + "gs" #'magit-status + "gSb" 'magit-blame) :config (setq magit-mode-quit-window 'magit-restore-window-configuration ;;magit-auto-revert-mode t @@ -541,50 +591,34 @@ Used by Spacemacs as well. Evil key-binds, documentation for how this works is [[https://evil.readthedocs.io/en/latest/keymaps.html][here]]: #+begin_src emacs-lisp -(evil-define-key 'normal 'global (kbd "TAB") 'mode-line-other-buffer) -(evil-define-key 'normal 'global (kbd "bb") 'consult-buffer) -(evil-define-key 'normal 'global (kbd "bd") 'kill-current-buffer) -(evil-define-key 'normal 'global (kbd "ff") 'find-file) - -(evil-define-key 'normal 'global (kbd "fi") 'nemo/edit-init-org) - -(evil-define-key 'normal 'global (kbd "wj") 'evil-window-down) -(evil-define-key 'normal 'global (kbd "wk") 'evil-window-up) -(evil-define-key 'normal 'global (kbd "wh") 'evil-window-left) -(evil-define-key 'normal 'global (kbd "wl") 'evil-window-right) - -(evil-define-key '(normal visual) 'global (kbd "C-c d") 'duplicate-line) -#+end_src - -I want to bind =SPC g s= to magit status, just how it is in spacemacs. -#+begin_src emacs-lisp -(evil-define-key 'normal 'global (kbd "gs") 'magit-status) -(evil-define-key 'normal 'global (kbd "gB") 'magit-blame) -;; (evil-define-key 'normal 'global (kbd "gd") 'magit-diff) +(leader-def + "wj" 'evil-window-down + "wk" 'evil-window-up + "wh" 'evil-window-left + "wl" 'evil-window-right + ) #+end_src These bindings are somewhat different from spacemacs, which parents the insertion key binds under the major-mode prefix =m=. With =TAB= I can cycle headings in org, and with =,,= I can exit the special source block editor. #+begin_src emacs-lisp -(evil-define-key 'normal org-mode-map - (kbd "TAB") 'org-cycle - (kbd "RET") 'org-open-at-point - (kbd ",,") 'org-edit-src-exit - (kbd "ih") 'org-insert-heading - (kbd "is") 'org-insert-subheading - (kbd "ii") 'org-insert-item - (kbd "ib") 'org-insert-structure-template) - -(evil-define-key '(normal visual) 'org-mode-map - (kbd "il") 'org-insert-link) -#+end_src - -Unassociated key-bindings: -#+begin_src emacs-lisp -;; for exiting out of magit’s commit editor with ,, instead of C-c C-c -(evil-define-key 'normal ’global (kbd ",,") 'with-editor-finish) -(evil-define-key 'normal 'global (kbd "gb") 'xref-go-back) -(evil-define-key 'normal 'global (kbd "gf") 'xref-go-forward) +(leader-other-def + :keymaps 'org-mode-map + "ih" 'org-insert-heading + "is" 'org-insert-subheading + "ii" 'org-insert-item + "ib" 'org-insert-structure-template + ) +(general-def 'normal 'org-src-mode-map ",," 'org-edit-src-exit) +(general-def 'normal + :keymaps 'org-mode-map + "TAB" 'org-cycle + "RET" 'org-open-at-point) +(general-def '(normal visual) + :prefix nemo/leader-evil + :non-normal-prefix nemo/leader-global + :keymaps 'org-mode-map + "il" 'org-insert-link) #+end_src Close =:config=. @@ -601,11 +635,12 @@ Close =:config=. #+end_src #+begin_src emacs-lisp - (use-package evil-collection - :after evil - :straight t - :config - (evil-collection-init)) +(use-package evil-collection + :after evil + :straight t + :init (setq evil-collection-key-blacklist '("C-c ")) + :config + (evil-collection-init)) #+end_src ** =undo-fu= @@ -689,7 +724,7 @@ Also use =undo-fu=, which evil can use. :bind (("M-$" . jinx-correct) ("C-M-$" . jinx-languages)) :config - (evil-define-key 'normal 'global (kbd "Ss") 'jinx-correct) + (leader-def "Ss" 'jinx-correct) (setq jinx-languages "en_GB dk_DK de_DE")) #+end_src @@ -718,11 +753,16 @@ PDF tools for latex previewing: :config (pdf-loader-install) (setq-default pdf-view-display-size 'fit-height) - (setq pdf-view-continuous nil) + (setq pdf-view-continuous t) (setq +latex-viewers '(pdf-tools)) - (evil-define-key 'motion 'pdf-view-mode - "j" 'pdf-view-next-page - "k" 'pdf-view-previous-page)) + (leader-other-def + :keymaps 'pdf-view-mode-map + "gb" 'pdf-history-backward + "gf" 'pdf-history-forward) + (general-def :keymaps 'pdf-view-mode-map + "j" (lambda() (interactive) (pdf-view-scroll-up-or-next-page 20)) + "k" (lambda() (interactive) (pdf-view-scroll-down-or-previous-page 20))) + ) #+end_src ** Org @@ -1479,7 +1519,7 @@ Shortcut for opening this file: Dotfiles with =magit=: #+begin_src emacs-lisp -(defun magit-dotfiles () +(defun nemo/magit-dotfiles () "View Dotfiles repository with magit" (interactive) (require 'magit) @@ -1509,7 +1549,12 @@ Open the current file with a =sudo= tramp: (tramp-file-name-localname vec))) (concat "/sudo:root@localhost:" (buffer-file-name)))) (goto-char position))) -(evil-define-key 'normal 'global (kbd "fe") 'sudo-edit-current-file) +(leader-def "fe" 'sudo-edit-current-file) + +(defun nemo/switch-to-last-buffer () + (interactive) + (switch-to-buffer nil) + ) #+end_src * Keybinds