【发布时间】:2021-03-20 18:58:11
【问题描述】:
我想阻止 ESS 更改我的窗口配置,但是当 ESS tracebug 处于活动状态时,进入调试会更改窗口配置。
假设emacs框架中有三个窗口:(1)一个定义函数的R文件; (2) 调用 (1) 中定义的函数的 R 脚本; (3):劣质Ress过程。如果从 (2) 我将代码发送到 R 解释器,默认情况下 (2) 将被 (1) 替换(显示要评估的行等)。显示 (3) 的窗口留在原来的位置;所以我们实际上将 (1) 中的缓冲区显示了两次(在 2 和 1)。
在这种配置下发生这种情况(以emacs -Q 启动emacs)
(package-initialize)
(use-package ess)
我还有一个额外的配置(本着“不要破坏我的窗口配置:我会告诉你在哪个窗口开始通过在那里发出M-x R”的精神):
(setq display-buffer-alist
'(("*R" . (display-buffer-same-window)))
)
使用此配置,在调试下,窗口 (2) 现在显示 R 会话(即,劣质 R 缓冲区显示在原始窗口位置 3,现在也显示在 2)。
下面的屏幕截图显示了这个问题。第一个屏幕截图,其中三个窗口如上所述(1、2、3,从上到下)。
在将函数评估为 R (C-c C-f) 之后立即进行的第二张屏幕截图(使用 display-buffer-same-window 的配置),然后从 (2) 中评估行 (C-c C-n)。
如果我禁用 tracebug,M-x ess-tracebug,则不会发生任何窗口更改,但我不想在包含代码的窗口(窗口 1)上执行后禁用。我想使用 tracebug 但要避免对我的窗口配置进行任何更改:只显示 (1) 和调试内容,但不理会 (2)。我该怎么做?
【问题讨论】: