Более серьезные настройки в редакторе Emacs осуществляются через написание процедур на языке LISP. Например, чтобы присвоить какой-либо клавише выполнение определенной команды, нужно вставить в конфигурационный файл строку, написанную на LISPе.
В языке программирования LISP, также как и в C, все определяется через функции. Можно использовать свои собственные функции, или библиотеки функций, написанных другими пользователями, - пакеты, чтобы настроить работу Emacs. PSGML - пакет, разработанный на LISPе. Однако, прежде, чем устанавливать PSGML, разберемся с более простыми случаями установки LISP-функций.
Все LISP-функции запускаются из файла .emacs.
ПРИМЕЧАНИЕ: Поскольку DOS не поддерживает длинные имена файлов, то версии Emacs под DOS и 16-bit MS Windows используют для автоматического запуска функций файл с именем _emacs.
Поначалу синтаксис новых функций, помещаемых в файл .emacs можно копировать у уже существующих функций, заменяя нужные места в названиях и командах. Поясним это на примере. Команда goto-line вызывается при нажатии комбинации M-g. Соответствующая функция в файле .emacs выглядит следующим образом:
| (global-set-key "\eg" 'goto-line) ; M-g prompts for line number to enter |
Обычно команда goto-line не имеет комбинации клавиш, поэтому в таком редакторе нужно сначала нажать M-x, а затем из командной строки запустить команду goto-line. У программистов и пользователей SGML часто возникает необходимость перейти в строку с определенным номером, поэтому целесообразно вместо команды использовать комбинацию клавиш.
Если комбинация M-g не определена, то добавьте приведенную выше строку в файл .emacs, сохраните файл и перезапустите Emacs. Теперь при нажатии M-g в окне минибуфера появится сообщение:
| Goto line: |
После ввода номера строки редактор перейдет в указанную строку.
Другая популярная команда многих текстовых процессоров - overwrite-mode, которая переключает режим ввода текста между insert (Вставка) и replace (Забой). Пользователь, работающий с текстом скорее всего предпочтет работать в режиме вставки, чем каждый раз для перевода в режим Забоя вводить четырнадцатибуквенную команду. Целесообразно отредактировать файл .emacs, добавив в него строку, присваивающую комбинации M-i выполнение команды overwrite-mode. Воспользуемся в качестве заготовки строкой, определяющей комбинацию M-g.
| (global-set-key "\ei" 'overwrite-mode) ; toggle overwrite mode |
| (global-set-key "^T" 'kill-word) ; enter ^T here with C-q C-t |