Вся настройка Emacs выполняется через код на Lisp. Вы можете
изменять переменные, которые влияют на то, каким образом работает
Emacs или вы можете добавить новую функцию к Emacs (или
переопределить существующие функции--заменяя их на свои собственные.
Во время экспериментов с настройкой Emacs вы вероятно захотите
сделать ее на некоторое время. Если что-то пойдет неправильно, то
вы сможете просто нажать на C-x C-c для выхода из emacs и
запустить его и запустить его снова. После того как вы определите,
какие изменения вы хотите сделать постоянными, вы можете добавить
их в ваш файл .emacs , так что они будут действовать каждый
раз при старте Emacs. Это обсуждается в следующем разделе.
Присвоение переменных
Самым легким способом настройки является изменение значений
переменных в Emacs. Для того, чтобы сделать это используется
примерно такой код:
(setq variable-name new-value)
Где variable-name это имя переменной, а
new-value это значение, которое вы хотите задать для
этой переменной. (В Lisp, вы связываете переменную и
значение). Функция setq в lisp аналогична
оператору присваивания (обычно = ) в других языках
программирования.
Замечание: Я рассказываю без многих деталей ради
упрощения. Вы также можете указать мне или другим на
использования функций Lisp set и даже
setq-default . Если вы действительно любознательны, то вы
можете посмотреть их описание в руководстве по Emacs Lisp.
Давайте глянем на строку из моего файла .emacs
(setq-default transient-mark-mode t)
Переменная transient-mark-mode контролирует должна ли
подсвечиваться область при ее выделении. Во многих приложениях с
графическим интерфейсом пользователя, если вы щелкнете кнопкой
мыши и сделаете протягивание для выделения текста, то он будет
выделен цветом или инверсией. Emacs будет работать так же, если
переменная transient-mark-mode будет установлена (в
не-nil значение).
Что такое значение?
Ok. Немного отвлечемся. Большинство языков программирования
имеют некоторое понятие о значениях true/false (истина/ложь). В
C/C++ значение считается истинным, если оно имеет ненулевое
значение. В Perl, не-null или ненулевое значение считается
истинным. В Lisp, применяются те же идеи, но имена и символы
отличаются.
Истина обычно записывается как t , а ложь (или null)
записывается как nil . Подобно другим языкам, не-nill
значения считаются истиной.
Для получения полного описания того, что делает
transient-mark-mode , вы можете использовать оперативную
справку. Наберите C-h v или M-x
describe-variable , затем transient-mark-mode . Если
вы ленивы, как и я, то вы можете воспользоваться дополнением
имени переменной с помощью кнопки Tab . Просто наберите
часть имени переменной и нажмите клавишу Tab . Если вы
набрали недостаточно для уникальной идентификации имени, то вы
можете увидеть все возможные варианты дополнений.
Другой часто используемой переменной является
fill-column . Она сообщает Emacs насколько широким должен
быть экран для переноса слов (и auto-fill-mode
использует это значение). Для установки этой переменной в
какое-нибудь значение вы можете набрать:
(setq fill-column 20)
Но оно в действительности ничего не делает. Вам необходимо
сказать Emacs чтобы он вычислил (evaluate) выражение,
которое вы набрали. Чтобы сделать это поместите точку (курсор) в
конец выражения и наберите сочетание C-x C-e , что
вызовет функцию eval-last-sexp . Когда вы сделаете это
заметьте, что число 20 (или что вы набрали) отобразится
в мини-буфере внизу экрана. Это просто возвращенное при
вычислении значение.
Просто для проверки его работы наберите пару предложений. Если
у вас включен auto-fill-mode (он может быть и не
включен), то вы заметите, что слова переносятся на отметке 20
колонки. Иначе, после того как вы набрали некоторый текст,
нажмите M-q , что вызовет функцию
fill-paragraph . Она выполнит перенос слов.
Связывание с файлами
Вы можете настроить Emacs на автоматическое выполнение
чего-нибудь при открытии файлов с определенным типом (подобно как
многие графические среды автоматически запускают приложения если
вы щелкаете на значке определенного файла). Например, я хочу
чтобы Emacs автоматически переключался в text-mode при
открытии файлов с расширением .txt . Хорошо, это уже
происходит. :-) Теперь я хочу заставить Emacs всегда
переходить в text-mode при открытии файлов с именем
``README''.
(setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist))
Без погружения в дебри программирования на Lisp, которое знать
не обязательно (но будет не вредно его выучить), просто
указываем, что переменная auto-mode-alist содержит
список пар. Каждая пара содержит регулярное выражение и название
режима Emacs. Если открываемый файл соответствует указанному
выражению (в нашем случае это строка README ), то Emacs
переходит в указанный режим.
Странный синтаксис в приведенном примере используется потому,
что мы хотим добавить пару в список режимов. Вы не захотите
просто присвоить данные переменной auto-mode-alist с
потерей уже содержавшихся в ней данных.
И если я хочу, чтобы Emacs автоматически переключался в
html-helper-mode каждый раз, когда я открываю файл,
оканчивающийся на .html или .htm , то я должен
добавить следующие строки в мой файл .emacs:
(setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.htm$" . html-helper-mode) auto-mode-alist))
Существует бесконечное количество возможных значений.
После того, как вы провели некоторое время в работе с Emacs и
имеете идеи о том, что надо настроить, вы вероятно захотите
настроить некоторые вещи навсегда (или по крайней мере до тех пор,
пока вы не измените свою точку зрения). Если вы будете использовать
Emacs в каждодневной работе, то вы также заметите, что ваш файл
.emacs увеличивается со временем. Это Хорошо,
потому-что вы определили как заставить Emacs работать так, как
вы хотите. Для многих программ является позором, что они
позволяют сделать это.
В случае, если вы еще не догадались, Каждый раз при запуске
Emacs, он ищет файл с именем .emacs в вашем домашнем
каталоге. Ваш файл .emacs ---это место, куда вы должны
помещать код на Lisp, если хотите, чтобы он автоматически
выполнялся при запуске, а также файл включает в себя те настройки,
которые вы хотите использовать.
Вот другой пример из моего файла .emacs :
(setq inhibit-startup-message t)
Переменная inhibit-startup-message задает будет ли
показывать Emacs приветственное сообщение на старте, или нет. После
того как я насмотрелся на него (потому-что я уже знал как найти
помощь) я нашел способ отключить его.
Как упражнение попробуйте создать собственный файл
.emacs и добавить эту строку в него. Затем выйдите из
Emacs и запустите его снова. Вы не должны увидеть стартового сообщения.
Часто когда вы читаете о режиме Emacs (или о пакете), то
документация будет вам предлагать добавить некоторый код в ваш файл
.emacs для того, чтобы режим или пакет работали как надо.
GNU Emacs FAQ (C-h F ) содержит некоторые пункты,
относящиеся к файлам .emacs , которые вы можете найти
полезными.
После того как Emacs начал приобретать популярность и продолжал
развиваться, некоторые люди сказали ``должен быть лучший способ,
позволяющий начинающим пользователям настроить Emacs''. И родился
пакет customize .
Customize обеспечивает более интуитивный метод настройки частей
Emacs. Чтобы попробовать работать с ним, либо выберите подменю
Customize в вашем меню Help , или наберите M-x
customize .
Customize группирует настройки в логические группы
``Editing'', ``Programming'', ``Files'' и т.п. Некоторые группы
содержат подгруппы.
Если вы сделаете изменения, используя интерфейс настройки, то
Emacs сохранит изменения в ваш файл .emacs . Это намного
легче, потому-что вы можете легко изучать изменения, которые вы он
сделал для вас.
Я не использую пакет Customize так, что я не могу сказать о
нем больше..
Подобно всем нормальным X-приложениям, Emacs работает с вашими
X-ресурсами. Это означает, что вы можете контролировать начальные
цвета, геометрию и другие специфические для X вещи, также как и в
xterm , nxterm или чем-то другом.
Вот соответствующий кусок моего файла ~/.Xdefaults :
emacs*Background: DarkSlateGray
emacs*Foreground: Wheat
emacs*pointerColor: Orchid
emacs*cursorColor: Orchid
emacs*bitmapIcon: on
emacs*font: fixed
emacs.geometry: 80x25
Посмотрите справочную страницу X для более детального
описания X-ресурсов.
Chris Gray также заметил:
В Debian, файл ~/.Xdefaults кажется не используется. Однако
работающие в Debian могут поместить то, что вы хотите в
/etc/X11/Xresources/emacs и могут получить то, что они делали в
RedHat.
|