Ошибка недопустимой таблицы ключей при байтовой компиляции дополнительных клавиш

Приведенный ниже код из моего.emacs работает нормально, но выдает ошибку "Invalid keymap my-keys-mode-map", когда я пытаюсь его скомпилировать.

(eval-and-compile
  (defvar my-keys-mode-map (make-sparse-keymap) "my-keys-mode keymap.")

  (define-minor-mode my-keys-mode
    "A minor mode to override major modes keys."
    t " my-keys" 'my-keys-mode-map)

  (bind-key "C-;" (quote right-char) my-keys-mode-map)
  (bind-key "C-j" (quote left-char) my-keys-mode-map)
)

Ошибка в строке привязки ключа. Я попытался определить ключ вместо связывания ключа или использовать make-keymap вместо make-sparse-map, но без удачи. Я не слишком опытен с elisp. Есть ли какой-то другой способ определить карту ключей, чтобы она распознавалась байтовым компилятором?

1 ответ

Решение

Удалите кавычку перед символом карты ключей в define-minor-mode,

Другими словами, определение второстепенного режима должно быть таким:

(define-minor-mode my-keys-mode
  "A minor mode to override major modes keys."
  t " my-keys" my-keys-mode-map)

Вам нужно передать карту ключей, а не символ (значение которого является картой ключей), чтобы define-minor-mode,

Другие вопросы по тегам