| 1 | ;;; init-evil.el -*- lexical-binding: t; -*- |
| 2 | |
| 3 | (use-package evil |
| 4 | :init |
| 5 | (setq evil-want-integration t |
| 6 | evil-want-keybinding nil ; evil-collection handles other modes |
| 7 | evil-want-C-u-scroll t |
| 8 | evil-want-Y-yank-to-eol t |
| 9 | evil-undo-system 'undo-redo |
| 10 | evil-split-window-below t |
| 11 | evil-vsplit-window-right t |
| 12 | evil-ex-hl-update-delay 0.01) |
| 13 | :config |
| 14 | (evil-mode 1)) |
| 15 | |
| 16 | (use-package evil-collection |
| 17 | :after evil |
| 18 | :config |
| 19 | (evil-collection-init)) |
| 20 | |
| 21 | (use-package general |
| 22 | :after evil |
| 23 | :config |
| 24 | (general-create-definer my/leader |
| 25 | :states '(normal visual motion insert emacs) |
| 26 | :keymaps 'override |
| 27 | :prefix "SPC" |
| 28 | :global-prefix "M-SPC") |
| 29 | |
| 30 | (my/leader |
| 31 | "SPC" '(project-find-file :wk "project file") |
| 32 | ":" '(execute-extended-command :wk "M-x") |
| 33 | "." '(find-file :wk "find file") |
| 34 | "," '(switch-to-buffer :wk "switch buffer") |
| 35 | "/" '(project-find-regexp :wk "project grep") |
| 36 | |
| 37 | "X" '(org-capture :wk "org capture") |
| 38 | |
| 39 | "b" '(:ignore t :wk "buffer") |
| 40 | "bb" '(switch-to-buffer :wk "switch") |
| 41 | "bi" '(ibuffer :wk "ibuffer") |
| 42 | "bd" '(kill-current-buffer :wk "kill") |
| 43 | "bn" '(next-buffer :wk "next") |
| 44 | "bp" '(previous-buffer :wk "previous") |
| 45 | "bs" '(save-buffer :wk "save") |
| 46 | |
| 47 | "f" '(:ignore t :wk "file") |
| 48 | "ff" '(find-file :wk "find") |
| 49 | "fr" '(recentf-open :wk "recent") |
| 50 | "fs" '(save-buffer :wk "save") |
| 51 | "fd" '(dired-jump :wk "dired") |
| 52 | |
| 53 | "g" '(:ignore t :wk "git") |
| 54 | "gg" '(magit-status :wk "status") |
| 55 | "gb" '(magit-blame :wk "blame") |
| 56 | "gl" '(magit-log-current :wk "log") |
| 57 | |
| 58 | "o" '(:ignore t :wk "open") |
| 59 | "ow" '(eww :wk "eww") |
| 60 | "oe" '(elfeed :wk "elfeed") |
| 61 | "oi" '(my/erc-soju :wk "irc") |
| 62 | "oj" '(jabber-roster :wk "jabber") |
| 63 | "om" '(mu4e :wk "mail") |
| 64 | "ot" '(ghostel :wk "terminal") |
| 65 | "oT" '(ghostel-project :wk "project terminal") |
| 66 | "os" '(eshell :wk "eshell") |
| 67 | |
| 68 | "ll" '(gptel :wk "gptel") |
| 69 | "la" '(gptel-add :wk "add context") |
| 70 | "lr" '(gptel-context-remove-all :wk "remove context") |
| 71 | "lm" '(gptel-menu :wk "menu") |
| 72 | "ls" '(gptel-send :wk "send") |
| 73 | |
| 74 | "u" '(:ignore t :wk "upload") |
| 75 | "uu" '(uguu-upload-file :wk "upload file") |
| 76 | "uc" '(uguu-upload-clipboard :wk "upload clipboard") |
| 77 | |
| 78 | "P" '(posts-compose :wk "new post") |
| 79 | |
| 80 | "p" '(:ignore t :wk "project") |
| 81 | "pp" '(project-switch-project :wk "switch") |
| 82 | "pf" '(project-find-file :wk "find file") |
| 83 | "pg" '(project-find-regexp :wk "grep") |
| 84 | "pb" '(project-switch-to-buffer :wk "buffer") |
| 85 | |
| 86 | "s" '(:ignore t :wk "search") |
| 87 | "ss" '(isearch-forward :wk "isearch") |
| 88 | "so" '(occur :wk "occur") |
| 89 | |
| 90 | "w" '(:ignore t :wk "window") |
| 91 | "ww" '(other-window :wk "other") |
| 92 | "wv" '(evil-window-vsplit :wk "vsplit") |
| 93 | "ws" '(evil-window-split :wk "split") |
| 94 | "wd" '(delete-window :wk "close") |
| 95 | "wo" '(delete-other-windows :wk "only") |
| 96 | "wh" '(evil-window-left :wk "left") |
| 97 | "wj" '(evil-window-down :wk "down") |
| 98 | "wk" '(evil-window-up :wk "up") |
| 99 | "wl" '(evil-window-right :wk "right") |
| 100 | "w=" '(balance-windows :wk "balance") |
| 101 | |
| 102 | "h" '(:ignore t :wk "help") |
| 103 | "hf" '(describe-function :wk "function") |
| 104 | "hv" '(describe-variable :wk "variable") |
| 105 | "hk" '(describe-key :wk "key") |
| 106 | "hm" '(describe-mode :wk "mode") |
| 107 | |
| 108 | "q" '(:ignore t :wk "quit") |
| 109 | "qq" '(save-buffers-kill-terminal :wk "quit emacs"))) |
| 110 | |
| 111 | (provide 'init-evil) |