init-kbd.el (14236B)
1 ;;; init-kbd.el --- keybindings -*- lexical-binding: t -*- 2 3 ;;; Commentary: 4 5 ;;; Code: 6 7 ;;; global map 8 (general-def 9 10 ;; god-mode 11 "M-i" #'god-mode-all 12 13 ;; buffer, file, and window 14 "<f2>" #'my-open-init-file 15 "<mouse-4>" #'previous-buffer 16 "<mouse-5>" #'next-buffer 17 "M-[" #'previous-buffer 18 "M-]" #'next-buffer 19 "C-x 4 b" #'consult-buffer-other-window 20 "C-x C-b" #'ibuffer-other-window 21 "C-x b" #'consult-buffer 22 "C-x C-1" #'delete-other-windows 23 "C-x C-2" #'split-window-below 24 "C-x C-3" #'split-window-right 25 "C-x C-0" #'delete-window 26 27 ;; edit 28 [remap open-line] #'my-electric-open-line-and-indent 29 "M-j" #'join-line 30 "M-c" #'capitalize-dwim 31 "M-u" #'upcase-dwim 32 "M-l" #'downcase-dwim 33 "C-," #'my-duplicate-current-line-or-region 34 "C-<backspace>" #'my-kill-line-backwards 35 "M-y" #'consult-yank-from-kill-ring 36 "C-c <backspace>" #'hungry-delete-backward 37 "C-c C-<backspace>" #'hungry-delete-forward 38 "M-P" #'drag-stuff-up 39 "M-N" #'drag-stuff-down 40 "M-F" #'drag-stuff-right 41 "M-B" #'drag-stuff-left 42 "C-c e" #'my-hui-er/expand 43 "M-z" #'avy-zap-to-char-dwim 44 "M-Z" #'avy-zap-up-to-char-dwim 45 "C-<" #'kmacro-x-mc-mark-previous 46 "C->" #'kmacro-x-mc-mark-next 47 "C-M-<" #'kmacro-x-mc-unmark-previous 48 "C-M->" #'kmacro-x-mc-unmark-next 49 "C-S-<mouse-1>" #'kmacro-x-mc-mark-at-click 50 [remap undo] #'undo-only 51 "C-x u" #'vundo 52 53 ;; navigate 54 "M-p" #'backward-paragraph 55 "M-n" #'forward-paragraph 56 "<mouse-2>" #'xref-find-definitions-at-mouse 57 "C-M-;" #'avy-goto-char 58 "C-M-'" #'avy-goto-word-1 59 "M-g M-g" #'avy-goto-line 60 "M-g g" #'consult-goto-line 61 "C-c s" #'consult-line 62 "C-c S" #'consult-line-multi 63 "M-g i" #'consult-imenu 64 "M-g I" #'consult-imenu-multi 65 "M-g M-i" #'consult-imenu 66 "C-x r b" #'consult-bookmark 67 68 ;; window 69 "M-`" #'popper-toggle 70 "C-M--" #'popper-toggle-type 71 "C-M-=" #'my-popper-toggle-type-delete-other-window 72 "M-o" #'other-window 73 "M-O" #'other-window-backward 74 75 ;; org 76 "C-c a" #'org-agenda 77 "C-c l" #'org-store-link 78 "C-c M-l" #'my-insert-raw-org-link 79 80 ;; other 81 "C-h h" #'hyperbole 82 "C-c /" #'hui-search-web 83 "C-c \\" #'hycontrol-enable-windows-mode 84 "M-RET" #'my-hkey-either-lazy 85 "C-;" #'embark-act 86 "M-s M-b" #'eww-list-bookmarks 87 "<f1>" #'eldoc-mouse-pop-doc-at-cursor 88 "<f8>" #'emms-pause 89 "<f7>" #'emms-previous 90 "<f9>" #'emms-next 91 "M-<f3>" #'profiler-start 92 "M-<f4>" #'profiler-stop 93 "C-x C-=" #'cnfonts-increase-fontsize 94 "C-x C--" #'cnfonts-decrease-fontsize 95 [remap count-words-region] #'my-count-words-region 96 [remap eval-expression] #'pp-eval-expression 97 [remap ispell-word] #'jinx-correct 98 [remap describe-function] #'helpful-callable 99 [remap describe-command] #'helpful-command 100 [remap describe-variable] #'helpful-variable 101 [remap describe-key] #'helpful-key 102 [remap describe-symbol] #'helpful-symbol) 103 104 105 ;;; other keymaps 106 107 ;; calendar 108 (general-def calendar-mode-map 109 "RET" #'denote-journal-calendar-find-file) 110 111 ;; completion 112 (general-def completion-list-mode-map 113 "M-n" #'minibuffer-next-completion 114 "M-p" #'minibuffer-previous-completion) 115 116 ;; corfu 117 (general-def corfu-map 118 "M-d" #'corfu-popupinfo-documentation 119 "RET" nil) 120 121 ;; diff 122 (general-def diff-mode-map 123 "M-o" #'other-window 124 "M-m" #'my-back-to-indentation 125 "C-w" #'diff-kill-ring-save) 126 127 ;; dired 128 (general-def (dired-mode-map dirvish-mode-map) 129 "TAB" #'dirvish-subtree-toggle 130 "C-<tab>" #'dirvish-subtree-remove 131 "s" #'dirvish-quicksort 132 "h" #'dirvish-history-menu 133 "M-," #'scroll-other-window-down 134 "M-." #'scroll-other-window 135 "C-c m a" #'emms-add-dired 136 "b" #'dired-up-directory 137 "C-b" #'backward-char 138 "C-f" #'forward-char 139 "K" #'dired-kill-line 140 "<right>" #'dired-find-file 141 "<left>" #'dired-up-directory 142 "C-/" #'dired-undo 143 "<SPC>" #'my-dirvish-layout-toggle 144 "C-c C-r" #'dired-rsync 145 "=" #'ediff) 146 (general-def (dired-mode-map dirvish-mode-map) 147 :prefix "C-c d" 148 "u" #'dirvish-setup-menu 149 "r" #'dirvish-renaming-menu 150 "v" #'dirvish-vc-menu 151 "m" #'dirvish-mark-menu 152 "i" #'dirvish-file-info-menu 153 "y" #'dirvish-yank-menu) 154 155 ;; discomfort 156 (general-def discomfort-mode-map 157 "p" #'previous-line 158 "P" #'discomfort-poweroff) 159 160 ;; eglot 161 (general-def eglot-mode-map 162 "C-c f e" #'consult-eglot-symbols) 163 164 ;; elfeed 165 (general-def elfeed-search-mode-map 166 "v" #'my-elfeed-search-preview-other-window 167 "TAB" #'my-elfeed-search-preview-other-window) 168 169 ;; elisp 170 (general-def (emacs-lisp-mode-map lisp-interaction-mode-map) 171 "C-c C-l C-l" #'my-elisp-load-this-file 172 "C-c C-l C-j" #'my-elisp-eval-and-print-last-sexp 173 "C-c C-l C-p" #'my-elisp-pp-macroexpand-last-sexp 174 "C-c C-l C-e" #'pp-eval-last-sexp 175 "C-c C-l C-h" #'my-elisp-headerise 176 "C-c C-z" #'my-switch-to-ielm) 177 (general-def lisp-interaction-mode-map 178 "C-j" #'my-elisp-eval-and-print-last-sexp) 179 180 ;; embark 181 (general-def embark-file-map 182 "d" #'consult-directory-externally 183 "p" #'emms-play-dired) 184 (general-def embark-org-link-map 185 "j" #'my-embark-denote-dired-jump 186 "b" #'my-embark-denote-find-backlink-with-location) 187 (general-def embark-general-map 188 "j" #'embark-dired-jump) 189 190 ;; emms 191 (general-def emms-playlist-mode-map 192 "<prior>" #'emms-previous 193 "<next>" #'emms-next 194 "C-c C-s" #'emms-history-save 195 "SPC" #'emms-pause 196 "<left>" #'emms-seek-backward 197 "<right>" #'emms-seek-forward) 198 199 ;; eshell 200 (general-def eshell-mode-map 201 "C-c h" #'my-eshell-input-from-history) 202 203 ;; eww 204 (general-def eww-mode-map 205 "M-n" #'forward-paragraph 206 "M-p" #'backward-paragraph 207 "p" #'previous-line 208 "n" #'next-line 209 "P" #'eww-previous-url 210 "N" #'eww-next-url 211 "C-c C-p" #'outline-previous-heading 212 "C-c C-n" #'outline-next-heading 213 "C-c C-u" #'outline-up-heading) 214 (general-def eww-bookmark-mode-map 215 "p" #'previous-line 216 "n" #'next-line) 217 218 ;; flycheck 219 (general-def flycheck-command-map 220 "g" #'flycheck-annotate-mode 221 "a" #'eglot-code-actions) 222 223 ;; ghostel 224 (general-def (ghostel-mode-map 225 ghostel-semi-char-mode-map 226 ghostel-line-mode-map) 227 "M-]" nil 228 "C-q" #'ghostel-send-next-key 229 "C-c C-p" #'ghostel-previous-prompt 230 "C-c C-n" #'ghostel-next-prompt 231 "C-c M-p" #'ghostel-previous-hyperlink 232 "C-c M-n" #'ghostel-next-hyperlink) 233 (general-def ghostel-char-mode-map 234 "M-]" nil 235 "C-M-SPC" #'ghostel--send-event) 236 (general-def ghostel-semi-char-mode-map 237 "M-o" nil 238 "C-c h" #'consult-ghostel-history 239 "C-k" #'my-ghostel-send-C-k-and-kill 240 "C-M-SPC" #'ghostel--send-event) 241 242 ;; god-mode 243 (general-def god-local-mode-map 244 "i" #'god-mode-all 245 "[" #'backward-paragraph 246 "]" #'forward-paragraph 247 "." #'repeat 248 "y" #'yank 249 "C-c C-<f12>" #'my-persp-scratch-buffer 250 "z" #'avy-goto-char 251 "'" #'avy-goto-word-1 252 "<f1>" nil "<f2>" nil "<f3>" nil "<f4>" nil "<f5>" nil "<f6>" nil 253 "<f7>" nil "<f8>" nil "<f9>" nil "<f10>" nil "<f11>" nil "<f12>" nil) 254 255 ;; gptel 256 (general-def gptel-mode-map 257 "C-c C-s" #'my-gptel-save-session 258 "C-c C-k" #'gptel-abort) 259 260 ;; help 261 (general-def (help-mode-map helpful-mode-map) 262 "s" #'my-helpful-view-source 263 "p" #'previous-line 264 "n" #'next-line 265 "R" #'remove-hook-at-point) 266 267 ;; hs-hide-mode 268 (general-def hs-minor-mode-map 269 "C-c h" #'hs-toggle-hiding 270 "C-c H" #'hs-toggle-all) 271 272 ;; ibuffer 273 (general-def ibuffer-mode-map 274 "h k" #'my-persp-remove-marked-ibuffers 275 "h A" #'my-persp-set-marked-ibuffers 276 "h a" #'my-persp-add-marked-ibuffers 277 "M-o" #'other-window) 278 279 ;; ielm 280 (general-def ielm-map "C-c C-z" #'my-repl-switch-back) 281 282 ;; info 283 (general-def Info-mode-map 284 "M-n" #'forward-paragraph) 285 286 ;; magit 287 (general-def (magit-mode-map tokei-mode-map) 288 "C-<tab>" #'my-magit-toggle-parent-section) 289 290 ;; markdown 291 (general-def markdown-mode-map 292 "M-p" nil 293 "M-n" nil 294 "C-<tab>" #'markdown-cycle-parent-subtree 295 "C-c C-e" #'markdown-do) 296 297 ;; minibuffer 298 (general-def minibuffer-local-map 299 "C-c C-e" #'embark-export) 300 301 ;; olivetti 302 (general-def olivetti-mode-map 303 "C-c \\" nil) 304 305 ;; org-agenda 306 (general-def org-agenda-mode-map 307 "C-/" #'org-agenda-undo) 308 (general-def org-ql-view-map 309 "q" #'org-agenda-quit) 310 311 ;; org-mode 312 (general-def org-mode-map 313 "C-<tab>" #'org-cycle-parent-subtree 314 "M-g i" #'consult-outline 315 "M-g M-i" #'consult-outline 316 "C-c t l" #'org-toggle-link-display 317 "M-{" #'backward-paragraph 318 "M-}" #'forward-paragraph 319 "C-," #'my-duplicate-current-line-or-region 320 "C-c o l" #'denote-link-or-create 321 "C-c o L" #'denote-org-link-to-heading 322 "C-c o B" #'my-denote-org-find-backlink-for-heading-with-location 323 "C-c o t" #'my-org-tree-slide-start 324 "C-c \\" nil) 325 326 ;; org-tree-slide-mode 327 (general-def org-tree-slide-mode-map 328 "<left>" #'org-tree-slide-move-previous-tree 329 "<right>" #'org-tree-slide-move-next-tree 330 "C-c o t" #'my-org-tree-slide-stop 331 "q" #'my-org-tree-slide-stop 332 "M-v" #'scroll-down-command) 333 334 ;; perspective 335 (general-def persp-mode-map 336 "C-c p c" nil 337 "C-c p d" #'persp-kill 338 "C-x C-b" #'my-persp-ibuffer) 339 340 ;; pilish 341 (general-def (pilish-input-mode-map 342 pilish-chat-mode-map) 343 "C-c C-q" #'pilish-quit 344 "C-c TAB" #'pilish-open-input 345 "C-c C-t" #'pilish-tree-browser) 346 347 ;; shell 348 (general-def shell-mode-map 349 "C-c h" #'my-shell-input-from-history) 350 351 ;; sly 352 (general-def (sly-mode-map sly-editing-mode-map) 353 "M-p" #'backward-paragraph 354 "M-n" #'forward-paragraph) 355 (general-def sly-mrepl-mode-map 356 "M-p" #'sly-mrepl-previous-input-or-button 357 "M-n" #'sly-mrepl-next-input-or-button) 358 (general-def sly-prefix-map 359 "M-p" #'sly-pprint-eval-last-expression 360 "C-p" #'sly-previous-note 361 "C-n" #'sly-next-note) 362 363 ;; speedbar 364 (general-def speedbar-mode-map 365 "^" #'speedbar-up-directory 366 "<tab>" #'my-speedbar-tab) 367 368 ;; vc 369 (general-def vc-annotate-mode-map 370 "t" #'consult-vc-annotate-revision 371 "=" #'my-vc-annotate-diff-current-revision 372 "d" #'my-vc-annotate-diff-current-revision 373 "D" #'vc-annotate-show-diff-revision-at-line 374 "l" #'my-vc-print-log-current-revision 375 "L" #'vc-annotate-show-log-revision-at-line 376 "M-n" #'vc-annotate-next-revision 377 "M-p" #'vc-annotate-prev-revision 378 "n" #'next-line 379 "p" #'previous-line) 380 381 382 ;;; with prefix 383 384 ;; c for completion at point 385 (general-def 386 :prefix "C-c c" 387 "t" #'cape-tex 388 "e" #'cape-emoji 389 "d" #'cape-dict 390 "/" #'cape-dabbrev 391 "f" #'cape-file 392 "u" #'cape-rfc1345 393 "a" #'cape-abbrev 394 "l" #'cape-elisp-symbol) 395 396 ;; d for dired 397 (general-def 398 :prefix "C-c d" 399 "a" #'dirvish-quick-access 400 "s" #'my-speedbar 401 "h" #'dirvish-history-menu 402 "f" #'dirvish-fd 403 "F" #'dirvish-fd-switches-menu 404 "t" #'trashed 405 "d" #'discomfort) 406 407 ;; f for find and consult command 408 (general-def 409 :prefix "C-c f" 410 "r" #'consult-recent-file 411 "f" #'consult-find 412 "g" #'consult-grep 413 "G" #'consult-git-grep 414 "!" #'consult-flycheck 415 "e" #'consult-symbol 416 "l" #'consult-locate 417 "h" #'my-consult-fd-home 418 "m" #'consult-man 419 "d" #'my-open-current-directory 420 "J" #'consult-register 421 "j" #'consult-jinx 422 "k" #'consult-kmacro 423 "o" #'consult-outline 424 "i" #'consult-info 425 "s" #'consult-focus-lines 426 "t" #'consult-ghostel 427 "a" #'hsys-consult-apropos 428 "L" #'find-library) 429 430 ;; g for gptel 431 (general-def 432 :prefix "C-c g" 433 "g" #'gptel 434 "m" #'gptel-menu 435 "s" #'gptel-send 436 "a" #'gptel-agent 437 "t" #'gptel-tools 438 "p" #'pilish) 439 440 ;; j for journal 441 (general-def 442 :prefix "C-c j" 443 "o" #'my-denote-journal-open-entry 444 "n" #'denote-journal-new-or-existing-entry 445 "f" #'my-denote-journal-find-file 446 "g" #'my-consult-denote-journal-grep) 447 448 ;; m for media 449 (general-def 450 :prefix "C-c m" 451 "n" #'emms-next 452 "p" #'emms-previous 453 "f" #'emms-seek-forward 454 "b" #'emms-seek-backward 455 "B" #'emms-browser 456 "s" #'emms-start 457 "q" #'emms-stop 458 "SPC" #'emms-pause 459 "S" #'emms-toggle-single-track 460 "l" #'emms-playlist-mode-switch-buffer 461 "d" #'emms-play-directory) 462 463 ;; o for org 464 (general-def 465 :prefix "C-c o" 466 "f" #'my-denote-find-file 467 "F" #'my-blog-find-file 468 "g" #'my-consult-denote-grep 469 "G" #'my-blog-grep 470 "s" #'my-consult-org-agenda 471 "p" #'my-consult-org-agenda-games 472 "C" #'calendar 473 "c" #'org-capture 474 "n" #'denote 475 "N" #'denote-date 476 "r" #'denote-rename-file-identifier 477 "b" #'my-denote-find-backlink-with-location 478 "R" #'denote-rename-file 479 "q" #'org-ql-search) 480 481 ;; p for project 482 (general-def 483 :prefix "C-x p" 484 "b" #'consult-project-buffer 485 "t" #'ghostel-project 486 "g" #'my-consult-git-grep-project 487 "r" #'project-find-regexp 488 "R" #'project-or-external-find-regexp 489 "q" #'project-query-replace-regexp 490 "v" #'magit-project-status 491 "V" #'project-vc-dir 492 "i" #'project-ibuffer 493 "a" #'my-pilish) 494 495 ;; r for replacement 496 (general-def 497 :prefix "C-c r" 498 "h" #'substitute-target-in-paragraph 499 "p" #'substitute-target-in-page 500 "d" #'substitute-target-in-defun 501 "D" #'substitute-target-in-defun-and-below 502 "b" #'substitute-target-in-buffer 503 "l" #'substitute-target-below-point 504 "u" #'substitute-target-above-point) 505 506 ;; t for modes toggle 507 (general-def 508 :prefix "C-c t" 509 "f" #'flycheck-mode 510 "j" #'jinx-mode 511 "g" #'my-toggle-grammar-checker 512 "h" #'global-diff-hl-mode 513 "k" #'keycast-header-line-mode 514 "v" #'vcursor-use-vcursor-map 515 "e" #'eldoc-mouse-mode) 516 517 ;; u for ui 518 (general-def 519 :prefix "C-c u" 520 "l" #'global-tab-line-mode 521 "d" #'disable-theme 522 "t" #'consult-theme 523 "f" #'describe-face 524 "w" #'global-whitespace-mode 525 "c" #'colorful-mode 526 "p" #'my-pick-color) 527 528 ;; v for version control 529 (general-def 530 :prefix "C-x v" 531 "c" #'magit-clone 532 "i" #'magit-init 533 "l" #'magit-log-buffer-file) 534 535 ;; w for whitespace 536 (general-def 537 :prefix "C-c w" 538 "f" #'fixup-whitespace 539 "r" #'whitespace-report 540 "o" #'global-whitespace-toggle-options 541 "c" #'whitespace-cleanup) 542 543 ;; x for some other command 544 (general-def 545 :prefix "C-c x" 546 "e" #'eshell 547 "t" #'ghostel 548 "s" #'shell 549 "p" #'proced 550 "b" #'benchmark-init/show-durations-tree 551 "B" #'benchmark-init/show-durations-tabulated 552 "f" #'elfeed 553 "k" #'pass 554 "g" #'gt-translate 555 "w" #'my-synosaurus-lookup) 556 557 ;; y for copy paste 558 (general-def 559 :prefix "C-c y" 560 "d" #'my-copy-function-name 561 "b" #'my-copy-buffer-name 562 "f" #'my-copy-file-path) 563 564 565 ;;; other 566 567 (if *is-mac* 568 (general-def 569 "C-c <f12>" #'my-persp-scratch-buffer 570 "s-SPC" #'launcher) 571 (general-def 572 "C-c <delete>" #'my-persp-scratch-buffer 573 "s-SPC" #'xdg-launcher-run-app)) 574 575 (when *is-emacs-mac-port* 576 (general-def 577 "M-<f11>" #'mac-toggle-frame-fullscreen 578 "<f12>" #'mac-toggle-frame-fullscreen)) 579 580 (provide 'init-kbd) 581 ;;; init-kbd.el ends here