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

Как  и всякая программа на Лиспе,  Emacs использует много лисповских переменных для хранения внутренних записей. Но большинство переменных, которые представляют для вас интерес, — это те,  что существуют ради настройки.  Emacs (обычно) не меняет значения этих переменных,  вместо этого вы сами устанавливаете значения, тем самым изменяя и управляя поведением некоторых команд Emacs. Эти переменные называются пользовательскими параметрами. Большинство параметров описаны в этом руководстве и приведены в указателе переменных (см. [Указатель переменных], с. 459).

Примером переменной, являющейся пользовательским параметром, служит  fillcolumn; она определяет позицию правого края (как число знаков от левого края), которая используется командами заполнения (см. Раздел 21.5 [Заполнение], с. 185).

31.2.1  Просмотр и установка переменных

C-h v пер hRETi

Показывает значение переменной пер и  документацию по  ней (describevariable).

M-x set-variable hRETпер hRETзначение hRETi

Изменяет значение переменной пер на значение.

Чтобы  посмотреть  значение отдельной переменной, используется команда  C-h v (describe-variable), которая считывает в минибуфере имя переменной с возможностью завершения.  Эта  команда печатает и  значение переменной,  и  документацию по ней. Например,

C-h v fill-column  hRETi

выведет примерно следующее:

fill-column’s value  is 75

Documentation:

*Column beyond which automatic line-wrapping  should  happen. Automatically  becomes  buffer-local when set  in any fashion.

Звездочка в начале описания показывает,  что эта переменная является пользовательским параметром. C-h v не ограничивается  только пользовательскими параметрами, она принимает имя любой переменной.

Наиболее   удобный  способ установить  конкретный   параметр  —  выполнить  M-x set-variable.     Эта  команда считывает имя  переменной с  помощью минибуфера (с завершением), а  затем считывает лисповское выражение для нового значения, снова используя минибуфер. Например,

M-x set-variable hRETi  fill-column  hRETi  75 hRETi

устанавливает fill-column равной 75.

Действие M-x set-variable ограничено пользовательскими параметрами, но вы можете установить значение любой переменной с помощью выражения на языке Лисп, используя функцию setq.   Вот выражение для установки значения переменной fill-column  через setq:

(setq fill-column  75)

Чтобы выполнить выражение, подобное этому, переключитесь в буфер ‘*scratch*’, на-

берите выражение и затем нажмите C-j.  См. Раздел 23.9 [Диалог с Лиспом], с. 255.

Установка переменных влияет только на текущий сеанс Emacs, так же, как и все осталь-

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

31.2.2  Интерфейс для простой настройки

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

31.2.2.1  Группы настройки

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

Команда M-x customize создает буфер настройки, который показывает группу верхнего уровня Emacs и группы,  которые лежат  на уровень ниже.   Это выглядит примерно так, показана часть:

/Emacs  group:  ———————————-\

[State]: visible group members  are  all at  standard  settings. Customization of  the  One  True Editor.

See also  [Manual].

Editing group:  [Go to  Group] Basic  text editing facilities.

External group:  [Go to  Group] Interfacing  to  external utilities.

еще группы второго уровня

\Emacs  group end ——————————–/

Это означает, что буфер показывает  содержимое группы Emacs. Другие группы перечисле-

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

и тире, потому что их содержимое сюда не включено. Каждая группа имеет однострочное описание; у группы Emacs также есть строка ‘[State]’.

Большинство текста в буфере настройки находится в режиме только для чтения, но обычно в него включено несколько редактируемых полей, которые вы можете  изменять. Существуют также активные поля; это означает, что они делают что-то, когда вы активизируете их.  Для активизации активного поля либо щелкните на нем кнопкой Mouse-1, или установите на нем точку и нажмите hRETi.

Например, фраза ‘[Go to Group]’,  появляющая в группе  второго уровня, — активное поле. Активизация поля ‘[Go to Group]’ для группы создает новый буфер настройки, который показывает эту группу и ее содержимое.  Это поле является чем-то вроде гиперссылки на другую группу.

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

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

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

‘[+]’. Когда показывается содержимое группы, эта кнопка меняется на ‘[-]’; активизация этой кнопки прячет содержимое группы.

Имя каждой группы,  параметра или начертания в этом буфере имеет активное поле, в котором написано ‘[Group]’, ‘[Option]’  или ‘[Face]’.  При активизации этого активного поля создается обычный буфер  настройки, показывающий только эту группу  с ее содержимым, или только этот  параметр или только это начертание.  Таким  способом устанавливают значения.

31.2.2.2  Изменение параметра

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

метр:

Kill Ring Max: [Hide] 30

[State]: this option is unchanged from  its standard  setting. Maximum  length of  kill ring before  oldest elements  are  thrown  away.

Текст, следующий за ‘[Hide]’, — в нашем случае это ‘30’ — показывает текущее значение параметра.  Если вместо ‘[Hide]’ вы видите ‘[Show]’, то это означает, что значение скрыто; буфер настройки сначала скрывает значения, которые занимают несколько строк. Нажмите на ‘[Show]’, чтобы открыть значение.

Строка, следующая за именем параметра, показывает состояние настройки для данного параметра: в вышеприведенном  примере, она сообщает, что вы еще  не  изменили этот параметр. Слово ‘[State]’ в начале строки является активным; вы можете получить меню разных операций, нажав на ней Mouse-1 или hRETi. Эти операции являются существенными для настройки переменной.

Строка после строки ‘[State]’ показывает начало описания данного параметра. Если документация занимает несколько строк, то эта строка оканчивается кнопкой ‘[More]’; вы можете выбрать ее для того, чтобы посмотреть  более полное описание.

Для того чтобы ввести новое значение для ‘Kill Ring Max’, переместите точку к значению и отредактируйте его как обычный текст. Например, вы можете набрать M-d и ввести затем другое число.

Когда вы начинаете редактировать текст, вы увидите, что строка ‘[State]’ изменилась,

сообщая, что вы поменяли значение:

[State]: you have edited the  value  as text, but  not  set  the  option.

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

‘[State]’ и выберите ‘Set for Current  Session’.

Когда вы установите параметр, его состояние визуально изменится:

[State]: you have set  this option, but  not  saved it for future sessions.

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

При редактировании  значения поля, которое является именем файла, каталога, команды или чем-нибудь еще,  для чего определено завершение,  вы можете  нажимать M-hTABi (widget-complete), чтобы произвести завершение.

Некоторые параметры имеют небольшой фиксированный  набор возможных значений. Эти параметры  не позволяют  вам редактировать значения как текст. Вместо этого перед значением появляется активное поле ‘[Value Menu]’; активизируйте это поле для изменения значения. Для логического значения “вкл/выкл” активное поле показывает надпись

‘[Toggle]’, и оно переключает это значение. ‘[Value Menu]’ и ‘[Toggle]’ изменяют буфер;

изменения вступают в силу, когда вы используете операцию ‘Set for Current  Session’.

Некоторые параметры имеют значения со сложной структурой.   Например, значение переменной load-path является списком каталогов. Здесь показано, как оно изображается в буфере настройки:

Load Path:

[INS] [DEL]  [Current dir?]: /usr/local/share/emacs/20.3/site-lisp

[INS] [DEL]  [Current dir?]: /usr/local/share/emacs/site-lisp [INS] [DEL]  [Current dir?]: /usr/local/share/emacs/20.3/leim [INS] [DEL]  [Current dir?]: /usr/local/share/emacs/20.3/lisp [INS] [DEL]  [Current dir?]: /build/emacs/e20/lisp

[INS] [DEL]  [Current dir?]: /build/emacs/e20/lisp/gnus

[INS]

[State]: this item  has been changed outside the  customization buffer. List of  directories to  search  for files to  load….

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

Вы можете  изменять любое из имен каталогов.  Для того чтобы удалить каталог из списка, выберите кнопку ‘[DEL]’  в его строке.  Для того чтобы вставить в список новый каталог, выберите кнопку ‘[INS]’ в той точке, куда вы хотите вставить имя.

Вы также можете выбрать поле ‘[Current dir?]’, чтобы переключиться между включением в путь конкретного указанного каталога или значения nil.   (nil  в пути  поиска означает “попробовать текущий каталог”).

Две специальные команды, hTABi  и S-hTABi,  полезны для перемещения по буферу настройки. hTAB(widget-forward) перемещает вперед на следующее активное или редактируемое поле; S-hTAB(widget-backward) перемещает в обратном направлении на предыдущее активное или редактируемое поле.

Нажимая hRETi  на редактируемом  поле, вы также  перемещаетесь на следующее поле, аналогично действию hTABi. Причина этого заключается в том, что люди часто нажимают hRETi  по завершении редактирования поля. Если вам понадобится вставить в редактируемое поле перевод строки, используйте C-o или C-q C-j.

Установка параметра изменяет его значение в текущем сеансе Emacs; сохранение зна-

чения изменяет его и для будущих сеансов.  Это работает путем записи кода в ваш файл

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

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

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

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