當我執行M-x編譯或得到elisp編譯錯誤時,我的emacs垂直分割窗口,並在新窗口中顯示編譯輸出/錯誤消息。我更喜歡在全屏窗口中使用緩衝區,因爲垂直分割窗口對我來說太狹窄了。我可以告訴emacs 不是拆分窗口,並做一個M-x切換緩衝區到編譯/錯誤緩衝區?如何告訴emacs不要在M-x編譯或elisp編譯錯誤上拆分窗口?
編輯:Trey的建議適用於編譯。有沒有辦法爲分割窗口的所有命令設置它?我想到的三個是elisp編譯,M-x apropos和M-x出現。
當我執行M-x編譯或得到elisp編譯錯誤時,我的emacs垂直分割窗口,並在新窗口中顯示編譯輸出/錯誤消息。我更喜歡在全屏窗口中使用緩衝區,因爲垂直分割窗口對我來說太狹窄了。我可以告訴emacs 不是拆分窗口,並做一個M-x切換緩衝區到編譯/錯誤緩衝區?如何告訴emacs不要在M-x編譯或elisp編譯錯誤上拆分窗口?
編輯:Trey的建議適用於編譯。有沒有辦法爲分割窗口的所有命令設置它?我想到的三個是elisp編譯,M-x apropos和M-x出現。
試試這個:
(setq compilation-window-height 1000)
你可以讓幻想和實際計算的框架... (/ (frame-pixel-height) (frame-char-height))
文本的行數,但似乎很傻。
IO控制的Emacs一般如何顯示緩衝區,可將變量same-window-regexps
配置匹配所有緩衝區名稱,然後可顯示使用display-buffer
將使用同一個窗口緩衝區中的所有命令:
(setq same-window-regexps '("."))
更多見Choosing a Window細節。
工作!但是有沒有辦法爲M-x發生或M-x apropos? – benhsu
@benhsu Yup,更新。 –
對於'M-x compile',使用:'M-x customize-variable RET same-window-regexps RET'並添加正則表達式'\ * compilation \ *' – user1735594
我的猜測是你想自定義split-window-preferred-function
變量。默認值是split-window-sensibly
。您應該將其更改爲只切換當前緩衝區的自定義版本。
這似乎工作:
(defun no-split-window()
(interactive)
nil)
(setq split-window-preferred-function 'no-split-window)
這是我使用編譯窗口。如果沒有錯誤或警告,它將顯示編譯輸出緩衝區一秒鐘,然後殺死它。否則,緩衝區將保留,因爲您可能需要查找錯誤並修復它們。我從a newsgroup得到這個。
(defun kill-compile-buffer-if-successful (buffer string) " kill a compilation buffer if succeeded without warnings " (if (and (string-match "compilation" (buffer-name buffer)) (string-match "finished" string) (not (with-current-buffer buffer (search-forward "warning" nil t)))) (run-with-timer 1 nil 'kill-buffer buffer))) (add-hook 'compilation-finish-functions 'kill-compile-buffer-if-successful)
如果這被改寫爲* elisp *的問題,它應該是話題。 – Arafangion
@Arafangion我認爲它屬於常見問題解答中常見的'程序員'部分常用的軟件工具。關於SO的編輯有很多問題。 – jonsca