2010-05-01 205 views
3

我的.emacs文件中有以下內容(感謝SOer nikwin),它評估當前緩衝區內容並在另一個緩衝區中顯示輸出。Emacs shell輸出緩衝區高度

(defun shell-compile() 
    (interactive) 
(save-buffer) 
    (shell-command (concat "python " (buffer-file-name)))) 

(add-hook 'python-mode-hook 
      (lambda() (local-set-key (kbd "\C-c\C-c") 'shell-compile))) 

問題是輸出窗口占用emacs屏幕的一半。有什麼辦法可以將輸出窗口的高度設置爲更小的值。我搜索了30分鐘左右,找不到任何有用的東西。提前致謝。

+0

爲什麼寫自己的編譯命令?已經有'compile'。 – jrockway 2010-05-02 04:00:53

+0

我不太瞭解emacs lisp(或者emacs),因此我不能創建一個綁定C-c C-c編譯的函數。我在SO上發現了這個函數,它工作得很好。 – jimbo 2010-05-02 05:53:02

回答

1

這擴大了20行的源代碼緩存每當它的高度小於(使用ECB前)或等於框架高度的一半。漂亮的原油,但它可能符合你的目的。

(defun shell-compile() 
    (interactive) 
    (save-buffer) 
    (shell-command (concat "python " (buffer-file-name))) 
    (if (<= (* 2 (window-height)) (frame-height)) 
     (enlarge-window 20) 
    nil)) 
+0

非常感謝您,這很有用。我把行數改爲5而不是20。 – jimbo 2010-05-02 05:50:57

0

我問非常類似的問題之前:emacs programmatically change window size

這是我曾經有過

(defun collapse-compilation-window (buffer) 
    "Shrink the window if the process finished successfully." 
    (let ((compilation-window-height 5)) 
    (compilation-set-window-height (get-buffer-window buffer 0)))) 

(add-hook 'compilation-finish-functions 
      (lambda (buf str) 
      (if (string-match "exited abnormally" str) 
;    (next-error) 
       ;;no errors, make the compilation window go away in a few seconds 
       ;(run-at-time "2 sec" nil 'delete-windows-on (get-buffer-create "*compilation*")) 
       (collapse-compilation-window buf) 
       (message "No Compilation Errors!") 
      ) 
      )) 

;(add-hook 'compilation-finish-functions 'my-compilation-finish-function) 
+0

嗨,我添加到我的.emacs文件,但問題仍然存在 – jimbo 2010-05-01 04:39:34

+0

@jim我的代碼段使用編譯緩衝區,而不是shell緩衝區。不會按原樣工作,您可以嘗試使用編譯緩衝區或查找是否存在與shell緩衝區等效的完成函數掛接點 – Anycorn 2010-05-01 04:44:07