Я использую 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 строк в противном случае.
Если вы читали до сих пор - спасибо за это в одиночку :)