将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-variable设置mg-auto-insert-style,没关系。但我想根据当前缓冲区的文件路径自动设置变量。因此,如果我打开一个缓冲区或访问〜/ projects / project-a中的新文件,mg-auto-insert-style应该是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-auto-insert-style。后来,没有问题......
你有什么想法吗?
cu,Markus