.emacs.d

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

commit cd88b58eac7b2716e5f65e78e4e5bf96706ad68d
parent 2c727f1ae52ea543bb0cfd3fd60699b592aa520a
Author: andsy10 <andsy1016@gmail.com>
Date:   Mon, 19 Oct 2026 07:03:32 +0800

Optimize configuration

Diffstat:
Mlisp/init-base.el | 12+++++++-----
Mlisp/init-completion.el | 10+++++-----
Mlisp/init-custom.el | 48++++++++++++++++++++++++++++--------------------
Mlisp/init-dired.el | 38+-------------------------------------
Mlisp/init-edit.el | 8+++++---
Mlisp/init-elisp.el | 10+++++-----
Mlisp/init-elpa.el | 2+-
Mlisp/init-kbd-func.el | 10+++++-----
Mlisp/init-kbd.el | 6++++++
Mlisp/init-org.el | 14+++++---------
Mlisp/init-package.el | 28++++++++++++++--------------
Mlisp/init-terminal.el | 3++-
Mlisp/init-ui.el | 4+---
Mlisp/my-theme.el | 1+
14 files changed, 86 insertions(+), 108 deletions(-)

diff --git a/lisp/init-base.el b/lisp/init-base.el @@ -56,9 +56,10 @@ "^/tmp/" "^/var/folders/.+$" "^/ssh:" "/persp-confs/" (lambda (file) (file-in-directory-p file package-user-dir)))) :config - (add-to-list 'recentf-exclude "~/.emacs.d/bookmarks") (add-to-list 'recentf-exclude "~/hywiki/.hywiki.eld") - (add-to-list 'recentf-exclude (abbreviate-file-name (straight--build-dir)))) + (add-to-list 'recentf-exclude (abbreviate-file-name (straight--build-dir))) + (with-eval-after-load 'bookmark + (add-to-list 'recentf-exclude bookmark-default-file))) ;; save minibuffer history (my-use-package savehist @@ -197,7 +198,7 @@ (mode . dired-mode) (name . "^*dirvish") (mode . trashed-mode))) - ("eww" (or + ("Eww" (or (mode . eww-mode) (mode . eww-bookmark-mode) (mode . eww-buffers-mode) @@ -283,8 +284,9 @@ :straight nil :config (setq tramp-default-method 'ssh - tramp-auto-save-directory "~/.emacs.d/tramp-auto-save") - (setq tramp-completion-use-auth-sources nil)) + tramp-auto-save-directory + (expand-file-name "tramp-auto-save" user-emacs-directory) + tramp-completion-use-auth-sources nil)) ;; speedbar (my-use-package speedbar diff --git a/lisp/init-completion.el b/lisp/init-completion.el @@ -114,14 +114,14 @@ With prefix ARG, search for all agenda headings." xref-show-xrefs-function #'consult-xref) ;; register - (delete 'consult-source-buffer-register consult-buffer-sources) - (delete 'consult-source-file-register consult-buffer-sources) (setq register-preview-delay 0.5 register-preview-function #'consult-register-format) (advice-add #'register-preview :override #'consult-register-window) ;; delete unused buffer sources (delete 'consult-source-bookmark consult-buffer-sources) + (delete 'consult-source-buffer-register consult-buffer-sources) + (delete 'consult-source-file-register consult-buffer-sources) ;; set some buffer filter (setq consult-buffer-filter @@ -147,6 +147,9 @@ With prefix ARG, search for all agenda headings." "^\\*EGLOT") :test 'equal))) +;; embark-consult +(my-use-package embark-consult) + ;; right-click (my-use-package embark :init @@ -190,9 +193,6 @@ targets." nil (window-parameters (mode-line-format . none))))) -;; embark-consult -(my-use-package embark-consult) - ;; corfu (my-use-package corfu :hook diff --git a/lisp/init-custom.el b/lisp/init-custom.el @@ -17,7 +17,6 @@ :type 'boolean :group 'trogloxene) - (defcustom my-enable-server nil "Enable `server-mode' or not." :type 'boolean @@ -33,24 +32,36 @@ :type 'boolean :group 'trogloxene) -(defcustom my-blog-directory - (if *is-windows* "h:/emacs/blog/posts/" "~/org/blog/posts/") +(defcustom my-enable-lazy-loading t + "Enable lazy loading." + :type 'boolean + :group 'trogloxene) + +(defcustom my-dark-or-light nil + "Which theme to load, t for light nil for dark." + :type 'boolean + :group 'trogloxene) + +(defcustom my-org-directory nil + "My org directory. +I need to use `org-directory' before org is loaded." + :type 'directory + :group 'trogloxene) + +(defcustom my-blog-directory nil "My blog directory." - :type 'string + :type 'directory :group 'trogloxene) -(with-eval-after-load 'org - (defcustom my-org-capture-file - (concat org-directory "/20260509T232442==agenda--all-my-todos.org") - "File used to capture todos." - :type 'string - :group 'trogloxene) +(defcustom my-org-capture-file nil + "File used to capture todos." + :type 'file + :group 'trogloxene) - (defcustom my-org-capture-game-file - (concat org-directory "/20260810T233455==agenda--all-about-game__game.org") - "File used to capture games" - :type 'string - :group 'trogloxene)) +(defcustom my-org-capture-game-file nil + "File used to capture games." + :type 'file + :group 'trogloxene) (defcustom my-frame-parameter nil "Frame parameter on startup." @@ -59,12 +70,9 @@ (const :tag "Fullscreen" fullscreen)) :group 'trogloxene) -(defcustom my-cns-dir - (if *is-windows* - "h:/emacs/emacs-chinese-word-segmentation/" - "~/emacs-stuff/emacs-chinese-word-segmentation/") +(defcustom my-cns-dir "nil" "Directory for cns." - :type 'string + :type 'directory :group 'trogloxene) (defcustom my-proxy "127.0.0.1:7890" diff --git a/lisp/init-dired.el b/lisp/init-dired.el @@ -51,43 +51,7 @@ the hardcoded fallback recipe." dirvish-mode-line-format '(:left (sort omit symlink) :right (free-space index)) dirvish-attributes '(file-time file-size) dirvish-yank-sources 'session - dirvish-hide-cursor nil) - (setopt dirvish-quick-access-entries - (cond - (*is-windows* - '(("h" "~/" "Home") - ("e" "~/.emacs.d/" "Emacs config") - ("p" "c:/Users/gaozh/Pictures/Screenshots/" "Pictures") - ("d" "f:/下载25-2-10/" "Download") - ("v" "f:/luping26-1-11/" "Videos") - ("n" "h:/emacs/my-org-note/" "Notes"))) - - (*is-mac* - '(("h" "~/" "Home") - ("e" "~/.emacs.d/" "Emacs config") - ("p" "~/Pictures/" "Pictures") - ("d" "~/Downloads/" "Download") - ("v" "~/Movies/" "Videos") - ("m" "~/Music/" "Music") - ("n" "~/org/my-org-note/" "Notes") - ("g" "~/gptel/" "gptel sessions"))) - - (*is-linux* - '(("h" "~/" "Home") - ("e" "~/.emacs.d/" "Emacs config") - ("s" "~/.config/guix/" "System config") - ("p" "~/Pictures/" "Pictures") - ("d" "~/downloads/" "Downloads") - ("v" "~/视频/" "Videos") - ("n" "~/org/my-org-note/" "Notes") - ("g" "~/gptel/" "gptel sessions"))) - - (*is-android* - '(("h" "~/" "Home") - ("e" "~/.emacs.d" "Emacs") - ("n" "~/storage/shared/my-org-note/" "Notes") - ("g" "~/gptel/" "gptel sessions"))) - (t nil)))) + dirvish-hide-cursor nil)) ;; gitignore (my-use-package dired-gitignore diff --git a/lisp/init-edit.el b/lisp/init-edit.el @@ -100,9 +100,11 @@ rotate-windows-repeat-map nil window-layout-rotate-repeat-map nil ghostel-prompt-repeat-map nil - org-navigation-repeat-map nil - outline-navigation-repeat-map nil - jinx-repeat-map nil)) + jinx-repeat-map nil) + (with-eval-after-load 'org-keys + (setq org-navigation-repeat-map nil)) + (with-eval-after-load 'outline + (setq outline-navigation-repeat-map nil))) ;; show where your are (my-use-package which-func diff --git a/lisp/init-elisp.el b/lisp/init-elisp.el @@ -36,8 +36,7 @@ ;; from Purcell's Emacs configuration (my-use-package ielm :straight nil - :commands my-switch-to-ielm my-repl-switch-back - :config + :init ;; jump between ielm and elisp file (defvar-local my-repl-original-buffer nil "Buffer from which we jumped to this REPL.") @@ -68,11 +67,12 @@ (error "This buffer is not visiting a file")))) (save-excursion (goto-char (point-min)) - (insert ";;; " fname " --- Insert description here -*- lexical-binding: t -*-\n" - ";;; Commentary:\n" + (insert ";;; " fname + (format " --- %s -*- lexical-binding: t -*-\n\n" (file-name-base fname)) + ";;; Commentary:\n\n" ";;; Code:\n\n") (goto-char (point-max)) - (insert ";;; " fname " ends here\n")))) + (insert "\n;;; " fname " ends here\n")))) (defun my-elisp-load-this-file () "Load the current file or buffer. diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el @@ -27,7 +27,7 @@ (straight-use-package 'use-package)) ;; configure use-package -(setq use-package-always-defer t +(setq use-package-always-defer my-enable-lazy-loading use-package-expand-minimally t use-package-verbose nil use-package-compute-statistics t diff --git a/lisp/init-kbd-func.el b/lisp/init-kbd-func.el @@ -46,8 +46,8 @@ With a prefix ARG, copy the expanded file path." "Count the number of words in the region. With prefix ARG, report for the entire buffer rather than the region." (interactive (if current-prefix-arg - (list nil nil current-prefix-arg) - (list (region-beginning) (region-end) nil))) + (list nil nil current-prefix-arg) + (list (region-beginning) (region-end) nil))) (cl-letf (((symbol-function 'forward-word-strictly) #'forward-word)) (if totals (message "%s" (count-words--buffer-format)) @@ -196,7 +196,7 @@ When a prefix ARG, do not delete the links from `org-stored-links'." (interactive) (org-table-map-tables 'org-table-align t)) -(defun org-align-description-list () +(defun my-org-align-description-list () "Adjust all `::' in active region." (interactive) (align-regexp (region-beginning) (region-end) "\\(\\s-*\\)::" 1 1 nil)) @@ -216,9 +216,9 @@ When a prefix ARG, do not delete the links from `org-stored-links'." (message "Push successfully %s" timestamp))))) (defun my-note-push () - "Git add/commit/push in 'org-directory'." + "Git add/commit/push in 'my-org-directory'." (interactive) - (my-push-with-timestamp org-directory)) + (my-push-with-timestamp my-org-directory)) (defun my-org-publish () "Git add/commit/push in `my-blog-directory'." diff --git a/lisp/init-kbd.el b/lisp/init-kbd.el @@ -159,6 +159,10 @@ "p" #'previous-line "P" #'discomfort-poweroff) +;; eglot +(general-def eglot-mode-map + "C-c f e" #'consult-eglot-symbols) + ;; elfeed (general-def elfeed-search-mode-map "v" #'my-elfeed-search-preview-other-window @@ -170,6 +174,7 @@ "C-c C-l j" #'my-elisp-eval-and-print-last-sexp "C-c C-l p" #'my-elisp-pp-macroexpand-last-sexp "C-c C-l e" #'pp-eval-last-sexp + "C-c C-l h" #'my-elisp-headerise "C-c C-z" #'my-switch-to-ielm) (general-def lisp-interaction-mode-map "C-j" #'my-elisp-eval-and-print-last-sexp) @@ -237,6 +242,7 @@ "C-c C-<f12>" #'my-persp-scratch-buffer "z" #'avy-goto-char "'" #'avy-goto-word-1 + "<f1>" #'eldoc-mouse-pop-doc-at-cursor "<f2>" #'my-open-init-file) ;; gptel diff --git a/lisp/init-org.el b/lisp/init-org.el @@ -13,12 +13,7 @@ (org-cycle-tab-first . my-org-tab-complete) :init - (setq org-directory - (cond - (*is-windows* "h:/emacs/my-org-note") - (*is-mac* "~/org/my-org-note") - (*is-linux* "~/org/my-org-note") - (*is-android* "~/storage/shared/my-org-note"))) + (setq org-directory my-org-directory) (defun my-org-tab-complete () (let ((completion-at-point-functions @@ -123,6 +118,7 @@ (dired-mode . denote-dired-mode) :autoload denote-retrieve-filename-identifier denote-file-prompt :init + (defvar denote-directory) (defvar denote-excluded-files-regexp) (defvar denote-journal-signature) (defvar denote-file-prompt-extra-metadata) @@ -174,7 +170,7 @@ (apply fun file file-type args))) (advice-add #'denote-link :around #'my-denote-link-image-fix) - (setq denote-directory org-directory + (setq denote-directory my-org-directory denote-org-store-link-to-heading 'context denote-date-prompt-use-org-read-date t denote-prompts '(title signature keywords)) @@ -256,14 +252,14 @@ (denote-journal-new-or-existing-entry) (find-file entry)))) - (setq denote-journal-directory (concat denote-directory "/journal")) + (setq denote-journal-directory (expand-file-name "journal" denote-directory)) (setq denote-journal-keyword nil) (setq denote-journal-signature "journal") (setq denote-journal-keyword "daily") (advice-add 'calendar-redraw :after #'denote-journal-calendar-mark-dates) :config - (add-to-list 'recentf-exclude denote-journal-directory)) + (add-to-list 'recentf-exclude (abbreviate-file-name denote-journal-directory))) ;; explore, maintain and visualise denote files (my-use-package denote-explore diff --git a/lisp/init-package.el b/lisp/init-package.el @@ -57,12 +57,6 @@ Like normal Emacs `C-k'. Kill to end of line and put content in kill-ring." (my-use-package shell :straight nil :init - (defun my-setenv-local (var val buffer) - (with-current-buffer buffer - (unless (local-variable-p 'process-environment) - (setq-local process-environment (copy-sequence process-environment))) - (setenv var val))) - (defvar my-shell-setenv '(("PAGER" . "cat") ("GIT_PAGER" . "cat") @@ -70,6 +64,12 @@ Like normal Emacs `C-k'. Kill to end of line and put content in kill-ring." ("SYSTEMD_PAGER" . "cat") ("APT_PAGER" . "cat"))) + (defun my-setenv-local (var val buffer) + (with-current-buffer buffer + (unless (local-variable-p 'process-environment) + (setq-local process-environment (copy-sequence process-environment))) + (setenv var val))) + (defun my-shell-setenv (buffer name &rest _) (when (string= name "shell") (dolist (pair my-shell-setenv) @@ -298,14 +298,14 @@ Prefix ARG controls sort order, see `proced-sort-interactive'." "Append metadata to the entry at point." (interactive) (pass--with-closest-entry - entry - (call-interactively - (lambda (field value) - (interactive - (let* ((f (completing-read "Field: " my-pass-meta-fields)) - (v (read-string (format "%s: " f)))) - (list f v))) - (my-password-store-append-field entry field value))))) + entry + (call-interactively + (lambda (field value) + (interactive + (let* ((f (completing-read "Field: " my-pass-meta-fields)) + (v (read-string (format "%s: " f)))) + (list f v))) + (my-password-store-append-field entry field value))))) (defun my-pass-copy-email () "Copy email of entry at point to kill ring." diff --git a/lisp/init-terminal.el b/lisp/init-terminal.el @@ -68,7 +68,8 @@ :init (setq recentf-max-saved-items 30) :config - (add-to-list 'recentf-exclude "~/.emacs.d/bookmarks")) + (with-eval-after-load 'bookmark + (add-to-list 'recentf-exclude bookmark-default-file))) (use-package savehist :hook diff --git a/lisp/init-ui.el b/lisp/init-ui.el @@ -22,9 +22,7 @@ (lambda (frame) (with-selected-frame frame (load-theme 'my-dark t)))) - (if *is-android* - (load-theme 'my-light t) - (load-theme 'my-dark t)))) + (load-theme (if my-dark-or-light 'my-light 'my-dark) t))) ;; color picker ;; from zHaOdANiuu's ElegantEmacs diff --git a/lisp/my-theme.el b/lisp/my-theme.el @@ -26,6 +26,7 @@ `(mode-line ((,class (:foreground ,base0 :background ,base02)))) `(mode-line-inactive ((,class (:foreground ,base01 :background ,base03)))) `(display-time-date-and-time ((,class (:foreground ,base1 :bold t)))) + `(minibuffer-nonselected ((,class (:inverse-video t)))) `(comint-highlight-prompt ((,class (:foreground ,yellow :weight bold)))) `(comint-highlight-input ((,class (:inherit bold))))