Como distinguir Cm de RETURN?


14

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?


2

1
Mesmo problema, ponto de entrada diferente, acho que seria bom manter as duas perguntas para pessoas provenientes de pesquisas diferentes.
Jordon Biondo 12/02


Respostas:


19

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


2
Isso é brilhante, obrigado. Agora eu posso ter C-mcomo um mapa de prefixos para vários cursores.
John Wiegley
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.