Emacs позволяет вам перехватить некоторые действия на любые события (открытие файла, сохранение, запуск в новом режиме и т.п.).
Библиотека autoinsert использует это свойство: когда вы открываете новый файл в Emacs, эта библиотека вставляет, соответственно типу файла некоторый стандартный заголовок.
В нашем случае этот стандартный заголовок, может содержать объявления типа документа (LinuxDoc), заголовок самого документа, имя автора, и дату.
Я здесь опишу два способа для вставки таких заголовков. Вы можете вставить файл шаблона, который содержит вставляемую информацию, или вы можете запустить процедуру на elisp.
Вы должны сначала заставить Emacs запустить auto-insert
при
открытии файла, затем считать библиотеку autoinsert, которая
объявляет список auto-insert-alist
, который необходимо
изменить. Этот список определяет вставляемые заголовки для каждого типа
файлов. По умолчанию, вставляемый файл должен находиться в директории
~/insert/
, но можно переопределить переменную
auto-insert-directory
, если вы хотите поместить заголовки в
другое место.
Добавьте следующие строки в ваш фал .emacs
для вставки файла
~/emacs/sgml-insert.sgml
при каждом открытии нового файла SGML:
(add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (setq auto-insert-directory "~/emacs/") (setq auto-insert-alist (append '((sgml-mode . "sgml-insert.sgml")) auto-insert-alist))
Затем вы можете написать файл ~/emacs/sgml-insert.sgml
тот
заголовок, который вам необходим, затем перезапустить Emacs и открыть
какой-нибудь новый файл (например foobar.sgml
). Emacs должен
спросить у вас подтверждение автоматической вставки заголовка, и если вы
ответите утвердительно, то он вставит заголовок.
Этот метод работает почти как предыдущий, но вместо установки указателя
auto-insert-alist
на вставляемый файл, вам необходимо указать
какую процедуру надо выполнить. Теперь как это работает, допуская, что
вы хотите записать эту функцию в файл, названный
~/emacs/sgml-header.el
. (нет необходимости перегружать ваш файл
.emacs
такими функциями, поскольку они могут долго не использоваться):
(add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (add-to-list 'load-path "~/emacs") (load-library "sgml-header") (setq auto-insert-alist (append '(((sgml-mode . "SGML Mode") . insert-sgml-header)) auto-insert-alist))
Вы найдете в разделе
appendix
пример функции insert-sgml-header
.