Присвоение переменных
Самым легким способом настройки является изменение значений переменных в 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. Она выполнит перенос слов.