Emacs 在动态/按上下文自动插入之间切换

Emacs 在动态/按上下文自动插入之间切换,emacs,lisp,elisp,Emacs,Lisp,Elisp,将emacs用于从遗留到当前的多个项目,我必须使用多个约定,例如注释或文件头。例如,我用这个函数插入C++文件的文件头: (defun mg-c-file-header() "Inserts a c/c++ file header" (if (boundp 'mg-auto-insert-style) (case mg-auto-insert-style (project-a (insert " * @file "(file-name-nondi

将emacs用于从遗留到当前的多个项目,我必须使用多个约定,例如注释或文件头。例如,我用这个函数插入C++文件的文件头:

(defun mg-c-file-header()
  "Inserts a c/c++ file header"
  (if (boundp 'mg-auto-insert-style)
      (case mg-auto-insert-style
    (project-a
     (insert
      " * @file "(file-name-nondirectory buffer-file-name)"\n"
      " * \n"
      " * (c) 2000 - "( format-time-string "%Y" )" by someone\n"))
    (project-b
     (insert "/** another header*/\n"))
    (otherwise (message "Meh.")))))
在这种情况下,我称此函数为:

(setq auto-insert-alist
      '(
        (("\\.\\([C]\\|cc\\|cpp\\)\\'" . "C++ Program")
         nil
         ( mg-c-file-header )
         "// --- includes --- \n"
;; and do on....
我可以用M-x set变量设置mg自动插入样式,没关系。但是我想根据当前缓冲区的文件路径自动设置变量。所以,如果我在~/projects/project-a中打开一个缓冲区或访问一个新文件,mg自动插入样式应该是project-a

这会起作用,但并不完美:

(ede-cpp-root-project "project-a"
 :file "~/projects/project-a/trunk/src/Makefile"
 :local-variables (list
   (cons 'mg-auto-insert-style 'project-a )))
如果我创建一个新文件,自动插入完成后,mg自动插入样式不会绑定。以后,没问题了

你有什么想法吗


cu,Markus

我使用自动插入包以及不同的模板来实现这一点。参见示例(+)

参见库和此Emacs wiki页面:。您可以根据需要配置头。

也许我理解您的建议是错误的,但在我看来,当headers2或自动文件头启动时已经太晚了。。。headers2是否可以根据(例如)与新文件位于同一目录中的配置文件或创建文件的目录来创建头文件?