Убить буфер компиляции после успеха

738
Dror

Я использую aquamacsна Mac OS X. В моем .emacsфайле у меня есть следующее:

(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...")))) 

Скажем, у меня есть .cppфайл, открытый один в кадре. Затем при нажатии C-c C-cна компиляцию кадр разделяется по горизонтали, и в нижней части я получаю буфер компиляции. Если компиляция завершается нормально, то буфер компиляции закрывается и разделение исчезает. В противном случае он остается открытым, и я могу просмотреть ошибки. Все идет нормально!

Проблема в том, что если у меня вначале был разделенный кадр, то C-c C-cизменил размер нижней части до 8 строк, открыл буфер компиляции в нижней части (в новой вкладке) и скомпилировал. Если компиляция прошла успешно, нижняя часть закрыта, то есть буфер, который был там до C-c C-cзакрытия.

В идеале я хочу, чтобы C-c C-cбуфер компиляции запускался в новом разбиении (всегда) и не использовал существующий (в случае, если он существует). Другим идеальным решением было бы изменение приведенного выше кода таким образом, чтобы после успешной компиляции он закрывал вкладку, содержащую буфер компиляции. Таким образом, если компиляция была единственной вкладкой, то разделение исчезнет, ​​и в противном случае ранее открытые вкладки останутся без изменений и после окончания компиляции, независимо от того, была она успешной или нет. В этом случае, вероятно, высота окна компиляции должна быть равна высоте существующего разделения, и 8 строк в противном случае.

Если вы читали до сих пор - спасибо за это в одиночку :)

3

0 ответов на вопрос

Похожие вопросы