Spec-Zone.ru › Elisp

Создание ключевых отображений

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

Функция: make-sparse-keymap &optional prompt

Эта функция создает и возвращает новое разреженное ключевое отображение без записей. (Разреженное ключевое отображение — это обычно то, что вам нужно.) Новое ключевое отображение не содержит таблицы символов, в отличие от make-keymap, и не привязывает никаких событий.

(make-sparse-keymap)
    ⇒ (keymap)

Если вы укажете prompt, он станет общей строкой подсказки для ключевого отображения. Вы должны указать это только для ключевых отображений меню (см. Определение меню). Ключевое отображение с общей строкой подсказки всегда будет отображать меню мыши или клавиатуры, если оно активно для поиска следующего входного события. Не указывайте общую строку подсказки для основного отображения основного или дополнительного режима, потому что это заставит цикл команд отображать меню клавиатуры каждый раз.

Функция: make-keymap &optional prompt

Эта функция создает и возвращает новое полное ключевое отображение. Это ключевое отображение содержит таблицу символов (см. Таблицы символов) со слотами для всех символов без модификаторов. Новое ключевое отображение изначально привязывает все эти символы к nil, и не привязывает никакие другие типы событий. Аргумент prompt задает строку подсказки, как и в make-sparse-keymap.

(make-keymap)
    ⇒ (keymap #^[nil nil keymap nil nil nil …])

Полное ключевое отображение более эффективно, чем разреженное, когда оно содержит множество привязок; для небольшого количества привязок лучше использовать разреженное ключевое отображение.

Функция: copy-keymap keymap

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

(let ((map (make-sparse-keymap)))
  (set-keymap-parent map <theirmap>)
  (define-key map ...)
  ...)

При выполнении copy-keymap, все ключевые отображения, которые появляются непосредственно как привязки в keymap, также копируются рекурсивно, и так далее на любое количество уровней. Однако рекурсивное копирование не выполняется, когда определение символа является символом, чье определение функции является ключевым отображением; тот же символ появляется в новой копии.

(setq map (copy-keymap (current-local-map)))
⇒ (keymap
     ;; (This implements meta characters.)
     (27 keymap
         (83 . center-paragraph)
         (115 . center-line))
     (9 . tab-to-tab-stop))
(eq map (current-local-map))
    ⇒ nil
(equal map (current-local-map))
    ⇒ t

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/Creating-Keymaps.html

Spec-Zone.ru

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