aquamacs:在C-c C-c上交换窗口(python模式)

时间:2011-08-10 21:15:20

标签: python emacs aquamacs

如果我在这里使用不正确的术语,我很抱歉,我只使用了几个月的emacs。

我刚刚在重新格式化的macbook上重新安装了Aquamacs,并且遇到了最奇怪的问题。

我打开一个.py文件,并使用C-c!打开一个python shell。所以我(如预期的那样),顶部窗口中的.py文件和底部窗口中的python shell。

如果我然后在.py文件中运行C-c C-c(py-execute-buffer),则两个窗口交换位置。我的意思是,.py文件缓冲区在底部窗口中打开一个新缓冲区,而python shell在顶部窗口中打开一个新缓冲区。所以基本上,他们交换头寸。反复使用C-c C-c再次将窗口交换回来...所以他们正在改变位置。此外,两个窗口(顶部和底部)都有选项卡中的缓冲区(.py文件和python shell)。

我还没有对默认设置进行任何修改,我已经遇到了2.3a和2.3的问题(2.3以前在机器上没有这个问题,所以我尝试回滚。 ..无济于事。)

有谁知道如何阻止这种行为?提前谢谢!

3 个答案:

答案 0 :(得分:2)

将以下内容添加到Aquamacs中的Emacs init文件中,以防止它交换缓冲区:

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

答案 1 :(得分:1)

您还可以尝试将以下内容添加到emacs init文件中:

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

在运行任何py-execute- *之后,这将阻止当前窗口分裂。 (这也意味着如果python shell不在你的某个窗口中,它就不会显示出来。)

答案 2 :(得分:0)

我不使用Aquamacs并且无法重现您描述的行为,但是,请尝试使用此代码将其中任何一个窗口切换为“专用”。将窗口锁定到缓冲区是我在启动和运行emacs时想要做的第一件事。也许这会对你有帮助。

将代码添加到'.emacs',然后'标记'(选择)区域'S-<按键>'然后'M-x 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)))))))