Pin Emacs buffers para o windows (para cscope)
Pergunta
Para o meu dia de trabalho, eu vivo no Emacs.Totalmente.Eu também tornaram-se muito dependentes CScope para me ajudar a encontrar coisas no código.
Normalmente, eu tenho 2 windows em uma divisão (C-x 3):alt texto http://bitthicket.com/files/emacs-2split.JPG
E eu uso o direito da janela para o código de buffers e o esquerdo da janela para o CScope buffer de pesquisa.Quando você fizer uma CScope de pesquisa e seleccione um resultado, ele automaticamente atualiza o lado direito da janela para mostrar o buffer conhecido pelo resultado.Isso é tudo muito bem, exceto que ele me faz perder o meu lugar em algum outro buffer que eu estava estudando.Às vezes, isso é nada demais, porque [C-s u] me leva de volta para onde eu estava.
O que seria melhor, porém, é ter 3 divisão windows como este ([C-x 2] na janela da esquerda):alt texto http://bitthicket.com/files/emacs-3split.jpg
E tem a parte inferior esquerda da janela de conter o CScope buffer de pesquisa, e a parte superior esquerda da janela de ser o único buffer que CScope sempre as atualizações.Dessa forma, eu posso ver o meu CScope pesquisas e navegar em torno do código, sem perder o tampão estou focado em.
Alguém sabe como posso fazer isso?
Solução
Coloque isso no seu .emacs arquivo:
;; Toggle window dedication
(defun toggle-window-dedicated ()
"Toggle whether the current active window is dedicated or not"
(interactive)
(message
(if (let (window (get-buffer-window (current-buffer)))
(set-window-dedicated-p window
(not (window-dedicated-p window))))
"Window '%s' is dedicated"
"Window '%s' is normal")
(current-buffer)))
Em seguida, vinculá-lo a alguns dos principais - eu uso a tecla Pause:
(global-set-key [pause] 'toggle-window-dedicated)
E, em seguida, usá-lo para se "dedicar" a janela que você deseja bloqueado.em seguida, cscope só pode abrir arquivos a partir da sua janela do resultado em OUTRA janela.Funciona um charme.Eu especificamente usá-lo exatamente com este propósito - manter arquivo de uma fonte sempre na tela, enquanto usando o cscope em um segundo buffer/janela, e olhando para cscope resultados em um terceiro.
Outras dicas
Bem, eu decidi não ser uma reputação-prostituta e encontrar a resposta sozinho.Eu olhei em cscope.el, como mostrado no Emacs wiki, bem como o xcscope.el que vem com o cscope pacote RPM no RHEL.
Nem aparecer para dar um jeito para fazer o que eu estou querendo.A forma é, provavelmente, para editar o diretī orio elisp adicionando uma variável de pacote como *browse-buffer*
ou algo e apenas inicializar a variável se não estiver inicializado a primeira vez que o usuário faz [C-c C-s g]
ou seja o que for, e sempre tem o código resultante é mostrado na *browse-buffer*
.Em seguida, o usuário pode colocar o *browse-buffer*
onde quer que ele quer.