2
我喜歡使用emacsclient在不同的虛擬桌面上打開新的emacs框架。這很好,除了當emacs決定切換幀時,如果我切換到一個已經打開的緩衝區,而不是那個有焦點的幀,它會很痛苦。有沒有辦法來禁用此框架重用?如何說服emacs在更改緩衝區時保留在同一幀上?
我喜歡使用emacsclient在不同的虛擬桌面上打開新的emacs框架。這很好,除了當emacs決定切換幀時,如果我切換到一個已經打開的緩衝區,而不是那個有焦點的幀,它會很痛苦。有沒有辦法來禁用此框架重用?如何說服emacs在更改緩衝區時保留在同一幀上?
您需要自定義display-buffer
(這是由switch-to-buffer
和朋友調用的函數)的行爲。第二個可選參數FRAME
需要設置爲nil
,以便函數在查找已打開的緩衝區時僅考慮當前幀。還請確保將display-buffer-reuse-frames
設置爲nil
(這是默認設置)。
檢查內置文檔:C-h f display-buffer RET
不幸的是,display-buffer
往往不直接調用。可能將switch-to-buffer
重新映射到您的自定義switch-to-buffer
將是最佳行動方案。
謝謝,顯示緩衝區幫助讓我看到了iswitchb代碼,它實際上已經爲默認的緩衝區切換策略提供了一個定製掛鉤。 '(setq iswitchb-default-method'samewindow)'似乎做我想要的。 – samwise 2012-01-15 21:14:44
@samwise謝謝。很高興知道。 – pmr 2012-01-15 21:32:49