Emacs 从零开始写配置

From 清冽之泉
Jump to navigation Jump to search

据 ChatGPT 所说,Emacs 启动顺序为:

1 启动 C 核心
2 初始化 load-path
3 加载 site-start.el(系统级配置)
4 加载 early-init.el(用户早期配置)
5 初始化 package.el
6 加载 init.el 或 .emacs(用户配置)
7 Emacs 完全启动

平台

load-path

设想的插件管理方式:自动追加插件目录,在插件出问题时可以全删干净,不影响早期有效配置。

  1. 新建一个目录,当自留地
  2. 把自留地加入 load-path,追加而不抢先
  3. 试用插件时,在自留地里,创建插件目录
  4. 插件目录也加入 load-path,追加而不抢先。一级,不递归
  5. provide 'name 及 require 'name
  6. 试用调整,满意就留,不满意就删该插件目录
;; 个人自留地,根目录
(defvar qlzq-personal-dir (expand-file-name "qlzq-emacs-config/" user-emacs-directory))

;; 确保存在
(unless (file-directory-p qlzq-personal-dir)
  (make-directory qlzq-personal-dir t))

;; 把根目录加入 load-path
(add-to-list 'load-path qlzq-personal-dir t)

;; 把每个一级子目录加入 load-path(只加入含 .el/.elc 的目录)
(dolist (sub (directory-files qlzq-personal-dir t "^[^.]" t))
  (when (and (file-directory-p sub)
             (cl-some (lambda (f) (string-match-p "\\.el\\(c\\)?\\'" f))
                      (directory-files sub)))
    (add-to-list 'load-path sub t)))