Estou usando o sr-speedbar com o emacs, e costumo dividir o quadro em 2-3 janelas diferentes, e sempre que clico em um arquivo no sr-speedbar, ele sempre abre o novo buffer na janela mais baixa. Estou tentando manter a janela mais à direita como um prazo relativamente pequeno, e o emacs continua insistindo em abrir novos buffers na janela de curto prazo, e não na área muito maior que eu gostaria de usar para editar buffers.
Existe alguma maneira de configurar a lógica de criação de buffer para preferir janelas superiores a janelas inferiores?
Eu já tentei pegar minha janela mais baixa e marcá-la como protegida, e isso fez com que o emacs a dividisse em duas porções razoavelmente pequenas. Então tentei ativar o tamanho da janela fixo e, em vez de fazer o emacs abrir o buffer acima dessa janela, apenas me deu um erro que a janela era pequena demais para ser dividida. Bom, eu acho que ele parou de bater na minha janela mais baixa, mas burro que me impede de abrir novos buffers.
Idealmente, eu gostaria de poder forçar o emacs a selecionar a janela superior direita para exibir buffers recém-criados, e não tentar dividir a janela inferior direita.
Respostas:
Presumo que você esteja usando o Emacs 24; Não testei esta resposta em nenhuma versão anterior e não sei quando o conceito de janelas dedicadas foi adicionado ao Emacs. Eu já vi menções de seu uso que datam de 2011, então suponho que o Emacs 23 (pelo menos) também tenha a capacidade.
Você pode impedir que o Emacs abra um novo buffer em uma determinada janela dedicando a janela ao seu buffer .
No caso mais simples, você pode fazer isso selecionando a janela que deseja dedicar, garantindo que atualmente exiba o buffer ao qual deseja dedicar e, em seguida, fazendo
M-: (set-window-dedicated-p (selected-window) t)
. Isso impedirá que o Emacs considere a janela modificada ao decidir em qual janela mostrar um buffer. Para remover a dedicação, avalie a mesma expressão, substituindo o segundo argumento pornil
.Você pode impedir que o Emacs tente dividir uma janela que exibe um determinado buffer configurando a variável local do buffer, tamanho da janela fixo em um valor não nulo.
No caso mais simples, você pode fazer isso selecionando a janela e fazendo
M-: (setq window-size-fixed t)
. Para corrigir apenas a altura ou largura das janelas que exibem o buffer, avalie a mesma expressão, passando'height
ou'width
como o segundo argumento; para remover a restrição, substitua o segundo argumento pornil
.No caso geral, achei seu problema interessante o suficiente para hackear uma solução , que você pode colocar no caminho de carregamento
(require)
e usar:fonte
Nas versões recentes do Emacs,
display-buffer-alist
foi adicionada a opção . Ele fornece controle refinado sobre a exibição de buffer, janelas usadas etc. No entanto, como permite fazer muitas coisas, também é bastante complexo e difícil de descrever. Consulte a documentação:C-h v display-buffer-alist
.fonte