2011-08-10 54 views
2

我道歉,如果我在這裏使用了不正確的術語,我只用emacs幾個月。aquamacs:交換對C-C-C(蟒蛇模式)Windows

我剛剛重新安裝上,我重新格式化時遇到最奇怪的問題,一臺MacBook Aquamacs。

我打開一個.py文件,並使用C-C!打開一個python shell。所以我有(如預期),頂部窗口中的.py文件和底部窗口中的python shell。

如果我然後在.py文件運行C-C-C(PY-執行緩衝器),這兩個窗口交換位置。我的意思是,.py文件緩衝區在底部窗口中的新緩衝區中打開,而python shell在頂部窗口中的新緩衝區中打開。所以基本上,他們交換位置。反覆使用C-C C-c再次換回窗戶......所以他們正在洗牌。此外,這兩個窗口(頂部和底部)都有標籤中的緩衝區(.py文件和python shell)。

我沒有作出任何修改默認設置着呢,我已經得到既2.3A和2.3(2.3是在機器上以前並沒有這個問題,所以我想回滾問題...無濟於事)。

有誰知道如何阻止這種行爲?提前致謝!

+0

只是一個註釋;我閱讀了GNU Emacs附帶的python.el,它的C-c C-c沒有這樣做。所以它必須是由aquamacs引入的東西。 – jrockway

+0

@jrockway:'py- *'函數來自'python-mode.el','python- *'函數來自'python.el'(舊的或新的)。 –

回答

2

添加以下到Aquamacs您的Emacs初始化文件,以防止它周圍交換緩衝區:

(defadvice py-execute-buffer 
    (around keep-buffers-same activate) 
    "Don't swap buffers in Aquamacs." 
    (save-window-excursion 
    ad-do-it)) 
+0

當我調用C-C C-C時,還有一些詭計......窗口/緩衝區迅速交換....但是在不到半秒鐘後,最終結果就是我想要的。謝謝! – Josh

0

我不使用Aquamacs,無法重現您所描述的行爲,然而,試試這個代碼切換到任一Windows爲「專用」的。將窗口鎖定到緩衝區是我在啓動和運行emacs時首先要做的事情。也許這會幫助你。

將代碼添加到您的'.emacs'中,然後'標記'(選擇)該區域的'S-<'按鍵>',然後選擇'Mx eval-region'來評估它。或保存並重新啓動emacs的。

(global-set-key [pause] 'window-dedication-toggle) 

(defun window-dedication-toggle (&optional window force quiet) 
    "toggle or ensure the 'dedicated' state for a window" 
    (interactive) 
    (let* ((toggle t) (window (if window window (selected-window))) (dedicated (window-dedicated-p window))) 
     (cond ((equal force "on") (setq toggle (eq dedicated nil))) 
      ((equal force "off") (setq toggle (eq dedicated t)))) 
     (if toggle (progn 
     (setq dedicated (not dedicated)) 
     (set-window-dedicated-p window dedicated) 
     (if (not quiet) 
     (message "window %sdedicated to %s" (if (not dedicated) "no longer " "") (buffer-name))))))) 
1

你也可以嘗試添加下列到Emacs初始化文件:

(setq py-split-windows-on-execute-p nil) 

這將防止當前窗口在您運行任何py-execute- *之後發生分裂。 (這也意味着,如果python shell不在你的窗口中,python shell將不會顯示。)