Используя 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....
Я могу установить mg-auto-insert-стиль с Mx set-variable, это нормально.Но я хотел бы автоматически установить переменную в зависимости от пути к файлу для текущего буфера.Поэтому, если я открою буфер или зайду в новый файл в ~ / 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 не привязывается, когда автоматическая вставка завершена.Позже проблем нет ...
У вас есть идея?
у.е., Маркус