Normalmente, por razões históricas, o emacs trata o TABcódigo e a C-ichave da mesma forma, cf. a documentação do emacs lisp sobre as teclas de função ou a resposta da abo-abo na pergunta "Qual é a diferença entre TAB e?" .
NOTA: Neste post, keycodes estão
TAB,<tab>eC-i; tabe Ctrl+, ipor outro lado, são as teclas físicas do teclado.No entanto, no momento, o Emacs trata do
TABeC-icomo a mesma coisa, ou seja,(equal (kbd "TAB") (kbd "C-i"))->t.
No entanto, como não estamos mais vivendo na pedra da computação, acho isso extremamente irritante. Existem algumas sugestões por aí, o que pode ser feito para contornar isso, por exemplo
"Como vincular um comando ao Ci sem alterar o TAB?"
- A solução da Trey não funcionou para o meu, a variável
local-function-key-mapsnão foi alterada. Modificá-lo para usar emdeletevez dedelqresultar em uma variável modificada, mas não traz a resolução ... tabe Ctrl+ iainda são os mesmos. - Traduzir para o hipermap parece uma solução alternativa da década de 1980 ... Talvez eu queira usar Hyper+ itambém.
- A solução da Trey não funcionou para o meu, a variável
Usar o
input-decode-mapmapear Ctrl+ ipara algum código de controle pós-ASCII é quase o que estou procurando. Exceto que ele não funciona corretamente com akbdmacro, o que significa que é preciso modificar todos os bits do código-fonte que vincularão Ctrl+ i. Indiscutivelmente, essa é a melhor solução, pois todo o código-fonte é modificado corretamente.Usando
(kbd "<tab>")para tabe(kbd "C-i")(que se traduz em(kbd "TAB")ou seja, a\tliteral) para Ctrl+ i funciona , mas você teria que modificar todos os arquivos de origem que usam o tipo errado de tab[Leia-se: o código de acessoTAB] que é irritante.
Isso foi sugerido, por exemplo, em um problema do github e no emacs.sx também .
Nenhuma dessas soluções parece soluções reais; prefiro considerá-las soluções alternativas ou hacks (do bug existente ).
Existe uma maneira de forçar o emacs a mapear tabpara
(kbd "<tab>")e(kbd "TAB")enquanto Ctrl+ ié mapeado para(kbd "C-i")não modificar o código-fonte do emacs?Essa abordagem deve ser completamente invisível para o usuário, o que significa que os tabcódigos
<tab>- chave semelhantes eTABdevem ser mapeados para uma ligação, enquanto o código-chave semelhante Ctrl+ deve mapear para outra ligação.iC-i
Em uma observação menos séria: Algum desenvolvedor do emacs aqui pode comentar se isso será alterado / corrigido no código-fonte do emacs em algum momento?
kbda tradução do TAB como [tab]. Simplesmente não funcionará para as partes pré-carregadas do Emacs.
TABeC-i(os códigos, não as chaves) são um e o mesmo por definição deTAB.