Вперед Назад Содержание

6. "Грязные" приемы

6.1 Вставка заголовка автоматически

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.


Вперед Назад Содержание