emacs - 如何在 emacs 的新垂直拆分窗口中创建 org-capture 打开缓冲区?
问题描述
如何修改 org-capture 的行为并使其在选择模板后将新打开的缓冲区放置在 Emacs 上的新垂直拆分窗口中?更准确地说,如何使捕获的模板窗口位于(split-window-below)当前焦点窗口或最左侧窗口的下方?
解决方案
这是一个复杂的主题(我不完全理解 - 警告购买者!)。问题是与实际进行窗口分割的函数之间存在很长的概念距离org-capture
,该函数称为split-window-sensibly
. 所以有很多地方你可以想象插入行为的变化,但问题是无论你做什么都可能会破坏很多其他与捕获无关的事情。
split-window-sensibly
但是(do to read it)的文档字符串C-h f split-window-sensibly RET
确实提到了两个变量:
默认情况下
display-buffer
,例程调用此函数来拆分最大或最近最少使用的窗口。要更改默认自定义选项split-window-preferred-function
。您可以通过将变量设置(或绑定)
split-width-threshold
为零来强制此函数不水平拆分 WINDOW。此外,如果您设置split-height-threshold
为零,则此函数垂直拆分 WINDOW 的机会会增加。为了不垂直拆分 WINDOW,请将变量设置(或绑定)
split-height-threshold
为零。此外,您可以将 `split-width-threshold' 设置为零,以使水平拆分更有可能发生。
所以我建议你定义自己的 org-capture 函数,在调用“真实”`org-capture 之前使用 let-bind 设置这些变量:
(defun my-org-capture ()
(interactive)
(let ((split-width-threshold nil)
(split-height-threshold 0))
(org-capture)))
并使用它而不是“真实”的。例如,您可以通过执行将其绑定到 Org 模式手册推荐的内容
(global-set-key (kbd "C-c c") 'my-org-capture)
(或修改您使用的任何键绑定)。
这样做的好处是它只会修改你调用的方式org-capture
,所以几乎没有机会破坏其他任何东西。如有必要,您可以轻松撤消更改。
推荐阅读
- php - 警告:require_once():打开流失败:中没有这样的文件或目录
- python - 找不到带有 Splinter 的元素,尝试了所有方法并每次都返回空字符串
- python-3.x - 应用连接组件后如何屏蔽或裁剪图像区域
- oracle-apex - Oracle Apex 5.1.1 带有 PL/SQL 的交互式报表
- gradle - Gradlew 无法预留 3G 堆内存。属性设置为1G
- node.js - ejs文件中的相对路径
- ios - UITableView 标题部分的高度不会为自定义 UIView() 类自动调整
- html - CSS - 通过其结构而不是大量的类来样式化网站
- yii - Yii 搜索重复的结果
- c++ - qt优化轮廓文本的绘制