如何使ESS默认水平分割窗口?

qed*_*qed 2 emacs r ess

我总是喜欢水平分割,因为屏幕有更多的水平空间.在python模式中,我可以通过设置来实现

 (py-split-windows-on-execute-function (quote split-window-horizontally))
Run Code Online (Sandbox Code Playgroud)

在ESS模式中有类似的东西吗?

Dan*_*Dan 5

我不知道ESS是否有任何模式特定的.但是,从帮助页面看,它看起来像split-window-preferred-function默认值split-window-sensibly,而后者又决定了如何基于split-width-threshold和拆分窗口split-height-threshold.设置前者nil禁止水平分割,后者nil禁止垂直分割.这些设置将是全球性的; 你可以把(setq-local split-height-threshold nil)你的ess-mode-hook.

编辑/扩展以反映@ qed的答案. 您可以考虑在函数中而不是在lambda中打包本地绑定,以便自己从钩子中删除该函数.

(defun forbid-vertical-split ()
  "Only permit horizontal window splits."
  (setq-local split-height-threshold nil)
  (setq-local split-width-threshold 0))

(require 'ess-site)
(add-hook 'ess-mode-hook
          'forbid-vertical-split)
Run Code Online (Sandbox Code Playgroud)