Câu trả lời:
Thông thường, Emacs coi khung đã chọn là khung duy nhất có thể sử dụng lại. Nói cách khác, thông thường Emacs chỉ tìm kiếm khung hiện tại ("đã chọn") cho các cửa sổ đã chứa bộ đệm để hiển thị ("cửa sổ có thể sử dụng lại"). Những gì bạn cần là Emacs coi khung bộ đệm biên dịch là khung có thể sử dụng lại:
(push '("\\*compilation\\*" . (nil (reusable-frames . t))) display-buffer-alist)
Đoạn mã trên sẽ làm cho tất cả các khung có thể sử dụng lại khi display-buffer
hiển thị *compilation*
bộ đệm. Nhìn vào tài liệu display-buffer-reuse-window
để tìm hiểu những giá trị khác reusable-frames
có thể nhận được.
Tuy nhiên, điều này không quan tâm đến hướng khác - mở bộ đệm mã từ cửa sổ biên dịch. Ví dụ: nếu bạn mở bộ đệm bằng cách nhấn một liên kết trong bộ đệm biên dịch, Emacs sẽ mở bộ đệm trong cùng khung với cửa sổ biên dịch. Thay đổi đó là một vấn đề khác. Tôi không biết hành vi so sánh với special-display-buffer-names
giải pháp như thế nào .
Làm cho trình biên dịch bộ đệm luôn có một cửa sổ chuyên dụng. Một cách để làm điều này là tùy chỉnh tùy chọn special-display-buffer-names
, bao gồm "*compilation*"
. Một cách khác là tùy chỉnh tùy chọn special-display-regexps
, để bao gồm một biểu thức chính quy phù hợp với tên bộ đệm đó. (Tôi bao gồm regrec "[ ]?[*][^*]+[*]"
, phù hợp với tất cả các bộ đệm có tên *...*
.)
(Xem thêm tùy chọn special-display-frame-alist
, bạn có thể sử dụng để chỉ định hành vi và đặc điểm của khung được sử dụng cho các bộ đệm hiển thị đặc biệt như vậy.)
Emacs sẽ cho bạn biết rằng các tùy chọn "bộ đệm hiển thị đặc biệt" này đã "lỗi thời", nhưng cảm ơn chúa vì chúng vẫn được hỗ trợ. Họ cung cấp một cách đơn giản để làm những gì bạn muốn.
Nếu bạn muốn chịu đựng những gì Emacs thích bạn làm bây giờ, thì hãy tùy chỉnh tùy chọn display-buffer-alist
thay thế. Ý tưởng về cơ bản là giống nhau (nó chỉ là một tùy chọn người dùng xấu hơn và phức tạp hơn).
compile.el
có thể đã thay đổi và tôi đã thực hiện nhiều thay đổi / cải tiến các chức năng tùy chỉnh của tôi nhắm vào các khung nhất định để hiển thị bộ đệm: stackoverflow.com/questions/18346785/. Hãy xem và xem liên kết đầu tiên có xấp xỉ những gì bạn đang tìm kiếm không - ai biết, nó thậm chí có thể vẫn hoạt động mà không cần tạo ra sự thay đổi