Chiave non vincolante mediante use-package


10

Sto provando a sbloccare org-cycle-agenda-filesche è impostato di default su C-'e C-,.

La mia arma preferita per farlo è il pacchetto use- package.

Sulla pagina github.com/use-package/bind-key.el ho trovato le seguenti righe:

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

Ciò mi ha portato a provare senza successo le seguenti varianti:

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

Dopo quel fallimento ho trovato una soluzione "tradizionale" al problema.

Le informazioni trovate nel manuale di gnu.org e alcune risposte di emacs.stackexchange mi hanno portato a produrre i seguenti inutili disastri:

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

Sì .... Nessuna di queste variazioni funziona. : D

Mi piacerebbe trovare una soluzione basata sul pacchetto d'uso , poiché sto già utilizzando alcune delle sue fantastiche funzionalità.

Qualsiasi tipo di suggerimento è il benvenuto.

Risposte:


14

Se tu C-h fed entri unbind-key, la guida dice:

unbind-key è una macro Lisp caricata automaticamente in `bind-key.el '.

(KEY-NAME senza chiave e KEYMAP opzionale)

Non documentato

Il secondo argomento unbind-keyè una mappa chiave, ad esempio org-mode-map.

Questo funziona per me:

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

Un buon posto per metterlo sarebbe la :configsezione di un use-packagemodulo.


4

Sì, l'impassibile non sembra elegante, ma questo è l'approccio principale secondo questa risposta .

Per quanto riguarda use-package, ho usato unbind sotto: direttiva init in questo modo:

:init
(unbind-key "C-'" org-mode-map)
(unbind-key "C-," org-mode-map)

Devi inserirlo all'interno :confige non :init, perché nella :initkeymap potrebbe non essere ancora caricato.
ギ ョ ー ム
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.