Remapear “cmd” + “W” para matar o buffer em Aquamacs?

1

Em Aquamacs 3.2 , quero remapear cmd + W para que ele mate o buffer atual em vez de fechar o quadro. Eu uso Aquamacs em um estilo clássico do Emacs com uma janela, então eu fecho os buffers muito mais frequentemente do que eu fecho as janelas.

Eu tentei isso no meu .emacs sem efeito.

(global-unset-key [?\s-w])
(define-key global-map [?\s-w] 'kill-buffer)

Eu também tentei uma variação em esta resposta mas ainda mata a janela.

(defun kill-current-buffer ()
  (interactive)
  (kill-buffer (current-buffer)))
(global-unset-key (kbd "s-w"))
(global-set-key (kbd "s-w") 'kill-current-buffer)

Eu também tentei colocar esse código em ~/Library/Preferences/Aquamacs Emacs/Preferences.el como sugerido nesta resposta .

Eu verifiquei com describe-function que ele está carregado.

kill-current-buffer is an interactive Lisp function in '.emacs'.

It is bound to s-W.

(kill-current-buffer)

Not documented.
    
por Schwern 31.03.2014 / 02:10

1 resposta

1

Há duas coisas acontecendo. Primeiro, o Aquamacs remapeava a chave de comando do Mac OS X para alt . Portanto, deve ser (global-set-key '[(alt w)] 'kill-current-buffer) .

Mas isso dá um aviso por causa da segunda coisa, osx-key-mode definiu seu próprio osx-key-mode-map . O Emacs sugere redefinir essa chave nesse mapa de chaves com define-key .

(defun kill-current-buffer ()
  (interactive)
  (kill-buffer (current-buffer)))
(when (boundp 'osx-key-mode-map)
    (define-key osx-key-mode-map '[(alt w)] 'kill-current-buffer))
    
por 01.04.2015 / 23:05

Tags