commit cd88b58eac7b2716e5f65e78e4e5bf96706ad68d
parent 2c727f1ae52ea543bb0cfd3fd60699b592aa520a
Author: andsy10 <andsy1016@gmail.com>
Date: Mon, 19 Oct 2026 07:03:32 +0800
Optimize configuration
Diffstat:
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))))