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

Я использую 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 запустите буфер компиляции в новом split (всегда) и не будете использовать существующий (если он существует). Другим идеальным решением было бы изменение приведенного выше кода таким образом, чтобы после успешной компиляции он закрывал вкладку, содержащую буфер компиляции. Таким образом, если компиляция была единственной вкладкой, то разделение исчезнет, ​​и в противном случае ранее открытые вкладки останутся без изменений и после окончания компиляции, независимо от того, была она успешной или нет. В этом случае, вероятно, высота окна компиляции должна быть равна высоте существующего разделения, и 8 строк в противном случае.

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

0 ответов

Другие вопросы по тегам