.emacs.d

the most bloated Emacs config on this planet
git clone https://git.trogloxene.org/.emacs.d.git
Log | Files | Refs

commit 6dccc6653478caca1389cb9b9b6e21c3d4a29891
parent 5bd8dd24cd6e9490bbe46bac898661484af15573
Author: andsy10 <andsy1016@gmail.com>
Date:   Sun, 27 Sep 2026 19:22:08 +0800

Reorganize keybindings

Diffstat:
Mlisp/init-kbd.el | 669+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mlisp/init-window.el | 2++
2 files changed, 335 insertions(+), 336 deletions(-)

diff --git a/lisp/init-kbd.el b/lisp/init-kbd.el @@ -4,197 +4,96 @@ ;;; Code: -;; god-mode -(general-def god-local-mode-map - "i" #'god-mode-all - "[" #'backward-paragraph - "]" #'forward-paragraph - "." #'repeat - "y" #'yank - "C-c C-<f12>" #'my-scratch-buffer - "z" #'avy-goto-char - "'" #'avy-goto-word-1 - "<f2>" #'open-init-file) - -;; g for gptel -(general-def - :prefix "C-c g" - "g" #'gptel - "m" #'gptel-menu - "s" #'gptel-send - "a" #'gptel-agent - "t" #'gptel-tools - "p" #'pilish) - -(general-def gptel-mode-map - "C-c C-s" #'my-gptel-save-session - "C-c C-k" #'gptel-abort) - -;; pilish -(general-def (pilish-input-mode-map - pilish-chat-mode-map) - "C-c C-q" #'pilish-quit - "C-c TAB" #'pilish-open-input - "C-c C-t" #'pilish-tree-browser) - -;; elfeed -(general-def elfeed-search-mode-map - "v" #'my-elfeed-search-preview-other-window - "TAB" #'my-elfeed-search-preview-other-window) - -;; u for ui -(general-def - :prefix "C-c u" - "l" #'global-tab-line-mode - "d" #'disable-theme - "t" #'consult-theme - "f" #'describe-face - "k" #'keycast-header-line-mode - "w" #'global-whitespace-mode - "c" #'colorful-mode - "p" #'my-pick-color) - -;; w for whitespace -(general-def - :prefix "C-c w" - "f" #'fixup-whitespace - "r" #'whitespace-report - "o" #'global-whitespace-toggle-options - "c" #'whitespace-cleanup) - -;; f for find and consult command +;;; global map (general-def - :prefix "C-c f" - "r" #'consult-recent-file - "f" #'consult-find - "g" #'consult-grep - "G" #'consult-git-grep - "e" #'consult-flycheck - "l" #'consult-locate - "h" #'consult-fd-home - "m" #'consult-man - "d" #'my-open-current-directory - "J" #'consult-register - "j" #'consult-jinx - "k" #'consult-kmacro - "o" #'consult-outline - "i" #'consult-info - "s" #'consult-focus-lines - "t" #'consult-ghostel) -;; p for project -(general-def - :prefix "C-x p" - "b" #'consult-project-buffer - "t" #'ghostel-project - "g" #'my-consult-git-grep-project - "r" #'project-find-regexp - "R" #'project-or-external-find-regexp - "q" #'project-query-replace-regexp - "v" #'magit-project-status - "V" #'project-vc-dir - "i" #'project-ibuffer - "a" #'my-pilish) + ;; god-mode + "M-i" #'god-mode-all -;; v for version control -(general-def - :prefix "C-x v" - "c" #'magit-clone - "i" #'magit-init - "l" #'magit-log-buffer-file) + ;; buffer, file, and window + "<f2>" #'open-init-file + "<mouse-4>" #'previous-buffer + "<mouse-5>" #'next-buffer + "M-[" #'previous-buffer + "M-]" #'next-buffer + "C-x 4 b" #'consult-buffer-other-window + "C-x C-b" #'ibuffer-other-window + "C-x b" #'consult-buffer + "C-x C-1" #'delete-other-windows + "C-x C-2" #'split-window-below + "C-x C-3" #'split-window-right + "C-x C-0" #'delete-window -;; t for modes toggle -(general-def - :prefix "C-c t" - "f" #'flycheck-mode - "j" #'jinx-mode - "g" #'gptel-mode - "h" #'global-diff-hl-mode) + ;; edit + "M-c" #'capitalize-dwim + "M-u" #'upcase-dwim + "M-l" #'downcase-dwim + "C-," #'my-duplicate-current-line-or-region + "C-<backspace>" #'my-kill-line-backwards + "M-y" #'consult-yank-from-kill-ring + "C-c <backspace>" #'hungry-delete-backward + "C-c C-<backspace>" #'hungry-delete-forward + "M-P" #'drag-stuff-up + "M-N" #'drag-stuff-down + "M-F" #'drag-stuff-right + "M-B" #'drag-stuff-left + "C-M-SPC" #'er/mark-symbol + "M-@" #'er/mark-word + "C-c e" #'er/expand-region + "M-z" #'avy-zap-to-char-dwim + "M-Z" #'avy-zap-up-to-char-dwim -;; o for org-mode -(general-def - :prefix "C-c o" - "f" #'my-denote-find-file - "F" #'my-blog-find-file - "g" #'consult-denote-grep - "G" #'my-blog-grep - "s" #'consult-org-agenda - "C" #'calendar - "c" #'org-capture - "d" #'denote - "D" #'denote-date - "r" #'denote-rename-file-date - "b" #'my-denote-find-backlink-with-location - "R" #'denote-rename-file - "m" #'my-denote-open-metanote - "q" #'org-ql-search) + ;; undo + "C-/" #'undo-fu-only-undo + "C-?" #'undo-fu-only-redo + "C-x u" #'vundo -(general-def - "C-c a" 'org-agenda - "C-c l" #'org-store-link) + ;; navigate + "M-p" #'backward-paragraph + "M-n" #'forward-paragraph + "<mouse-2>" #'xref-find-definitions-at-mouse + "C-M-;" #'avy-goto-char + "C-M-'" #'avy-goto-word-1 + "M-g g" #'avy-goto-line + "C-c s" #'consult-line + "M-g M-g" #'consult-goto-line + "M-g i" #'consult-imenu + "M-g I" #'consult-imenu-multi + "M-g M-i" #'consult-imenu -;; j for journal -(general-def - :prefix "C-c j" - "o" #'my-denote-journal-open-entry - "n" #'denote-journal-new-or-existing-entry - "f" #'my-denote-journal-find-file) + ;; window + "C-M-<left>" #'shrink-window-horizontally + "C-M-<right>" #'enlarge-window-horizontally + "C-M-<down>" #'shrink-window + "C-M-<up>" #'enlarge-window + "M-`" #'popper-toggle + "C-M-=" #'my-popper-toggle-type-delete-other-window + "M-o" #'other-window + "M-O" #'other-window-backward -;; m for media -(general-def - :prefix "C-c m" - "n" #'emms-next - "p" #'emms-previous - "f" #'emms-seek-forward - "b" #'emms-seek-backward - "B" #'emms-browser - "s" #'emms-start - "q" #'emms-stop - "SPC" #'emms-pause - "S" #'emms-toggle-single-track - "l" #'emms-playlist-mode-switch-buffer - "d" #'emms-play-directory) + ;; other + "C-x r b" #'consult-bookmark + "C-;" #'embark-act + "M-s M-b" #'eww-list-bookmarks + "<f8>" #'emms-pause + "<f7>" #'emms-previous + "<f9>" #'emms-next) -;; d for dired -(general-def - :prefix "C-c d" - "a" #'dirvish-quick-access - "s" #'my-speedbar - "h" #'dirvish-history-menu - "f" #'dirvish-fd - "F" #'dirvish-fd-switches-menu - "t" #'trashed - "d" #'discomfort) + +;;; other keymaps -;; x for some other command -(general-def - :prefix "C-c x" - "e" #'eshell - "t" #'ghostel - "p" #'proced - "b" #'benchmark-init/show-durations-tree - "B" #'benchmark-init/show-durations-tabulated - "S" #'syncthing - "f" #'elfeed - "k" #'pass - "g" #'gt-translate - "s" #'my-synosaurus-lookup) +;; calendar +(general-def calendar-mode-map + "RET" #'denote-journal-calendar-find-file) -;; r for replacement -(general-def - :prefix "C-c r" - "h" #'substitute-target-in-paragraph - "p" #'substitute-target-in-page - "d" #'substitute-target-in-defun - "D" #'substitute-target-in-defun-and-below - "b" #'substitute-target-in-buffer - "l" #'substitute-target-below-point - "u" #'substitute-target-above-point) +;; completion +(general-def completion-list-mode-map + "M-n" #'minibuffer-next-completion + "M-p" #'minibuffer-previous-completion) -;; scratch buffer -(if *is-mac* - (general-def "C-c <f12>" #'my-scratch-buffer) - (general-def "C-c <delete>" #'my-scratch-buffer)) +;; diff +(general-def diff-mode-map + "M-o" #'other-window) ;; dired (general-def (dired-mode-map dirvish-mode-map) @@ -215,7 +114,6 @@ "<SPC>" #'my-dirvish-layout-toggle "C-c C-r" #'dired-rsync "e" #'ediff) - (general-def (dired-mode-map dirvish-mode-map) :prefix "C-c d" "u" #'dirvish-setup-menu @@ -225,37 +123,38 @@ "i" #'dirvish-file-info-menu "y" #'dirvish-yank-menu) -;; speedbar -(general-def speedbar-mode-map - "^" #'speedbar-up-directory - "<tab>" #'my-speedbar-tab) - -;; magit -(general-def (magit-mode-map tokei-mode-map) - "C-<tab>" #'my-magit-toggle-parent-section) +;; discomfort +(general-def discomfort-mode-map + "p" #'previous-line + "P" #'discomfort-poweroff) -;; vc -(general-def vc-annotate-mode-map - "t" #'consult-vc-annotate-revision - "=" #'my-vc-annotate-diff-current-revision - "d" #'my-vc-annotate-diff-current-revision - "D" #'vc-annotate-show-diff-revision-at-line - "l" #'my-vc-print-log-current-revision - "L" #'vc-annotate-show-log-revision-at-line) +;; elfeed +(general-def elfeed-search-mode-map + "v" #'my-elfeed-search-preview-other-window + "TAB" #'my-elfeed-search-preview-other-window) -;; sly -(general-def (sly-mode-map sly-editing-mode-map) - "M-p" #'backward-paragraph - "M-n" #'forward-paragraph) +;; embark +(general-def embark-file-map + "d" #'consult-directory-externally + "p" #'emms-play-dired) -(general-def sly-prefix-map - "M-p" #'sly-pprint-eval-last-expression - "C-p" #'sly-previous-note - "C-n" #'sly-next-note) +;; emms +(general-def emms-playlist-mode-map + "<prior>" #'emms-previous + "<next>" #'emms-next + "C-c C-s" #'emms-history-save + "SPC" #'emms-pause + "<left>" #'emms-seek-backward + "<right>" #'emms-seek-forward) -(general-def sly-mrepl-mode-map - "M-p" #'sly-mrepl-previous-input-or-button - "M-n" #'sly-mrepl-next-input-or-button) +;; eww +(general-def eww-mode-map + "M-n" #'forward-paragraph + "M-p" #'backward-paragraph + "p" #'shr-previous-link + "n" #'shr-next-link + "P" #'eww-previous-url + "N" #'eww-next-url) ;; ghostel (general-def (ghostel-mode-map @@ -263,29 +162,51 @@ ghostel-line-mode-map) "M-]" nil "C-q" #'ghostel-send-next-key) - (general-def ghostel-char-mode-map "M-]" nil "C-M-SPC" #'ghostel--send-event) - (general-def ghostel-semi-char-mode-map "M-o" nil "C-c h" #'consult-ghostel-history "C-k" #'my-ghostel-send-C-k-and-kill "C-M-SPC" #'ghostel--send-event) -;; embark -(general-def embark-file-map - "d" #'consult-directory-externally - "p" #'emms-play-dired) +;; god-mode +(general-def god-local-mode-map + "i" #'god-mode-all + "[" #'backward-paragraph + "]" #'forward-paragraph + "." #'repeat + "y" #'yank + "C-c C-<f12>" #'my-scratch-buffer + "z" #'avy-goto-char + "'" #'avy-goto-word-1 + "<f2>" #'open-init-file) -(general-def minibuffer-local-map - "C-c C-e" #'embark-export) +;; gptel +(general-def gptel-mode-map + "C-c C-s" #'my-gptel-save-session + "C-c C-k" #'gptel-abort) -;; completion -(general-def completion-list-mode-map - "M-n" #'minibuffer-next-completion - "M-p" #'minibuffer-previous-completion) +;; hs-hide-mode +(general-def hs-minor-mode-map + "C-c h" #'hs-toggle-hiding + "C-c H" #'hs-hide-all + "C-c S" #'hs-show-all) + +;; ibuffer +(general-def ibuffer-mode-map + "h k" #'my-persp-remove-marked-ibuffers + "h A" #'my-persp-set-marked-ibuffers + "h a" #'my-persp-add-marked-ibuffers) + +;; info +(general-def Info-mode-map + "M-n" #'forward-paragraph) + +;; magit +(general-def (magit-mode-map tokei-mode-map) + "C-<tab>" #'my-magit-toggle-parent-section) ;; markdown (general-def markdown-mode-map @@ -293,6 +214,10 @@ "M-n" nil "C-<tab>" #'markdown-cycle-parent-subtree) +;; minibuffer +(general-def minibuffer-local-map + "C-c C-e" #'embark-export) + ;; org-mode (general-def org-mode-map "C-<tab>" #'org-cycle-parent-subtree @@ -315,143 +240,215 @@ "q" #'my-org-tree-slide-stop "M-v" #'scroll-down-command) -;; hs-hide-mode -(general-def hs-minor-mode-map - "C-c h" #'hs-toggle-hiding - "C-c H" #'hs-hide-all - "C-c S" #'hs-show-all) - -;; calendar -(general-def calendar-mode-map - "RET" #'denote-journal-calendar-find-file) - -;; ibuffer -(general-def ibuffer-mode-map - "h k" #'my-persp-remove-marked-ibuffers - "h A" #'my-persp-set-marked-ibuffers - "h a" #'my-persp-add-marked-ibuffers) - -;; emms -(general-def emms-playlist-mode-map - "<prior>" #'emms-previous - "<next>" #'emms-next - "C-c C-s" #'emms-history-save - "SPC" #'emms-pause - "<left>" #'emms-seek-backward - "<right>" #'emms-seek-forward) - ;; perspective (general-def persp-mode-map "C-c p c" nil "C-c p d" #'persp-kill "C-x C-b" #'persp-ibuffer) -;; info -(general-def Info-mode-map +;; pilish +(general-def (pilish-input-mode-map + pilish-chat-mode-map) + "C-c C-q" #'pilish-quit + "C-c TAB" #'pilish-open-input + "C-c C-t" #'pilish-tree-browser) + +;; sly +(general-def (sly-mode-map sly-editing-mode-map) + "M-p" #'backward-paragraph "M-n" #'forward-paragraph) +(general-def sly-mrepl-mode-map + "M-p" #'sly-mrepl-previous-input-or-button + "M-n" #'sly-mrepl-next-input-or-button) +(general-def sly-prefix-map + "M-p" #'sly-pprint-eval-last-expression + "C-p" #'sly-previous-note + "C-n" #'sly-next-note) -;; diff -(general-def diff-mode-map - "M-o" #'other-window) +;; speedbar +(general-def speedbar-mode-map + "^" #'speedbar-up-directory + "<tab>" #'my-speedbar-tab) -;; discomfort -(general-def discomfort-mode-map - "p" #'previous-line - "P" #'discomfort-poweroff) +;; vc +(general-def vc-annotate-mode-map + "t" #'consult-vc-annotate-revision + "=" #'my-vc-annotate-diff-current-revision + "d" #'my-vc-annotate-diff-current-revision + "D" #'vc-annotate-show-diff-revision-at-line + "l" #'my-vc-print-log-current-revision + "L" #'vc-annotate-show-log-revision-at-line) -;; eww -(general-def eww-mode-map - "M-n" #'forward-paragraph - "M-p" #'backward-paragraph - "p" #'shr-previous-link - "n" #'shr-next-link - "P" #'eww-previous-url - "N" #'eww-next-url) + +;;; with prefix -;; global map +;; d for dired (general-def + :prefix "C-c d" + "a" #'dirvish-quick-access + "s" #'my-speedbar + "h" #'dirvish-history-menu + "f" #'dirvish-fd + "F" #'dirvish-fd-switches-menu + "t" #'trashed + "d" #'discomfort) - ;; god-mode - "M-i" #'god-mode-all +;; f for find and consult command +(general-def + :prefix "C-c f" + "r" #'consult-recent-file + "f" #'consult-find + "g" #'consult-grep + "G" #'consult-git-grep + "e" #'consult-flycheck + "l" #'consult-locate + "h" #'consult-fd-home + "m" #'consult-man + "d" #'my-open-current-directory + "J" #'consult-register + "j" #'consult-jinx + "k" #'consult-kmacro + "o" #'consult-outline + "i" #'consult-info + "s" #'consult-focus-lines + "t" #'consult-ghostel) - ;; buffer, file, and window - "<f2>" #'open-init-file - "<mouse-4>" #'previous-buffer - "<mouse-5>" #'next-buffer - "M-[" #'previous-buffer - "M-]" #'next-buffer - "C-x 4 b" #'consult-buffer-other-window - "C-x C-b" #'ibuffer-other-window - "C-x b" #'consult-buffer - "C-x C-1" #'delete-other-windows - "C-x C-2" #'split-window-below - "C-x C-3" #'split-window-right - "C-x C-0" #'delete-window +;; g for gptel +(general-def + :prefix "C-c g" + "g" #'gptel + "m" #'gptel-menu + "s" #'gptel-send + "a" #'gptel-agent + "t" #'gptel-tools + "p" #'pilish) - ;; edit - "M-c" #'capitalize-dwim - "M-u" #'upcase-dwim - "M-l" #'downcase-dwim - "C-," #'my-duplicate-current-line-or-region - "C-<backspace>" #'my-kill-line-backwards - "M-y" #'consult-yank-from-kill-ring - "C-c <backspace>" #'hungry-delete-backward - "C-c C-<backspace>" #'hungry-delete-forward - "M-P" #'drag-stuff-up - "M-N" #'drag-stuff-down - "M-F" #'drag-stuff-right - "M-B" #'drag-stuff-left - "C-M-SPC" #'er/mark-symbol - "M-@" #'er/mark-word - "C-c e" #'er/expand-region - "C-c k" #'comment-kill - "M-z" #'avy-zap-to-char-dwim - "M-Z" #'avy-zap-up-to-char-dwim +;; j for journal +(general-def + :prefix "C-c j" + "o" #'my-denote-journal-open-entry + "n" #'denote-journal-new-or-existing-entry + "f" #'my-denote-journal-find-file) - ;; undo - "C-/" #'undo-fu-only-undo - "C-?" #'undo-fu-only-redo - "C-x u" #'vundo +;; m for media +(general-def + :prefix "C-c m" + "n" #'emms-next + "p" #'emms-previous + "f" #'emms-seek-forward + "b" #'emms-seek-backward + "B" #'emms-browser + "s" #'emms-start + "q" #'emms-stop + "SPC" #'emms-pause + "S" #'emms-toggle-single-track + "l" #'emms-playlist-mode-switch-buffer + "d" #'emms-play-directory) - ;; navigate - "M-p" #'backward-paragraph - "M-n" #'forward-paragraph - "<mouse-2>" #'xref-find-definitions-at-mouse - "C-M-;" #'avy-goto-char - "C-M-'" #'avy-goto-word-1 - "M-g g" #'avy-goto-line - "C-c s" #'consult-line - "M-g M-g" #'consult-goto-line - "M-g i" #'consult-imenu - "M-g I" #'consult-imenu-multi - "M-g M-i" #'consult-imenu +;; o for org +(general-def + :prefix "C-c o" + "f" #'my-denote-find-file + "F" #'my-blog-find-file + "g" #'consult-denote-grep + "G" #'my-blog-grep + "s" #'consult-org-agenda + "C" #'calendar + "c" #'org-capture + "d" #'denote + "D" #'denote-date + "r" #'denote-rename-file-date + "b" #'my-denote-find-backlink-with-location + "R" #'denote-rename-file + "m" #'my-denote-open-metanote + "q" #'org-ql-search) - ;; window - "C-M-<left>" #'shrink-window-horizontally - "C-M-<right>" #'enlarge-window-horizontally - "C-M-<down>" #'shrink-window - "C-M-<up>" #'enlarge-window - "M-`" #'popper-toggle - "C-M-=" #'my-popper-toggle-type-delete-other-window - "M-o" #'other-window - "M-O" #'other-window-backward +;; p for project +(general-def + :prefix "C-x p" + "b" #'consult-project-buffer + "t" #'ghostel-project + "g" #'my-consult-git-grep-project + "r" #'project-find-regexp + "R" #'project-or-external-find-regexp + "q" #'project-query-replace-regexp + "v" #'magit-project-status + "V" #'project-vc-dir + "i" #'project-ibuffer + "a" #'my-pilish) - ;; other - "C-x r b" #'consult-bookmark - "C-;" #'embark-act - "M-s M-b" #'eww-list-bookmarks - "<f8>" #'emms-pause - "<f7>" #'emms-previous - "<f9>" #'emms-next) +;; r for replacement +(general-def + :prefix "C-c r" + "h" #'substitute-target-in-paragraph + "p" #'substitute-target-in-page + "d" #'substitute-target-in-defun + "D" #'substitute-target-in-defun-and-below + "b" #'substitute-target-in-buffer + "l" #'substitute-target-below-point + "u" #'substitute-target-above-point) + +;; t for modes toggle +(general-def + :prefix "C-c t" + "f" #'flycheck-mode + "j" #'jinx-mode + "g" #'gptel-mode + "h" #'global-diff-hl-mode) -(cond - (*is-android* - (general-def - "C-M-w" #'my-popper-toggle-type-delete-other-window)) - (*is-linux* - (general-def - "M-S-SPC" #'xdg-launcher-run-app)) - (t nil)) +;; u for ui +(general-def + :prefix "C-c u" + "l" #'global-tab-line-mode + "d" #'disable-theme + "t" #'consult-theme + "f" #'describe-face + "k" #'keycast-header-line-mode + "w" #'global-whitespace-mode + "c" #'colorful-mode + "p" #'my-pick-color) + +;; v for version control +(general-def + :prefix "C-x v" + "c" #'magit-clone + "i" #'magit-init + "l" #'magit-log-buffer-file) + +;; w for whitespace +(general-def + :prefix "C-c w" + "f" #'fixup-whitespace + "r" #'whitespace-report + "o" #'global-whitespace-toggle-options + "c" #'whitespace-cleanup) + +;; x for some other command +(general-def + :prefix "C-c x" + "e" #'eshell + "t" #'ghostel + "p" #'proced + "b" #'benchmark-init/show-durations-tree + "B" #'benchmark-init/show-durations-tabulated + "S" #'syncthing + "f" #'elfeed + "k" #'pass + "g" #'gt-translate + "s" #'my-synosaurus-lookup) + + +;;; other + +;; org +(general-def + "C-c a" #'org-agenda + "C-c l" #'org-store-link) + +;; scratch buffer +(if *is-mac* + (general-def "C-c <f12>" #'my-scratch-buffer) + (general-def "C-c <delete>" #'my-scratch-buffer)) (provide 'init-kbd) ;;; init-kbd.el ends here diff --git a/lisp/init-window.el b/lisp/init-window.el @@ -95,6 +95,8 @@ '("[POP]"))) (setq popper-echo-dispatch-actions t) (setq popper-group-function nil) + (if *is-android* + (general-def "C-M-w" #'my-popper-toggle-type-delete-other-window)) :config (popper-echo-mode 1)