是否有emacs命令打开描述当前主要模式的文件?在运行中编辑语法高亮和缩进会很有用。
答案 0 :(得分:6)
(find-library (file-name-sans-extension (symbol-file major-mode)))
将打开定义当前主模式的文件。字面上回答了你的问题。
但是,您不应该“动态”编辑此文件。 Emacs中的自定义不是通过直接编辑库源来实现的。而是在主模式挂钩或eval-after-load
块中执行代码。
答案 1 :(得分:2)
其他人可能会提供一些预定义的功能,它可以完全按照您的要求运行,但我不知道。你可以在没有太多麻烦的情况下建立自己的。
major-mode
绑定到定义当前主模式的符号(symbol-file major-mode)
将返回定义该符号然而,它有点复杂。最有可能的是,大多数主要模式都是从字节编译的elisp文件中加载的,因此您获取的路径将是您不想打开的.elc文件。您可以检测到并切断最终字符,但您还需要处理gzip压缩文件。幸运的是,Emacs可以透明地打开一个gzip压缩文件,所以下面这样的东西基本上可以工作。我输入并在一种或两种模式下检查它,但基本上认为它未经测试。
(defun load-major-mode-file ()
(interactive)
(let* ((loaded-file (symbol-file major-mode))
(root-el-file (if (string-match "\\.elc$" loaded-file) (substring loaded-file 0 -1) loaded-file)))
(if (file-exists-p root-el-file)
(find-file root-el-file)
(if (file-exists-p (concat root-el-file ".gz"))
(find-file (concat root-el-file ".gz"))
(message "couldn't open major-mode file.")))))