Desvinculando Chave Usando o Pacote de Uso

10

Estou tentando desvincular o org-cycle-agenda-filesque é definido por padrão como C-'e C-,.

Minha arma de escolha para fazer isso é o pacote use- package.

Na página github.com/use-package/bind-key.el , encontrei as seguintes linhas:

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

Isso resultou em mim, sem sucesso, tentando as seguintes variações:

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

Depois dessa falha, tentei alguma solução "tradicional" para o problema.

As informações encontradas no manual do gnu.org e algumas respostas do emacs.stackexchange resultaram em eu produzindo os seguintes estragos inúteis:

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

Sim .... Nenhuma dessas variações vorks. : D

Gostaria muito de encontrar uma solução baseada em pacotes de uso , já que já estou usando alguns dos recursos incríveis.

Qualquer tipo de sugestão é bem-vinda.

Mente vazia
fonte

Respostas:

14

Se você C-h fe entrar unbind-key, a ajuda diz:

unbind-key é uma macro Lisp carregada automaticamente em `bind-key.el '.

(KEY-NAME da chave de desbloqueio e KEYMAP opcional)

Não documentado.

O segundo argumento para unbind-keyé um mapa principal - por exemplo org-mode-map.

Isso funciona para mim:

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

Um bom lugar para colocar isso seria a :configseção de um use-packageformulário.

Greg Hendershott
fonte
4

Sim, a desvinculação não parece elegante, mas essa é a abordagem principal de acordo com esta resposta .

Quanto ao pacote de uso, tenho usado unbind sob a diretiva: init assim:

:init
(unbind-key "C-'" org-mode-map)
(unbind-key "C-," org-mode-map)
Usuário Emacs
fonte
Você precisa colocar isso dentro :config, e não :init, porque no :initmapa de teclas ainda não pode ser carregado.
ギ ョ ー ム