Emacs modifica quit-window para deletar buffer não apenas enterrá-lo

6

Eu gostaria de fazer o Emacs não apenas enterrar um buffer, mas também matá-lo quando eu pressionar q em um buffer de *Completions*/*Help*/etc . Não consigo fazer funcionar a função de definição de chave substituta. Estou executando o Emacs24 no OSX.

Veja o que eu tenho:

(substitute-key-definition
        'quit-window '(lambda () (interactive) (quit-window "KILL")) global-map)
    
por bneil 07.03.2012 / 08:02

2 respostas

7

A outra resposta, na verdade, fornece um comportamento ligeiramente incompatível. Considere uma situação em que você já tem um quadro dividido em duas janelas, depois abre um buffer de ajuda e o desativa. quit-window é inteligente o suficiente para saber que não deve matar a janela, apenas o buffer. Na verdade, até tem alguns truques mais inteligentes na manga, então nossa melhor aposta é trabalhar com isso e apenas ajustar um pouco. Aqui está uma maneira simples de conseguir o que você quer:

(defadvice quit-window (before quit-window-always-kill)
  "When running 'quit-window', always kill the buffer."
  (ad-set-arg 0 t))
(ad-activate 'quit-window)
    
por 25.08.2012 / 06:50
2

Apenas redefinir a função parecia ter funcionado para mim, ou seja

(defun quit-window () 
 "modified quit window"
 (interactive)
 (kill-buffer-and-window)
 )

Eu nunca entendi o propósito de ter uma conclusão ou um buffer de ajuda ainda disponível quando você está trocando buffers depois que você pressionou q para sair dele anteriormente.

    
por 08.03.2012 / 06:47

Tags