Я использую use-package
для управления установленными пакетами и bind-key
назначения действий для пользовательских ключей, которые мне нравятся.
Я переопределяю большую часть стандартной привязки клавиш Emacs (например, C-nстановится M-k, C-pстановится M-i), но я в порядке с другими режимами, переопределяющими мою схему привязки клавиш. Однако иногда я хочу, чтобы связывание клавиш сохранялось. Я хочу иметь в M-kвиду что-то еще, чем по умолчанию Gnus или Helm.
Однако все они конфликтуют друг с другом при запуске Emacs, потому что я не могу добавить привязку к use-package
карте ключей , если она не существует (потому что иногда откладывает загрузку пакета). Например, следующие команды выдают ошибки (например (void-variable helm-map)
), потому что Helm и Gnus еще не полностью загружены.
(bind-key "M-Y" 'helm-end-of-buffer helm-map)
(bind-key "M-k" 'helm-next-line helm-find-files-map)
(bind-key "M-s" 'other-window gnus-summary-mode-map)
У меня есть все мои use-package
вызовы в одном файле и bind-key
для пользовательских сочетаний клавиш в другом файле. Я не хочу помещать привязки в use-package
вызовы, потому что, возможно, я хочу опубликовать свою собственную схему привязки клавиш в виде отдельного пакета. Что, если я хочу, чтобы кто-то устанавливал мою схему, также были переопределены локальные сочетания клавиш Helm и Gnus?
Как мне управлять привязками клавиш в режиме, используя bind-key
все ключи, даже если пакеты загружаются в последнее время, а все настройки ключей находятся внутри одного файла?
источник
Поскольку вы уже используете bind-key, прямо из документации
bind-key.el
:Последняя форма ломается, если раскладка клавиатуры в настоящее время не определена, поскольку определяющий файл
some-other-mode-map
еще не загружен. Таким образом, вы можете поместить это вuse-package
forsome-other-mode
(определение пакетаsome-other-mode-map
) или используяwith-eval-after-load
:Другой альтернативой будет определение вашего собственного второстепенного режима, содержащего все привязки, которые не должны быть переопределены основными режимами:
источник