Отмена привязки ключа с помощью use-package

10

Я пытаюсь unbind, org-cycle-agenda-filesкоторый установлен по умолчанию C-'и C-,.

Мое оружие выбора для этого - пакет использования пакета.

На странице github.com/use-package/bind-key.el я нашел следующие строки:

;; To unbind a key within a keymap (for example, to stop your favorite major
;; mode from changing a binding that you don't want to override everywhere),
;; use `unbind-key':
;;
;;   (unbind-key "c-c x" some-other-mode-map)

Это привело к тому, что я безуспешно пробовал следующие варианты:

(unbind-key "C-'" )
(unbind-key "C-," )
(unbind-key "C-'" (org-cycle-agenda-files))
(unbind-key "C-," (org-cycle-agenda-files))
(bind-keys :map org-mode-map
       :unbind "C-'")
(unbind-key "C-'" org-cycle-agenda-files)

После этой неудачи я нашел «традиционное» решение проблемы.

Информация, найденная в руководстве gnu.org , и некоторые ответы на emacs.stackexchange привели к тому, что я произвел следующие бесполезные разрушения:

(define-key (org-cycle-agenda-files) key nil)
(define-key (current-global-map) "C-'" nil)
(local-unset-key "C-'")
(global-unset-key "C-'")
(with-eval-after-load org-mode
  (unbind-key "C-'" org-mode-map)
  (unbind-key "C-," org-mode-map))
(global-set-key (kbd "C-'") 'nil)

Угу .... Нет этих вариаций воркс. : D

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

Любые предложения приветствуются.

Empty_Mind
источник

Ответы:

14

Если вы C-h fи входите unbind-key, то в справке говорится:

unbind-key - это автоматически загружаемый макрос Lisp в `bind-key.el '.

(unbind-key KEY-NAME и необязательный KEYMAP)

Не задокументировано.

Второй аргумент unbind-key- это карта ключей - например org-mode-map.

Это работает для меня:

(require 'bind-key)
(unbind-key "C-," org-mode-map)
(unbind-key "C-'" org-mode-map)

Хорошее место, чтобы поместить это было бы :configразделом use-packageформы.

Грег Хендершотт
источник
4

Да, освобождение не выглядит элегантно, но это основной подход в соответствии с этим ответом .

Что касается use-package, я использовал unbind в директиве: init так:

:init
(unbind-key "C-'" org-mode-map)
(unbind-key "C-," org-mode-map)
Пользователь Emacs
источник
Вы должны поместить это внутрь :config, а не :init, потому что в :initраскладке ключей еще не может быть загружен.
ギ ョ ー ム