美文网首页emacs
Emacs入坑之旅——配置文件模块化

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

作者: m2fox | 来源:发表于2018-10-08 23:42 被阅读0次

    我的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入坑之旅——配置文件模块化

        本文链接:https://www.haomeiwen.com/subject/jcysaftx.html