我决定从头开始重写我的 .emacs,我想设置一些模块化的东西,以避免可怕的 1k+ LoC init.el 文件......

我认为每个配置都需要解决一些基本问题:

  • 全局选项
  • 编辑功能
  • 导航(帧和缓冲区)
  • 键绑定(bind)
  • 模式自定义

  • 虽然我仍在思考结构,但我正在寻找有关如何实现这一目标的一些指示。
    我在 github 上查看了一些 .emacs 等,似乎有不同的方法,并且没有首选的方法来解决这个问题,这有点令人困惑。
    我有兴趣阅读有关如何构建此类设置的一些想法,尤其是一些相关的 elisp 代码。

    编辑: catch 了事情,还没有太多时间玩这个。
    将在几天内尝试提出的方法,看看什么是最好的,同时感谢所有建议!

    edit2 :我一直在使用 literate init file with org-mode ,这绝对很棒!
    我还没有设置特定的加载机制,我一直在使用这段代码,递归加载我的 elisp 目录,然后 require 或任何设置说明。
      (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
      (let* ((my-lisp-dir "~/.emacs.d/elisp/")
      (default-directory my-lisp-dir))
      (setq load-path (cons my-lisp-dir load-path))
      (normal-top-level-add-subdirs-to-load-path)))
    

    我仍然需要完善这一点,也许使用自动加载,如果修改了一些技巧,则进行一些字节重新编译;很想听听这方面的建议。

    最佳答案

    我的 .emacs 文件加载了 ~/.emacs.d/init.el,它定义了以下函数,这些函数最初是为 XEmacs 编写的,但现在对于 Emacs 来说已经足够好了:

    (defconst user-init-dir
      (cond ((boundp 'user-emacs-directory)
             user-emacs-directory)
            ((boundp 'user-init-directory)
             user-init-directory)
            (t "~/.emacs.d/")))
    
    
    (defun load-user-file (file)
      (interactive "f")
      "Load a file in current user's configuration directory"
      (load-file (expand-file-name file user-init-dir)))
    

    然后文件的其余部分会加载许多具有如下形式的单个文件:
    (load-user-file "personal.el")
    

    我目前的文件集如下:
  • 个人.el
  • 平台.el
  • cygwin.el
  • variables.el
  • 路径.el
  • 邮件新闻.el
  • misc-funcs.el
  • bbdb.el
  • calendar.el
  • gnus-funcs.el
  • c-and-java.el
  • lisp.el
  • clojure.el
  • go.el
  • markdown.el
  • sgml-xml.el
  • tex.el
  • 拼写.el
  • org.el
  • 包.el
  • fonts.el
  • 颜色-theme.el
  • frame.el
  • server.el
  • key .el
  • aquamacs.el

  • 顾名思义,其中一些的意图比其他的要具体得多。文件粒度越细,在重新安装包或库时禁用表单集群就越容易。这在“移入”新系统时特别有用,您将配置文件拖到新系统上,但尚未安装所有支持包。

    关于configuration - 如何模块化 emacs 配置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2079095/

    10-14 14:17