Eu preferiria que o *compilation*
buffer permanecesse sempre em seu próprio quadro. No entanto, atualmente, se eu for executado a M-x compile
partir de outro quadro / janela, o buffer também será exibido em uma nova janela. Como posso fazer com que o emacs, em vez disso, apenas eleve o quadro existente que está exibindo o *compilation*
buffer?
window
frames
compilation
ajp
fonte
fonte
compile.el
podem ter sido alteradas e, desde então, fiz muitas alterações / melhorias em minhas funções personalizadas que visam certos quadros para exibição em buffer: stackoverflow.com/questions/18346785/… Dê uma olhada e veja se o primeiro link é aproximadamente o que você está procurando - quem sabe, ele ainda pode funcionar sem fazendo mudanças.Respostas:
Normalmente, o Emacs considera o quadro selecionado o único quadro reutilizável. Em outras palavras, normalmente o Emacs pesquisa apenas o quadro atual ("selecionado") em busca de janelas que já contenham o buffer para exibição ("janelas reutilizáveis"). O que você precisa é que o Emacs considere o quadro do buffer de compilação como um quadro reutilizável:
O trecho acima tornará todos os quadros reutilizáveis quando
display-buffer
exibir o*compilation*
buffer. Veja a documentação dedisplay-buffer-reuse-window
para saber quais outros valoresreusable-frames
podem receber.No entanto, isso não se aplica à outra direção - abrir um buffer de código na janela de compilação. Por exemplo, se você abrir um buffer pressionando um link no buffer de compilação, o Emacs abrirá o buffer no mesmo quadro da janela de compilação. Mudar isso é outra questão. Não sei como o comportamento se compara à
special-display-buffer-names
solução.fonte
Faça a compilação de buffer sempre ter uma janela dedicada. Uma maneira de fazer isso é personalizar a opção
special-display-buffer-names
, incluir"*compilation*"
. Outra é personalizar a opçãospecial-display-regexps
, incluir uma regexp que corresponda ao nome do buffer. (Incluo o regexp"[ ]?[*][^*]+[*]"
, que corresponde a todos os buffers cujos nomes são*...*
.)(Consulte também a opção
special-display-frame-alist
, que você pode usar para especificar o comportamento e as características do quadro usado para esses buffers de exibição especial.)O Emacs dirá que essas opções de "buffer de exibição especial" são "obsoletas", mas, graças a Deus, elas ainda são suportadas. Eles oferecem uma maneira simples de fazer o que você deseja.
Se você deseja sofrer com o que o Emacs prefere agora, personalize a opção
display-buffer-alist
. A ideia é essencialmente a mesma (é apenas uma opção de usuário mais feia e mais complicada).fonte