;;; init-base.el --- base config -*- lexical-binding: t -*- ;;; Commentary: ;;; Code: ;; general,键位绑定 (use-package general) ;; delight,修改mode-line中的模式名 (use-package delight :config (delight `((eldoc-mode nil eldoc) (org-indent-mode nil org-indent) (desktop-environment-mode nil desktop-environment) (hs-minor-mode nil hideshow) (rainbow-delimiters-mode ,(propertize " Rdelimiters" 'face 'rainbow-delimiters-depth-1-face) rainbow-delimiters)))) ;; gcmh,垃圾回收 (use-package gcmh :delight :init (setq gcmh-idle-delay 'auto gcmh-auto-idle-delay-factor 10 gcmh-high-cons-threshold #x4000000) (gcmh-mode)) ;; benchmark-init (use-package benchmark-init :init (benchmark-init/activate) :hook (after-init . benchmark-init/deactivate)) ;; server-mode (use-package server :demand t :hook (emacs-startup . (lambda () (unless (server-running-p) (server-mode 1))))) ;; recentf,最近打开的文件 (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 :hook (after-init . savehist-mode) :init (setq enable-recursive-minibuffers t history-length 50 savehist-additional-variables '(mark-ring global-mark-ring search-ring regexp-search-ring extended-command-history) savehist-ignored-variables '(consult-notes-history) savehist-autosave-interval 300)) ;; saveplace,保存光标位置 (use-package saveplace :hook (after-init . save-place-mode)) ;; restart-emacs (use-package restart-emacs) ;; async (if *is-android* (use-package async :hook (after-init . dired-async-mode) (after-init . async-bytecomp-package-mode) :init (setq async-bytecomp-allowed-packages '(all)))) ;; autorevert buffer (use-package autorevert :delight :hook (after-init . global-auto-revert-mode)) ;; which-key,快捷键提示 (use-package which-key :delight :hook (after-init . which-key-mode)) ;; winner-mode,保存窗口布局历史 (use-package winner :hook (after-init . winner-mode)) ;; ibuffer (use-package ibuffer :config (setq ibuffer-saved-filter-groups '(("Main" ("App" (mode . exwm-mode)) ("Scratch" (or (name . "^*scratch"))) ("eww" (or (mode . eww-mode) (mode . eww-bookmark-mode) (mode . eww-buffers-mode) (mode . eww-history-mode))) ("Calc" (or (mode . calc-mode) (mode . calc-trail-mode))) ("Shell" (or (mode . eshell-mode) (mode . eat-mode) (mode . vterm-mode))) ("Scripts" (or (mode . shell-script-mode) (mode . shell-mode) (mode . sh-mode) (mode . lua-mode) (mode . bat-mode))) ("Config" (or (mode . conf-mode) (mode . conf-desktop-mode) (mode . conf-toml-mode) (mode . conf-xdefaults-mode))) ("Elisp" (mode . emacs-lisp-mode)) ("Scheme" (or (mode . scheme-mode))) ("Geiser" (or (name . "^Geiser") (mode . geiser-repl-mode) (mode . geiser-debug-mode) (mode . geiser-messages-mode) (mode . geiser-debug-mode) (mode . geiser-doc-mode) (mode . geiser-autodoc-mode))) ("gptel" (or (name . "^\\*gptel"))) ("Common-lisp" (or (mode . common-lisp-mode) (mode . lisp-mode))) ("Sly" (or (mode . lisp-data-mode) (mode . sly-db-mode) (mode . sly-mrepl-mode) (name . "\\*sly-compilation\\*") (name . "^\\*img-cache\\*"))) ("Text" (or (mode . org-mode) (mode . markdown-mode) (name . "^\\*\\[D\\] FILE backlinks for"))) ("Help" (or (mode . help-mode) (mode . helpful-mode))) ("Info" (or (name . "^\\*info"))) ("Magit" (or (mode . magit-blame-mode) (mode . magit-cherry-mode) (mode . magit-diff-mode) (mode . magit-log-mode) (mode . magit-process-mode) (mode . magit-status-mode) (mode . magit-revision-mode))) ("Directories" (or (mode . dired-mode) (name . "^*dirvish"))) ("Grep" (or (mode . grep-mode) (mode . rg-mode) (mode . xref--xref-buffer-mode) (mode . xref-edit-mode))) ("Diff" (name . "^*Diff")) ("Emacs" (or (name . "^\\*Help\\*$") (name . "^\\*Custom.*") (name . "^\\*EMMS Playlist\\*") (name . "^\\*Messages\\*$") (name . "*Chinese-word-segmentation*") (name . "^*Buffer List*") (name . "\\*discomfort\\*") (mode . calendar-mode) (mode . grep-mode) (mode . occur-mode)))))) (add-hook 'ibuffer-hook (lambda () (ibuffer-switch-to-saved-filter-groups "Main") (unless (eq ibuffer-sorting-mode 'alphabetic) (ibuffer-do-sort-by-alphabetic)))) (setq ibuffer-show-empty-filter-groups nil ibuffer-use-other-window t ibuffer-default-sorting-mode 'filename)) (use-package simple :straight nil :hook (after-init . size-indication-mode) (after-init . column-number-mode) :config (setq kill-whole-line t ;kill-line删除换行符 set-mark-command-repeat-pop t)) ;更方便地pop mark ;; 滚动 (use-package pixel-scroll :straight nil :hook (after-init . pixel-scroll-precision-mode) :config (setq scroll-preserve-screen-position t scroll-conservatively 101)) ;; eww (use-package eww :config (setq eww-auto-rename-buffer t)) ;; shr (use-package shr :config (setq shr-inhibit-images nil)) (provide 'init-base) ;;; init-base.el ends here