如何在emacs中的新垂直拆分窗口中使组织捕获打开缓冲区?

问题描述 投票:0回答:1

我如何修改org-capture的行为,并在选择模板后将新打开的缓冲区放置在Emacs上新的垂直拆分窗口中?更精确地讲,如何使捕获的模板窗口放置在当前集中的窗口或最左边的窗口下方(分割窗口下方)?

emacs org-mode
1个回答
0
投票

这是一个复杂的主题(我不完全理解-告诫者!)。问题在于,org-capture与实际进行窗口分割的函数(称为split-window-sensibly)之间的概念距离很长。因此,在很多地方都可以想象到您对行为的改变进行干预,但是麻烦的是,无论您采取哪种方式,都可能破坏很多与捕获无关的其他事情。

split-window-sensibly的文档字符串(执行C-h f split-window-sensibly RET读取它确实提到了两个变量:

默认情况下,display-buffer例程调用此函数进行拆分 最大或最近最少使用的窗口。更改默认值 定制选项split-window-preferred-function

您可以强制执行此功能以不水平分割WINDOW, 通过设置(或绑定)变量split-width-threshold为 零。此外,如果您将split-height-threshold设置为零, 该函数确实会垂直拆分窗口的机会增加。

为了不垂直拆分窗口,请设置(或绑定) 变量split-height-threshold为零。此外,您可以 将“ split-width-threshold”设置为零以进行水平分割 更有可能发生。

因此,我建议您定义自己的org-capture函数,该函数在调用“ real”`org-capture之前使用let-bind设置这些变量:

(defun my-org-capture ()
  (interactive)
  (let ((split-width-threshold nil)
        (split-height-threshold 0))
     (org-capture)))

并使用it而不是“真实”的。例如。您可以通过执行

将其绑定到组织模式手册建议的内容
     (global-set-key (kbd "C-c c") 'my-org-capture)

(或修改您使用的任何键绑定)。

这样做的优点是它[[only修改了您如何调用org-capture,因此几乎没有机会破坏其他任何内容。如果需要,您可以轻松撤消更改。

© www.soinside.com 2019 - 2024. All rights reserved.