Como ligar o emacs para abortar a chave

2

Isso é de um arquivo .el carregado no meu arquivo .emacs. O que você acha?

;;; Sun keyboard bindings

;; the below line does not work:
;; when <cancel> is pressed, the minibuffer echoes "Quit"
;; but that is the only thing it does

;; (global-set-key [cancel] 'keyboard-quit)

;; Note: I got the 'keyboard-quit from C-h c and then C-g
;; (C-g is the normal way for me to abort)

;; Those work, so it has probably something to do
;; with the peculiarities of 'keyboard-quit, rather than
;; the actual keybinding (or?)

(global-set-key [SunProps] 'describe-variable)
(global-set-key [SunFront] 'next-buffer)
(global-set-key [SunOpen] 'list-buffers)
(global-set-key [XF86Copy] 'clipboard-kill-ring-save)
(global-set-key [XF86Paste] 'x-clipboard-yank)
(global-set-key [XF86Cut] 'clipboard-kill-region)
    
por Emanuel Berg 16.02.2012 / 23:58

1 resposta

5

Devido ao fato de que Control + G precisa interromper o Emacs enquanto faz outras coisas (e não lê as entradas normais), é codificado no núcleo do Emacs e pode pode ser rebound usando métodos normais. Existe uma função set-quit-char , mas funciona apenas com caracteres ASCII.

(set-quit-char QUIT)

Specify character used for quitting.
QUIT must be an ASCII character.

This function only has an effect on the controlling tty of the Emacs
process.

Em suma, você teria que corrigir e recompilar o Emacs para fazer o que quiser.

No entanto, é possível obter alguns do que você deseja. Se você fizer

(define-key local-function-key-map [cancel] [7]) ; 7 is C-g

então cancel deve funcionar como C-g , mas somente quando o Emacs estiver lendo a entrada normal. Ele não interromperá uma função Elisp de longa duração como C-g . Mas ele cancelará um comando C-x C-f ou similar que está lendo a entrada do minibuffer.

    
por 17.02.2012 / 03:06

Tags