Mate o buffer de compilação após o sucesso

3

Estou usando aquamacs no Mac OS X. No meu arquivo .emacs , tenho o seguinte:

(setq compilation-window-height 8)
(setq compilation-finish-function
      (lambda (buf str)

        (if (string-match "exited abnormally" str)

            ;;there were errors
            (message "compilation errors, press C-x ' to visit")

          ;;no errors, make the compilation window go away in 0.5 seconds
          (run-at-time 0.5 nil 'delete-windows-on buf)
      (message "NO COMPILATION ERRORS! Thank you dear compiler..."))))

Digamos que eu tenha um arquivo .cpp aberto sozinho no quadro. Então, ao atingir C-c C-c para compilar, o quadro está sendo dividido horizontalmente e, na parte inferior, recebo o buffer de compilação. Se a compilação sair normalmente, o buffer de compilação será fechado e a divisão será eliminada. Caso contrário, é deixado aberto e posso rever os erros. Até agora tudo bem!

O problema é que, se eu tivesse, em primeiro lugar, um quadro dividido, então C-c C-c redimensionaria a parte inferior para 8 linhas, abriria o buffer de compilação na parte inferior (em uma nova guia) e compilaria. Se a compilação for bem-sucedida, a parte inferior será fechada, ou seja, o buffer que estava lá antes do C-c C-c ser fechado também.

O ideal é que eu queira que C-c C-c inicie um buffer de compilação em uma nova divisão (sempre) e não use uma existente (caso exista). Outra solução perfeita seria que o código acima fosse modificado, de forma que ele fechasse a guia contendo o buffer de compilação após uma compilação bem-sucedida. Desta forma, se a compilação for a única guia, a divisão será eliminada e, caso contrário, as guias abertas anteriormente serão mantidas intactas também após o final da compilação, independentemente de ter sido bem-sucedida ou não. Nesse caso, provavelmente a altura da janela de compilação deve ser igual à da altura da divisão existente, e 8 linhas de outra forma.

Se você leu até agora - muito obrigado por isso:)

    
por Dror 14.11.2012 / 15:13

0 respostas