在 AUCTeX 中缩小到环境

在 AUCTeX 中缩小到环境

我希望能够org-mode在 AUCTeX 中使用一些类似 的功能。在 中org-mode,您可以将缓冲区缩小到一个节点,也可以将节点直接发送到单独的缓冲区进行编辑。

在 AUCTeX 中如何实现这一点?具体来说,我希望能够执行以下功能:

  • 将确定其所属的最具体环境
  • 大概利用指向并标记以捕捉整个环境
  • 做以下两件事之一:
    • 将缓冲区缩小到该区域(可能是最简单的)
    • 将此区域发送到另一个缓冲区,每个缓冲区中的相关更改都会反映在每个缓冲区中,保存“缩小的”缓冲区会保存原始文件。(我不确定这在内部是如何工作的org-mode---请参阅org-tree-to-indirect-buffer间接缓冲区在 Emacs 文档中。

理想的选择是完全模拟org-tree-to-indirect-buffer,可能只涉及几个步骤

  1. 从当前缓冲区创建间接缓冲区
  2. 将该间接缓冲区重命名为有用的名称(也许buffername<envname>?)
  3. 缩小间接缓冲区

答案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)))

相关内容