Existe uma sintaxe padrão / recomendada para definir uma ligação do teclado?

10

Vi todos os itens a seguir para definir uma ligação do teclado. Tudo isso funciona (pelo menos no MS Windows). Não sei se existe outra maneira de fazer a mesma coisa.
Gostaria de saber se existe uma maneira padrão ou recomendada para definir uma ligação de teclado e se é recomendável evitar algumas delas.

(global-set-key "\M-r" 'some-command)
(global-set-key [(meta r)] 'some-command)
(global-set-key [?\M-r] 'some-command)
(global-set-key (kbd "M-r") 'some-command)
Nome
fonte
11
Duvido que exista uma sintaxe recomendada, mas eu pessoalmente gosto do (global-set-key (kbd "M-r") 'some-command)método devido à consistência na qual as combinações de teclas podem ser definidas. Você não precisa se lembrar de quando ou não escapar das coisas.
Kaushal Modi

Respostas:

6

Não existe uma maneira padrão única, porque existem casos de uso diferentes.

Se você estiver escrevendo esse código manualmente, no seu arquivo init, por exemplo, poderá preferir o (kbd ...)formato, porque o argumento kbdusa a mesma notação que o Emacs usa quando se comunica com você sobre ligações de teclas ( *Help*por exemplo).

Mas se você estiver criando ligações usando o Emacs Lisp, poderá preferir a notação vetorial, em particular [(meta r)]etc., pois é um pouco mais fácil de gerenciar.

Algumas pessoas consideram a abordagem simples das cordas arcaica, mas é útil quando a chave é simples: "a"é mais simples e pelo menos tão legível quanto (kbd "a"). Mas strings simples são mais difíceis de ler / usar quando se trata de teclas modificadoras etc.

Desenhou
fonte
6
(global-set-key [?\M-r] 'some-command)

é o caminho "nativo". Todos os outros são construídos sobre este, basicamente.

Stefan
fonte