249 lines
6.5 KiB
EmacsLisp
249 lines
6.5 KiB
EmacsLisp
;;; 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
|
||
:straight nil
|
||
: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)
|
||
(mode . magit-refs-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)
|
||
(mode . occur-mode)
|
||
(mode . occur-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))))))
|
||
|
||
(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
|
||
|
||
;; 滚动
|
||
(unless *is-mac*
|
||
(use-package pixel-scroll
|
||
:straight nil
|
||
:hook
|
||
(after-init . pixel-scroll-precision-mode)
|
||
:init
|
||
(setq scroll-preserve-screen-position t
|
||
scroll-conservatively 101)
|
||
:config
|
||
(advice-add 'pixel-scroll-precision :around
|
||
(lambda (orig event)
|
||
(cl-letf (((symbol-function 'device-class)
|
||
(lambda (&rest _) 'mouse)))
|
||
(funcall orig event))))))
|
||
|
||
;; 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
|