В котором файле была определена привязка клавиш?

использовала следующую команду и установила

yum install java-1.8.0-openjdk-headless-1.8.0.191.b12-1.el7_6
6
задан Török Gábor 13 May 2009 в 20:34
поделиться

2 ответа

Информация о том, где сочетания клавиш связаны с функциями, не хранится в Emacs. Фактически, ответ обычно не определен.

Часто привязки клавиш устанавливаются как побочный эффект второстепенного режима или через перехват мод. Связывание клавиш для второстепенных режимов часто хранится в некоторой переменной, например comint-mode-map . Эта раскладка клавиатуры активируется установкой переменной режима comint-mode . Однако эта карта режимов является глобальной переменной, и любой, где угодно, может добавить к ней привязки клавиш. Таким образом, выполнение того, что вы хотите, по сути, отслеживание того, кто установил переменную с определенным значением. Аналогично для привязок клавиш, которые просто устанавливаются локально с помощью ловушек режима (используя local-set-key ). Кроме того, вы даже можете установить привязки клавиш через переменные файла . Все это просто говорит о том, что привязки клавиш в Emacs эфемерны.

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

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

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

(defun guess-where-keybinding-is-defined (key)
  "try to guess where a key binding might be defined"
  (interactive (list (read-key-sequence "Describe key: ")))
  (let ((bindings (minor-mode-key-binding key))
        found)
    (while (and bindings (not found))
      (if (setq found (caar bindings))
          (find-function (cdar bindings)))
      (setq bindings (cdr bindings)))))

Есть ли конкретная проблема, которую вы пытаетесь решить (кроме этого вопроса)?

5
ответ дан 17 December 2019 в 02:33
поделиться

Просто сделайте Mx find-function

Из документа Emacs:

(функция find-function)

Найдите определение функции Ближайшая точка.

Находит исходный файл, содержащий определение функции вблизи точки (выбран "функция называется в точке") в буфер и места указывают перед определение. Установите марку перед движением, если буфер уже существует.

1
ответ дан 17 December 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: