Spec-Zone.ru › Elisp

Управление активными раскладками клавиш

Переменная: global-map

Эта переменная содержит стандартную глобальную раскладку клавиш, которая сопоставляет ввод с клавиатуры Emacs с командами. Глобальная раскладка обычно используется. Стандартная глобальная раскладка — это полная раскладка, которая привязывает self-insert-command ко всем печатным символам.

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

Функция: current-global-map

Эта функция возвращает текущую глобальную раскладку клавиш. Это то же самое, что и значение global-map, если вы не измените одно из них. Возвращаемое значение — ссылка, а не копия; если вы используете define-key или другие функции с ней, вы измените глобальные привязки.

(current-global-map)
⇒ (keymap [set-mark-command beginning-of-line …
            delete-backward-char])
Функция: current-local-map

Эта функция возвращает локальную раскладку клавиш текущего буфера или nil, если таковой нет. В следующем примере раскладка клавиш для буфера *scratch* (используя режим взаимодействия с Lisp) — это разреженная раскладка, в которой запись для ESC, код ASCII 27, — это другая разреженная раскладка.

(current-local-map)
⇒ (keymap
    (10 . eval-print-last-sexp)
    (9 . lisp-indent-line)
    (127 . backward-delete-char-untabify)
    (27 keymap
        (24 . eval-defun)
        (17 . indent-sexp)))

current-local-map возвращает ссылку на локальную раскладку, а не копию; если вы используете define-key или другие функции с ней, вы измените локальные привязки.

Функция: current-minor-mode-maps

Эта функция возвращает список раскладок клавиш активных в данный момент дополнительных режимов.

Функция: use-global-map keymap

Эта функция делает keymap новой текущей глобальной раскладкой клавиш. Она возвращает nil.

Очень необычно менять глобальную раскладку.

Функция: use-local-map keymap

Эта функция делает keymap новой локальной раскладкой клавиш текущего буфера. Если keymap равно nil, то у буфера нет локальной раскладки. use-local-map возвращает nil. Большинство команд основных режимов используют эту функцию.

Переменная: minor-mode-map-alist

Эта переменная представляет собой список, описывающий раскладки клавиш, которые могут быть или не быть активными в зависимости от значений определенных переменных. Ее элементы выглядят так:

(variable . keymap)

Раскладка клавиш keymap активна, когда variable имеет значение, отличное от nil. Обычно variable — это переменная, которая включает или выключает дополнительный режим. См. Раскладки клавиш и дополнительные режимы.

Обратите внимание, что элементы minor-mode-map-alist не имеют той же структуры, что и элементы minor-mode-alist. Раскладка должна быть CDR элемента; список с раскладкой как вторым элементом не подойдет. CDR может быть либо раскладкой (списком), либо символом, чье определение функции является раскладкой.

Когда активны более одной раскладки клавиш дополнительного режима, приоритет имеет более ранняя раскладка в minor-mode-map-alist. Но вы должны спроектировать дополнительные режимы таким образом, чтобы они не мешали друг другу. Если вы сделаете это правильно, порядок не будет иметь значения.

См. Раскладки клавиш и дополнительные режимы для получения дополнительной информации об дополнительных режимах. Также см. minor-mode-key-binding (см. Функции для поиска клавиш).

Переменная: minor-mode-overriding-map-alist

Эта переменная позволяет основным режимам переопределять привязки клавиш для определенных дополнительных режимов. Элементы этого списка выглядят как элементы minor-mode-map-alist: (variable . keymap).

Если переменная появляется в качестве элемента minor-mode-overriding-map-alist, раскладка, указанная этим элементом, полностью заменяет любую раскладку, указанную для той же переменной в minor-mode-map-alist.

minor-mode-overriding-map-alist автоматически локальна для всех буферов.

Переменная: overriding-local-map

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

Переменная: overriding-terminal-local-map

Если отлична от nil, эта переменная содержит раскладку клавиш, используемую вместо overriding-local-map, локальной раскладки буфера, текстовых свойств или раскладок наложений, а также всех раскладок дополнительных режимов.

Эта переменная всегда локальна для текущего терминала и не может быть локальной для буфера. См. Несколько терминалов. Она используется для реализации режима поиска по частям.

Переменная: overriding-local-map-menu-flag

Если эта переменная отлична от nil, значение overriding-local-map или overriding-terminal-local-map может повлиять на отображение строки меню. Значение по умолчанию — nil, поэтому эти переменные раскладок не влияют на строку меню.

Обратите внимание, что эти две переменные раскладок влияют на выполнение последовательностей клавиш, вводимых через строку меню, даже если они не влияют на отображение строки меню. Таким образом, если вводится последовательность клавиш из строки меню, вы должны очистить переменные перед поиском и выполнением этой последовательности клавиш. Режимы, использующие эти переменные, обычно делают это; как правило, они реагируют на события, которые они не обрабатывают, «отменяя» их и выходя.

Переменная: special-event-map

Эта переменная содержит раскладку клавиш для специальных событий. Если тип события имеет привязку в этой раскладке, то он является специальным, и привязка для события выполняется непосредственно функцией read-event. См. Специальные события.

Переменная: emulation-mode-map-alists

Эта переменная содержит список списков раскладок клавиш, используемых для режимов эмуляции. Она предназначена для режимов или пакетов, использующих несколько раскладок клавиш дополнительных режимов. Каждый элемент — это список раскладок клавиш, имеющий тот же формат и смысл, что и minor-mode-map-alist, или символ с привязкой переменной, являющийся таким списком. Активные раскладки в каждом списке используются до minor-mode-map-alist и minor-mode-overriding-map-alist.

Функция: set-transient-map keymap &optional keep-pred on-exit

Эта функция добавляет keymap как временную раскладку клавиш, которая имеет приоритет над другими раскладками для одной (или нескольких) последующих клавиш.

Обычно keymap используется только один раз, для поиска следующей клавиши. Если необязательный аргумент keep-pred равен t, раскладка остается активной до тех пор, пока пользователь вводит клавиши, определенные в keymap; когда пользователь вводит клавишу, которая не находится в keymap, временная раскладка деактивируется, и нормальный поиск клавиш продолжается для этой клавиши.

Аргумент keep-pred также может быть функцией. В этом случае функция вызывается без аргументов перед выполнением каждой команды, пока keymap активна; она должна возвращать значение, отличное от nil, если keymap должна оставаться активной.

Необязательный аргумент on-exit, если он отличен от nil, задает функцию, которая вызывается без аргументов после деактивации keymap.

Эта функция работает путем добавления и удаления keymap из переменной overriding-terminal-local-map, которая имеет приоритет над всеми другими активными раскладками (см. Поиск раскладок клавиш).

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Controlling-Active-Maps.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API