Разнообразные команды – ЧАСТЬ 9

‘~/.emacs’,  так  что значения параметров будут устанавливаться каждый раз, когда вы

запускаете Emacs. Для того чтобы сохранить параметр, активизируйте кнопку ‘[State]’

и выберите операцию ‘Save for Future Sessions’.

Вы также можете восстановить стандартные значения параметров, активизируя кнопку

‘[State]’ и выбирая операцию ‘Reset to Standard Settings’.  В действительности суще-

ствует три стандартных операции восстановления:

‘Reset’       Если вы внесли некоторые  изменения и не установили  параметр, то эта операция восстанавливает текст буфера настройки, чтобы он соответствал текущему значению.

‘Reset to Saved’

Эта операция восстанавливает значение параметра в последнее  сохраненное значение и соответственно обновляет текст.

‘Reset to Standard Settings’

Эта операция устанавливает параметр в его стандартное значение и соответственно обновляет текст.  Эта операция также уничтожает любое сохраненное значение для данного параметра, так что в будущих сеансах работы с Emacs вы будете получать стандартное значение.

Состояние группы показывает, было ли что-нибудь в этой группе  изменено, установлено или сохранено. Вы можете  выбрать операции ‘Set for Current  Session’,  ‘Save for Future Sessions’  и различные виды операции ‘Reset’ для данной группы;  эти операции над группой применяются сразу ко всем настройкам в группе и ее подгруппах.

В начале  буфера настройки находятся две строки,  содержащие  несколько активных полей:

[Set  for Current  Session]  [Save for Future  Sessions]

[Reset] [Reset  to  Saved] [Reset  to  Standard]     [Bury  Buffer]

Активизация кнопки ‘[Bury  Buffer]’ скрывает буфер настройки.  Каждое из остальных полей выполняет операции — установку, сохранение или восстановление — над каждым из пунктов в буфере, которые могут быть установлены, сохранены или восстановлены.

31.2.2.3  Настройка начертаний

Помимо пользовательских параметров, некоторые группы настройки также включают в себя  начертания.  Когда  вы просматриваете  содержимое группы,  в буфере  настройки показываются и пользовательские параметры, и начертания из этой группы.  Начертание может выглядеть так:

Custom Changed  Face:  (sample)

[State]: this face  is unchanged from  its standard  setting. Face used when the  customize  item  has been changed. Attributes:  [ ] Bold:   [toggle] off

[X] Italic:  [toggle] on

[ ] Underline: [toggle]  off

[ ] Inverse-Video: [toggle]  on [ ] Foreground:  black  (sample) [ ] Background:  white  (sample) [ ] Stipple:

Каждый атрибут начертания располагается на отдельной строке. Поле ‘[x]’ перед именем атрибута показывает, включен ли этот атрибут; знак ‘X’ обозначает, что включен. Вы можете включать или выключать атрибут, выбирая данное поле. Когда атрибут включен, вы можете изменить его значение обычными способами.

На черно-белом дисплее вам доступны для использования в качестве фона следующие цвета: ‘black’, ‘white’, ‘gray’,  ‘gray1’ и ‘gray3’.  Emacs поддерживает эти оттенки серого, используя вместо цвета штрихование  фона с помощью масок.

Установка, сохранение и сброс начертания работает точно также, как и с пользователь-

скими параметрами (см. Раздел 31.2.2.2 [Изменение параметра], с. 345).

Начертание может задавать разный вид для разных типов дисплеев. Например, начертание может сделать текст красным на цветном дисплее, а на монохромном отображать этот текст жирным шрифтом. Для того чтобы указать разный вид для данного начертания, выберите пункт ‘Show Display Types’ из меню, которое появляется при выборе кнопки

‘[State]’.

Другой, более общий способ установить атрибуты заданного начертания — использовать команду M-x modify-face. Эта команда считывает имя начертания и атрибуты, один за другим.  Для атрибутов, задающих цвета и маски, текущим значением атрибута будет значение по умолчанию — просто нажмите  hRETi,  если вы не хотите  изменять этот атрибут. Наберите ‘none’ в том случае, когда вы хотите очистить данный атрибут.

31.2.2.4  Настройка отдельных пунктов

Вместо того  чтобы находить параметр, который  вы хотите  изменить, перемещаясь сквозь дерево групп, вы можете указать, какой конкретно параметр, начертание или группу вы хотите настроить.

M-x customize-option hRETпараметр hRETi

Создать буфер настройки только для одного параметра.

M-x customize-face hRETначертание hRETi

Создать буфер настройки только для одного начертания.

M-x customize-group hRETгруппа hRETi

Создать буфер настройки только для одной группы.

M-x customize-apropos hRETi regexp hRETi

Создать буфер настройки для всех параметров, начертаний и групп, которые соответствуют regexp.

M-x customize-changed-options hRETверсия hRETi

Создать буфер настройки для всех параметров, начертаний и групп, чей смысл изменился начиная с указанной версии Emacs.

M-x customize-saved

Создать буфер настройки, содержащий  все параметры  и начертания, которые вы сохранили с помощью буферов настройки.

M-x customize-customized

Создать буфер настройки, содержащий  все параметры  и начертания, которые вы изменили, но не сохранили.

Если вы хотите изменить конкретный пользовательский параметр с помощью буфера настройки, и вы знаете его имя, то вы можете использовать команду M-x customize-option и указать имя этого параметра. Это создает буфер настройки только для одного параметра

— для того, который вы запросили. Изменение, установка и сохранение значения работает точно так же, как описано выше, но только для указанного параметра.

Таким же образом вы можете изменить параметры конкретного начертания, выбранного по имени. Для этого используйте команду M-x customize-face.

Вы также можете создать буфер настройки для отдельной группы, используя команду

M-x customize-group.  В этом буфере появится непосредственное содержимое  выбранной

группы,  в том числе переменные-параметры,  начертания и другие группы.   Однако содержимое подгрупп изначально будет скрыто.   Вы можете  просмотреть их содержимое обычным способом, выбрав кнопку ‘[Show]’.

Для более точного указания того, что вы хотите  настроить, вы можете  использовать команду M-x customize-apropos.   В качестве аргумента вы указываете регулярное выражение; затем в созданном  буфере настройки отображаются все параметры, начертания и группы, чьи имена удовлетворяют этому регулярного выражению. Если вы укажете пустое регулярное выражение, то буфер настройки будет включать все группы, параметры и начертания (но это займет длительное время).

Когда вы устанавливаете новую версию Emacs, вы можете захотеть настроить новые параметры, а также те параметры, чей смысл или значения по умолчанию были изменены. Чтобы сделать это, воспользуйтесь командой M-x customize-changed-options и укажите в минибуфере номер предыдущей версии Emacs. Эта команда создаст  буфер настройки, который покажет вам все параметры (и группы), чье определение изменилось по сравнению с указанной версией.

Если вы изменили значения параметров и затем решили, что сделали  это по ошибке,  то у вас есть две специальные команды для того, чтобы пересмотреть предыдущие изменения. Используйте команду customize-saved,  чтобы посмотреть на параметры и начертания, которые вы уже сохранили. А команду M-x customize-customized используйте для того, чтобы посмотреть на параметры и начертания, которые вы установили, но еще не сохранили.

31.2.3  Ловушки

Ловушки — это важный механизм настройки Emacs. Ловушкой называют лисповскую переменную, содержащую список функций, которые вызываются в некоторой определенной ситуации. (Это называется запуском ловушки.) Отдельные функции в этом списке называются функциями этой ловушки. За редкими исключениями, сразу после запуска ловушки в Emacs пустые, так что все функции в любой ловушке — это явно помещенные туда вами для настройки.

Большинство основных режимов запускают на последнем этапе  инициализации  одну или более ловушек  режима. Это облегчает настройку поведения режима путем перекрытия локальных переменных,  значения которых  уже  были присвоены данным режимом.  Но ловушки также  используются в других  контекстах.   Например, ловушка suspend-hook запускается непосредственно  перед тем, как  Emacs приостанавливает свою работу см. Раздел 3.1 [Выход из Emacs], с. 33).

Большинство ловушек в Emacs являются нормальными ловушками. Это означает, что запуск такой ловушки действует путем безусловного  вызова всех ее функций без аргументов.  Мы старались сохранить большую часть ловушек нормальными, чтобы вы могли использовать их одним и тем же способом.  Каждая переменная в Emacs, чье имя оканчивается на ‘-hook’, является нормальной ловушкой.

Также  есть несколько аномальных ловушек.  Имена этих переменных оканчиваются на ‘-hooks’  или ‘-functions’, а не на ‘-hook’.   Аномальность этих ловушек заключается в том, что их функции вызываются с какой-то особенностью  — возможно, им передаются аргументы, а может возвращаемое  ими значение как-то  используется. Например, find-file-not-found-hooks (см. Раздел 14.2 [Обращение], с. 106) — аномальная ловушка, потому что как только одна из ее функций возвращает отличное от nil значение, остальные функции не вызываются совсем. В документации на каждую аномальную ловушку подробно описано, в чем состоит ее особенность.

Для добавления функции к ловушке (как нормальной, так и аномальной) рекомендуется вызывать функцию add-hook. Вы можете использовать любую правильную функцию языка Лисп как функцию ловушки, при условии, что она может обработать правильное число

аргументов (нуль в случае нормальной ловушки). Конечно, не всякая лисповская функция

полезна в каждой конкретной ловушке.

Например, вот как установить ловушку для включения режима Auto Fill  при входе в режим Text и в другие режимы, основанные на режиме Text:

(add-hook  ’text-mode-hook ’turn-on-auto-fill)

Следующий  пример показывает, как  использовать  ловушки для настройки отступов в программах на Си.   (Люди  часто отдают строгое предпочтение одному формату  по сравнению с другим).  Приводимая  здесь функция ловушки является анонимным лямбдавыражением.

(setq my-c-style

’((c-comment-only-line-offset . 4)

(c-cleanup-list  .  (scope-operator empty-defun-braces

defun-close-semi))

(c-offsets-alist . ((arglist-close . c-lineup-arglist) (substatement-open . 0)))))

(add-hook  ’c-mode-common-hook

(function (lambda ()

(c-add-style  "my-style" my-c-style t))))

Лучше всего проектировать функции ловушек таким образом, чтобы порядок выполнения не играл роли. Создавать любую зависимость от порядка вызова — “напрашиваться на проблемы”.  Однако, порядок предсказуем: функции, добавленные последними,  выполняются первыми.

Источник: Ричард Столмен, Руководство по GNU Emacs

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий