Quando estiver no modo javascript, tentar usar, C-c C-m ireceberá um erro dizendo " C-c RETestá indefinido?"
O que faz o Emacs acreditar que estou pressionando RET?
Como posso fazer com que essa combinação de teclas funcione corretamente?
Quando estiver no modo javascript, tentar usar, C-c C-m ireceberá um erro dizendo " C-c RETestá indefinido?"
O que faz o Emacs acreditar que estou pressionando RET?
Como posso fazer com que essa combinação de teclas funcione corretamente?
Respostas:
Emacs "pensa" que C-mé RETporque "Control M" é o caractere de controle ASCII "retorno de carro". Mesmo que esse motivo seja "histórico", o Emacs pode ser executado em um terminal e, portanto, precisa oferecer suporte à maneira como os terminais ainda funcionam agora.
Tente abrir uma janela do terminal, digitando " ls" e pressionando C-m. Você verá que é interpretado como "retorno", mesmo que você não esteja no Emacs.
Consulte Caractere de controle na Wikipedia para obter detalhes sobre caracteres de controle.
Para distinguir C-mde RETum Emacs da GUI, pode-se mudar C-ipara C-mna resposta do @nispio :
(define-key input-decode-map [?\C-m] [C-m])
;; now we can do this:
(defun my-command ()
(interactive)
(message "C-m is not the same as RET any more!"))
(global-set-key (kbd "<C-m>") #'my-command)
Veja também
Como distinguir Ci de TAB? , que está intimamente relacionado.
Como vincular Ci como diferente da TAB? e esta resposta em particular.
C-mcomo um mapa de prefixos para vários cursores.