Odzyskiwanie klucza za pomocą pakietu use

10

Próbuję usunąć powiązanie, org-cycle-agenda-filesktóre jest domyślnie ustawione na C-'i C-,.

Moją wybraną bronią jest pakiet use- package.

Na stronie github.com/use-package/bind-key.el znalazłem następujące linie:

;; 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)

Spowodowało to, że bezskutecznie próbowałem następujących odmian:

(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)

Po tym niepowodzeniu wypróbowałem trochę „tradycyjnego” rozwiązania problemu.

Informacje znalezione w podręczniku gnu.org i niektóre odpowiedzi na emacs.stackexchange spowodowały, że spowodowałem następujące bezużyteczne spustoszenie:

(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)

Tak .... Żadne z tych odmian nie działa. :RE

Chciałbym znaleźć rozwiązanie oparte na pakiecie użytkowania , ponieważ już korzystam z niektórych z jego niesamowitych możliwości.

Wszelkie sugestie są mile widziane.

Pusty umysł
źródło

Odpowiedzi:

14

Jeśli C-h fi wejdziesz unbind-key, pomoc mówi:

unbind-key to automatycznie ładowane makro Lisp w `bind-key.el '.

(unbind-key KEY-NAME i opcjonalny KEYMAP)

Nieudokumentowane.

Drugi argument unbind-keyto mapa kluczy - na przykład org-mode-map.

To działa dla mnie:

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

Dobrym miejscem na umieszczenie tego jest :configsekcja use-packageformularza.

Greg Hendershott
źródło
4

Tak, rozpinanie nie wygląda elegancko, ale to główne podejście według tej odpowiedzi .

Jeśli chodzi o use-package, używałem unbind zgodnie z dyrektywą: init tak:

:init
(unbind-key "C-'" org-mode-map)
(unbind-key "C-," org-mode-map)
Użytkownik Emacsa
źródło
Musisz włożyć to do środka :config, a nie :init, ponieważ w :initmapie klawiszy może jeszcze nie zostać załadowane.
kotchwane