2011-07-08 22 views
5

Khi tôi thực hiện Biên dịch M-x hoặc nhận lỗi biên dịch elisp, các emacs của tôi chia tách cửa sổ theo chiều dọc và hiển thị thông báo lỗi/đầu ra biên dịch trong cửa sổ mới. Tôi thích làm việc với bộ đệm của tôi trong một cửa sổ toàn màn hình, bởi vì cửa sổ phân chia theo chiều dọc là quá hẹp đối với tôi. Tôi có thể nói emacs để không chia cửa sổ và thực hiện Bộ chuyển đổi M-x vào bộ đệm biên dịch/lỗi không?Làm thế nào tôi có thể nói emacs không chia cửa sổ trên biên dịch M-x hoặc lỗi biên dịch elisp?

Chỉnh sửa: Đề xuất của Trey hoạt động để biên soạn. Có cách nào để thiết lập nó cho tất cả các lệnh mà chia cửa sổ? Ba điều tôi lưu ý là biên dịch tuyệt vời, M-x aproposM-x xảy ra.

+1

Nếu điều này được lặp lại dưới dạng câu hỏi * elisp *, nó phải là chủ đề. – Arafangion

+1

@Arafangion Tôi tin rằng nó nằm trong phần mềm 'công cụ thường được sử dụng bởi các lập trình viên trong phần FAQ như là. Có rất nhiều câu hỏi về các biên tập viên trên SO. – jonsca

Trả lời

5

Hãy thử điều này:

(setq compilation-window-height 1000) 

Bạn có thể nhận được ưa thích và thực sự tính toán số lượng dòng văn bản trong khung ... (/ (frame-pixel-height) (frame-char-height)), nhưng điều đó có vẻ ngớ ngẩn.

Io kiểm soát cách Emacs thường hiển thị bộ đệm, bạn có thể cấu hình các biến same-window-regexps để phù hợp với tất cả các tên đệm, và sau đó tất cả các lệnh hiển thị bộ đệm sử dụng display-buffer sẽ sử dụng cùng một cửa sổ:

(setq same-window-regexps '(".")) 

Xem Choosing a Window để biết thêm chi tiết.

+0

đã hoạt động! nhưng có cách nào để làm điều đó cho M-x xảy ra hoặc M-x apropos? – benhsu

+0

@benhsu Yup, đã cập nhật. –

+0

Đối với 'M-x compile', sử dụng:' M-x tùy biến biến RET cùng cửa sổ-regexps RET' và thêm regex '\ * compilation \ *' – user1735594

2

phỏng đoán của tôi là bạn muốn tùy chỉnh biến số split-window-preferred-function. giá trị mặc định là split-window-sensibly. bạn nên thay đổi nó thành một phiên bản tùy chỉnh mà chỉ cần chuyển bộ đệm hiện tại.

này dường như làm việc:

(defun no-split-window() 
    (interactive) 
    nil) 

(setq split-window-preferred-function 'no-split-window) 
0

Đây là những gì tôi sử dụng cho các cửa sổ biên soạn. Nếu không có lỗi hoặc cảnh báo, nó sẽ hiển thị bộ đệm đầu ra biên dịch trong một giây và sau đó giết nó. Nếu không, bộ đệm sẽ ở lại vì bạn có thể muốn tìm lỗi và sửa chúng. Tôi đã nhận điều này từ 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) 
Các vấn đề liên quan