From e3dda7fd6514523a50d8031e9effe81f7885e757 Mon Sep 17 00:00:00 2001 From: trogloxene Date: Sat, 13 Jun 2026 08:25:44 +0800 Subject: [PATCH] refactor: refine Windows support and convert use-package :if to conditionals --- lisp/init-base.el | 32 ++++++------ lisp/init-completion.el | 10 ++-- lisp/init-edit.el | 2 +- lisp/init-elpa.el | 2 +- lisp/init-org.el | 17 +++++-- lisp/init-package.el | 91 +++++++++++++++++------------------ lisp/init-terminal-package.el | 2 - lisp/init-ui.el | 34 ++++++------- 8 files changed, 95 insertions(+), 95 deletions(-) diff --git a/lisp/init-base.el b/lisp/init-base.el index 8a6b155..96cfa04 100644 --- a/lisp/init-base.el +++ b/lisp/init-base.el @@ -42,20 +42,19 @@ (server-mode 1))))) ;; recentf,最近打开的文件 -(use-package recentf - :if - (or (display-graphic-p) *is-android*) - :hook - (after-init . recentf-mode) - :init - (setq recentf-max-saved-items 30) - :config - (if *is-android* - (add-to-list 'recentf-exclude "~/storage/shared/my-org-note/journal/.*\\.org\\'") - (add-to-list 'recentf-exclude "~/org/my-org-note/journal/.*\\.org\\'") - (add-to-list 'recentf-exclude "~/org/my-org-note/20260509T232442==agenda--all-my-todos__org\\.org")) - (add-to-list 'recentf-exclude "~/.emacs.d/emms/history") - (add-to-list 'recentf-exclude "~/.emacs.d/bookmarks")) +(if (or (display-graphic-p) *is-android*) + (use-package recentf + :hook + (after-init . recentf-mode) + :init + (setq recentf-max-saved-items 30) + :config + (if *is-android* + (add-to-list 'recentf-exclude "~/storage/shared/my-org-note/journal/.*\\.org\\'") + (add-to-list 'recentf-exclude "~/org/my-org-note/journal/.*\\.org\\'") + (add-to-list 'recentf-exclude "~/org/my-org-note/20260509T232442==agenda--all-my-todos__org\\.org")) + (add-to-list 'recentf-exclude "~/.emacs.d/emms/history") + (add-to-list 'recentf-exclude "~/.emacs.d/bookmarks"))) ;; savehist,保存命令顺序 (use-package savehist @@ -81,14 +80,13 @@ (use-package restart-emacs) ;; async +(if *is-android* (use-package async - :if - (not *is-android*) :hook (after-init . dired-async-mode) (after-init . async-bytecomp-package-mode) :init - (setq async-bytecomp-allowed-packages '(all))) + (setq async-bytecomp-allowed-packages '(all)))) ;; autorevert buffer (use-package autorevert diff --git a/lisp/init-completion.el b/lisp/init-completion.el index 4035362..cb43678 100644 --- a/lisp/init-completion.el +++ b/lisp/init-completion.el @@ -166,11 +166,11 @@ targets." (:map corfu-map ("RET" . nil))) -(use-package corfu-terminal - :if (not (and (display-graphic-p) - (>= emacs-major-version 31))) - :hook - (after-init . corfu-terminal-mode)) +(if (not (and (display-graphic-p) + (>= emacs-major-version 31))) + (use-package corfu-terminal + :hook + (after-init . corfu-terminal-mode))) (use-package emacs :custom diff --git a/lisp/init-edit.el b/lisp/init-edit.el index 59f74ce..e389607 100644 --- a/lisp/init-edit.el +++ b/lisp/init-edit.el @@ -73,7 +73,7 @@ :init (if *is-android* (add-hook 'after-init-hook 'god-mode-all)) :config - (unless *is-android* (which-key-enable-god-mode-support)) + (unless (or *is-android* (not use-package-always-defer)) (which-key-enable-god-mode-support)) (setq god-mode-enable-function-key-translation nil god-exempt-major-modes (cl-union '(diff-mode exwm-mode) god-exempt-major-modes :test 'equal) diff --git a/lisp/init-elpa.el b/lisp/init-elpa.el index fc5ff8e..341b35d 100644 --- a/lisp/init-elpa.el +++ b/lisp/init-elpa.el @@ -32,7 +32,7 @@ ;; (straight-use-package 'use-package) ;; 配置 use-package -(setq use-package-always-defer t +(setq use-package-always-defer (if *is-windows* nil t) use-package-expand-minimally t use-package-verbose t straight-use-package-version t diff --git a/lisp/init-org.el b/lisp/init-org.el index adcab3f..38b9420 100644 --- a/lisp/init-org.el +++ b/lisp/init-org.el @@ -8,11 +8,16 @@ :hook (org-mode . org-indent-mode) (org-mode . visual-line-mode) - (org-mode . jinx-mode) (org-mode . my-org-electric-pair-fix) (org-mode . electric-pair-local-mode) :config + (if *is-windows* + (add-hook 'org-mode-hook 'font-lock-update)) + + (unless *is-windows* + (add-hook 'org-mode 'jinx-mode)) + (defun my-org-electric-pair-fix () (setq-local electric-pair-inhibit-predicate (lambda (char) @@ -71,9 +76,13 @@ (after-init . denote-rename-buffer-mode) (dired-mode . denote-dired-mode) :config - (if *is-android* - (setq denote-directory "~/storage/shared/my-org-note/") - (setq denote-directory "~/org/my-org-note/")) + (cond + (*is-android* + (setq denote-directory "~/storage/shared/my-org-note/")) + (*is-windows* + (setq denote-directory "H:/emacs/my-org-note/")) + (t + (setq denote-directory "~/org/my-org-note/"))) (setq denote-prompts '(title signature keywords)) (setq denote-title-history nil) (setq denote-signature-history diff --git a/lisp/init-package.el b/lisp/init-package.el index 7e67b9b..d2395b7 100644 --- a/lisp/init-package.el +++ b/lisp/init-package.el @@ -5,7 +5,8 @@ ;;; Code: ;; keycast,按键广播 -(use-package keycast) +(if use-package-always-defer + (use-package keycast)) ;; anzu,显示isearch匹配数字 (use-package anzu @@ -35,55 +36,51 @@ (?v "Variables" font-lock-variable-name-face))))))) ;; jinx,拼写检查 -(use-package jinx - :if - (not *is-windows*) - :delight - (jinx-mode " Jinx" jinx) - :bind - ([remap ispell-word] . jinx-correct) - :config - (setq jinx-languages "en_US") - (add-to-list 'jinx-exclude-regexps '(t "\\cc")) - (with-eval-after-load 'jinx - (dolist (range '((#x4E00 . #x9FFF) - (#x3400 . #x4DBF) - (#x3000 . #x303F) - (#xFF00 . #xFFEF) - (#x20000 . #x2A6DF))) - (let ((start (car range)) - (end (cdr range))) - (dotimes (i (- end start)) - (modify-syntax-entry (+ start i) "_" jinx--syntax-table)))))) +(unless *is-windows* + (use-package jinx + :delight + (jinx-mode " Jinx" jinx) + :bind + ([remap ispell-word] . jinx-correct) + :config + (setq jinx-languages "en_US") + (add-to-list 'jinx-exclude-regexps '(t "\\cc")) + (with-eval-after-load 'jinx + (dolist (range '((#x4E00 . #x9FFF) + (#x3400 . #x4DBF) + (#x3000 . #x303F) + (#xFF00 . #xFFEF) + (#x20000 . #x2A6DF))) + (let ((start (car range)) + (end (cdr range))) + (dotimes (i (- end start)) + (modify-syntax-entry (+ start i) "_" jinx--syntax-table)))))) -(use-package consult-jinx - :if - (not *is-windows*) - :after jinx - :demand t - :straight nil) + (use-package consult-jinx + :after jinx + :demand t + :straight nil)) ;; eat,终端 -(use-package eat - :if - (not *is-windows*) - :straight - (eat :type git - :host codeberg - :repo "akib/emacs-eat" - :files ("*.el" - ("term" "term/*.el") - "*.texi" - "*.ti" - ("terminfo/e" "terminfo/e/*") - ("terminfo/65" "terminfo/65/*") - ("integration" "integration/*") - (:exclude ".dir-locals.el" "*-tests.el"))) - :hook - ((eshell-load . eat-eshell-mode) - (eshell-load . eat-eshell-visual-command-mode)) - :config - (setq eat-term-terminfo-directory eat--terminfo-path)) +(unless *is-windows* + (use-package eat + :straight + (eat :type git + :host codeberg + :repo "akib/emacs-eat" + :files ("*.el" + ("term" "term/*.el") + "*.texi" + "*.ti" + ("terminfo/e" "terminfo/e/*") + ("terminfo/65" "terminfo/65/*") + ("integration" "integration/*") + (:exclude ".dir-locals.el" "*-tests.el"))) + :hook + ((eshell-load . eat-eshell-mode) + (eshell-load . eat-eshell-visual-command-mode)) + :config + (setq eat-term-terminfo-directory eat--terminfo-path))) ;; perspective,工作区管理 (use-package perspective diff --git a/lisp/init-terminal-package.el b/lisp/init-terminal-package.el index ecb386a..30545fe 100644 --- a/lisp/init-terminal-package.el +++ b/lisp/init-terminal-package.el @@ -20,8 +20,6 @@ (after-init . benchmark-init/deactivate)) (use-package recentf - :if - (or (display-graphic-p) *is-android*) :hook (after-init . recentf-mode) :init diff --git a/lisp/init-ui.el b/lisp/init-ui.el index 1f22aef..db0fb77 100644 --- a/lisp/init-ui.el +++ b/lisp/init-ui.el @@ -63,11 +63,10 @@ (use-package naysayer-theme) (use-package ef-themes) -(use-package simple-modeline - :if - *is-android* - :hook - (after-init . simple-modeline-mode)) +(if *is-android* + (use-package simple-modeline + :hook + (after-init . simple-modeline-mode))) ;; eshell高亮 (use-package eshell-syntax-highlighting @@ -101,19 +100,18 @@ (after-init . global-hl-line-mode)) ;; 显示时间 -(use-package time - :if - (not *is-android*) - :hook - (persp-mode . display-time-mode) - :config - (setq display-time-default-load-average nil - display-time-string-forms - '((propertize - (concat - (propertize (format-time-string " %I:%M") 'face 'display-time-date-and-time) - (propertize (format-time-string "-%p") 'face 'font-lock-comment-face)) - 'help-echo (format-time-string "%A, %B %d, %Y"))))) +(unless *is-android* + (use-package time + :hook + (persp-mode . display-time-mode) + :config + (setq display-time-default-load-average nil + display-time-string-forms + '((propertize + (concat + (propertize (format-time-string " %I:%M") 'face 'display-time-date-and-time) + (propertize (format-time-string "-%p") 'face 'font-lock-comment-face)) + 'help-echo (format-time-string "%A, %B %d, %Y")))))) ;; 安装cnfonts脚本,用于修复中英文对齐 (use-package cnfonts