我希望能够org-mode
在 AUCTeX 中使用一些类似 的功能。在 中org-mode
,您可以将缓冲区缩小到一个节点,也可以将节点直接发送到单独的缓冲区进行编辑。
在 AUCTeX 中如何实现这一点?具体来说,我希望能够执行以下功能:
- 将确定其所属的最具体环境
- 大概利用指向并标记以捕捉整个环境
- 做以下两件事之一:
- 将缓冲区缩小到该区域(可能是最简单的)
- 将此区域发送到另一个缓冲区,每个缓冲区中的相关更改都会反映在每个缓冲区中,保存“缩小的”缓冲区会保存原始文件。(我不确定这在内部是如何工作的
org-mode
---请参阅org-tree-to-indirect-buffer
和间接缓冲区在 Emacs 文档中。
理想的选择是完全模拟org-tree-to-indirect-buffer
,可能只涉及几个步骤
- 从当前缓冲区创建间接缓冲区
- 将该间接缓冲区重命名为有用的名称(也许
buffername<envname>
?) - 缩小间接缓冲区
答案1
您可以通过交互方式按照要求进行操作
C-x 4 c C-c . C-x n n
克隆缓冲区,标记封闭环境,然后缩小到该环境。要将其构建为单个函数,您需要向函数传递适当的参数。
首先clone-indirect-buffer
使用nil
新缓冲区的默认新名称,并t
在新窗口中打开它。
标记是通过 实现的LaTeX-mark-environment
,这无需争论。
最后,narrow-to-region
需要区域的开始和结束。 LaTeX-mark-environment
已将 放在point
开始和mark
结束处。相应的缓冲区位置由函数(point)
和提供(mark)
。
(defun clone-focus-environment ()
"Focus on the current environment.
Clone the current buffer to an indirect buffer and narrow to the
environment current the current point."
(interactive "*")
(clone-indirect-buffer nil t)
(LaTeX-mark-environment)
(narrow-to-region (point) (mark)))