Я использую 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все ключи, даже если пакеты загружаются в последнее время, а все настройки ключей находятся внутри одного файла?