Emacs+;AucTex:can';t当reftex toc窗口专用时,显示输出窗口

Emacs+;AucTex:can';t当reftex toc窗口专用时,显示输出窗口,emacs,latex,elisp,Emacs,Latex,Elisp,我正在使用Emacs+AucTeX编辑latex文件。工作时,框架中有两个窗口:latex文件窗口和reftex toc窗口。我通过设置reftex toc窗口专用于其缓冲区 (defadvice reftex-toc (after reftex-toc-window-dedicated activate) (set-window-dedicated-p (selected-window) t)) 防止它被替换 但是当我通过C-C-l调用(TeX-recenter-output-buff

我正在使用Emacs+AucTeX编辑latex文件。工作时,框架中有两个窗口:latex文件窗口和reftex toc窗口。我通过设置reftex toc窗口专用于其缓冲区

(defadvice reftex-toc (after reftex-toc-window-dedicated activate)
   (set-window-dedicated-p (selected-window) t))
防止它被替换

但是当我通过
C-C-l
调用
(TeX-recenter-output-buffer)
时会出现问题。无法显示输出缓冲区。我必须通过
C-x b
手动切换到输出缓冲区。如果我调用帮助命令,例如
C-hf
,则帮助缓冲区不会按应有的方式显示在新窗口中。相反,它将替换latex文件窗口。我如何解决这个问题

编辑

我发现问题是由于函数
(显示缓冲区)
,该函数在内部由
(TeX-recenter-output-buffer)
调用。在帧中没有专用窗口的正常情况下,
(显示缓冲区)
为缓冲区创建一个新窗口。但如果有一个专用窗口和一些普通窗口,
(显示缓冲区)
只在其中一个普通窗口中显示缓冲区,而不创建新窗口


作为一种解决方法,我打开了另一个(第三个)窗口,这样,如果我调用
C-C-l
,编译输出将显示在那里,latex文件窗口将保留。然而,我仍然期待着一个真正的解决办法。有人能帮忙吗?谢谢。

更改
TeX-recenter-output-buffer
,使其使用您自己的
display-bufer
功能,而不是
TeX-pop-to-buffer
——由您决定选择哪个窗口,或者,如果没有任何内容符合您选择现有窗口的标准,则创建一个新窗口。以下是指向Emacs手册的链接,该手册演示了如何使用
显示缓冲区来控制某些选项:准备花一些时间阅读/试验。然后,看看
window.el
的源代码,准备花更多的时间阅读/实验。然后编写您自己的函数,该函数完全满足您的要求。@lawlist谢谢您的评论。我正在读
window.el
和手册。这需要一些时间。可能我需要修改
弹出缓冲区
显示缓冲区
。只是想知道为什么开发人员引入了专用窗口,但没有使显示功能对齐。是否有任何特殊考虑?通常最好只触摸/修改与特定功能相关的行为,否则,当修改后的功能被其他功能使用时,可能会产生意外的副作用(可能不会立即显示)。也许您可以word搜索所有AUCTeX源文件,查看是否使用了其他
TeX recenter output buffer
,这样您就可以了解使用自己的
display buffer
自定义函数仅修改该函数的深远范围(如果有的话)。可能是开发团队中的某个人(如果他们阅读了此线程)可以解释为什么
显示缓冲区
在处理
专用
窗口时会以特定方式作出反应。一旦我发现默认行为不是我想要的,我通常只编写自己的函数。我有一些我自己经常使用的函数,包括一个whoper函数,它选择要显示的帧和窗口:另请参见以下示例:和