Emacs入坑之旅——配置文件模块化

我的emacs配置文件(持续更新):https://github.com/dnxbjyj/.emacs.d

为什么要模块化?

方便管理各项配置,尤其是在自定义配置和插件越来越多的时候,模块化将会让你的配置保持条理性,并且更易于扩展。

我的emacs配置文件模块化结构

以下是~/.emacs.d/目录下的文件结构:

|-- init.el   # 全局入口配置文件
|-- local-lisp  # 本地化配置文件
|   |-- init-quick-access-local.el
|-- site-lisp  # 通用配置文件
    |-- config  # 详细配置
    |   |-- init
    |   |   |-- common  # 基本配置
    |   |   |   |-- init-better-default.el
    |   |   |   |-- init-dired.el
    |   |   |   |-- init-key-binding.el
    |   |   |   |-- init-my-function.el
    |   |   |   |-- init-network.el
    |   |   |   |-- init-package.el
    |   |   |   |-- init-quick-access.el
    |   |   |   |-- init-theme.el
    |   |   |   |-- init-ui.el
    |   |   |   |-- ...
    |   |   |-- plugin  # 各种插件初始化配置
    |   |       |-- init-auto-save.el
    |   |       |-- init-company-mode.el
    |   |       |-- init-helm.el
    |   |       |-- init-insert-translated-name.el
    |   |       |-- init-org-mode.el
    |   |       |-- init-org-pomodoro.el
    |   |       |-- init-virtualenvwrapper.el
    |   |       |-- init-watch-other-window.el
    |   |       |-- init-youdao-dictionary.el
    |   |       |-- ...
    |   |-- init-config.el  # 通用配置初始化入口
    |   |-- template.el  # 配置文件模板
    |-- extension  # 插件目录
        |-- auto-save  # 自动保存插件
        |   |-- auto-save.el
        |-- youdao-dictionary-20180714.414  # 有道词典插件
            |-- youdao-dictionary-autoloads.el
            |-- youdao-dictionary-pkg.el
            |-- youdao-dictionary.el
            |-- youdao-dictionary.elc
        |-- ...

关键配置文件说明

  • ~/.emacs.d/init.el文件:
;;;;;;;;;; .emacs.d全局配置文件入口 ;;;;;;;;;;
(package-initialize)

;; 递归遍历加载路径,将这些路径加入到加载列表中
(defun add-subdirs-to-load-path(dir)
  "Recursive add directories to `load-path`"
  (let ((default-directory (file-name-as-directory dir)))
    (add-to-list 'load-path dir)
    (normal-top-level-add-subdirs-to-load-path)))

;; 递归加载~/.emacs.d/site-lisp目录
(add-subdirs-to-load-path "~/.emacs.d/site-lisp/")
;; 递归加载~/.emacs.d/local-lisp目录
(add-subdirs-to-load-path "~/.emacs.d/local-lisp/")

;; 本地化快速访问配置
(require 'init-quick-access-local)
;; 加载init-config模块
(require 'init-config)
  • ~/.emacs.d/site-lisp/config/init-config.el文件:
;;;;;;;;;; 包加载入口 ;;;;;;;;;; 
;;;; common start:通用设置
;; 更好的默认设置
(require 'init-better-default)
;; 加载dired模式的自定义配置
(require 'init-dired)
;; 按键绑定
(require 'init-key-binding)
;; 自定义函数
(require 'init-my-function)
;; 网络配置
(require 'init-network)
;; 加载包
(require 'init-package)
;; 快速访问按键配置
(require 'init-quick-access)
;; 主题设置
(require 'init-theme)
;; 界面外观设置
(require 'init-ui)
;;;; common end 

;;;; plugin start:插件初始化设置
;; 自动保存插件
(require 'init-auto-save)
;; 加载company-mode的自定义配置
(require 'init-company-mode)
;; helm插件配置
(require 'init-helm)
;; 写代码中-英文翻译辅助插件
(require 'init-insert-translated-name)
;; org-mode配置
(require 'init-org-mode)
;; org-pomodoro插件配置
(require 'init-org-pomodoro)
;; virtualenvwrapper虚拟化环境配置
(require 'init-virtualenvwrapper)
;; 滚动另一个窗口插件配置
(require 'init-watch-other-window)
;; 有道词典配置
(require 'init-youdao-dictionary)
;;;; plugin end

;; 提供init-config模块
(provide 'init-config)
  • ~/.emacs.d/site-lisp/config/template.el文件:
;;;;;;;;;; xxx模块 ;;;;;;;;;;
;;;; Desc:

;;;; xxx start here
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Require:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Code:



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Provide:
(provide 'xxx)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; xxx end here

你可能感兴趣的:(Emacs入坑之旅——配置文件模块化)