在emacs python-mode中自定义窗口拆分

3
每次我在emacs python-mode中向python控制台发送一条命令时,它都会执行split-window-below操作,就像这样: enter image description here 在大多数电脑屏幕上,垂直维度很受限制,因此更希望触发split-window-right操作,就像这样: enter image description here 这可以手动完成(c-x 1 c-x 3 c-x o c-x b),但一旦从源文件执行任何Python代码,布局将返回到烦人的模式。
有没有一种持久性的定制方式呢?
编辑:
我尝试了一些东西,包括下面评论中提出的答案。到目前为止,在.emacs文件中添加以下几行“有点”有效:
(setq split-height-threshold nil)
(setq split-width-threshold 0)

除此之外,它们会在下方添加一个额外的窗口:

enter image description here


请参考此问题答案,以获取一个通用的解决方案,告诉Emacs优先使用并排窗口分割而不是堆叠的。如果您只想为python-mode缓冲区自定义行为,则可以简单地将对setq(答案中代码的最后一行)的调用包装在一个函数中:(defun prefer-side-by-side-splits () ...),并通过(add-hook 'python-mode-hook 'prefer-side-by-side-splits)将该函数添加到python-mode-hook中。 - itsjeyd
我试过那个,但是它没有改变任何东西。 - qed
2个回答

6
基于您的模型行包含 Py 作为主要模式指示符的事实,我假设您正在使用 python-mode.el 而不是内置的 python.el。该软件包定义了一个名为 py-split-windows-on-execute-function 的变量,允许您在调用来自 py-execute-* 组中的命令时指定要使用的分割窗口函数。
为了使水平(并排)分割成为显示 python-mode 缓冲区的窗口的默认设置,请将以下内容添加到您的 .emacs 文件中:
(require 'python-mode)
(setq-default py-split-windows-on-execute-function 'split-window-horizontally)

请注意,您必须使用setq-default而不是setq,因为py-split-windows-on-execute-function缓冲区局部变量

1
或者,除了itsjeyd所说的之外,只需:


M-x customize-variable RET py-split-windows-on-execute-function RET

然后从“价值菜单”中进行选择。

这真的很好。ESS模式有类似的东西吗? - qed
@qed 不知道。也许可以提出一个新问题? - Andreas Röhler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接