Emacs 如何在gud中关闭*输入/输出*缓冲区

Emacs 如何在gud中关闭*输入/输出*缓冲区,emacs,gdb,gud,Emacs,Gdb,Gud,我最近从23切换到使用GNU Emacs 24,我注意到每当我输入gud时,*输入/输出*缓冲区都是打开的。每次调试时,我都会用C-x 0手动关闭它。有人能告诉我需要配置的正确变量,以便在默认情况下停止显示此缓冲区吗?我也有这个问题。在快速查看源代码之后,问题似乎是GUD将其大部分窗口专用(即,它在这些窗口上调用set-window-dedicated-p)。专用窗口是无法从中切换的窗口。我猜越来越多的年轻人在许多windows模式下使用GUD,希望GUD管理他们的窗口布局,而我们中喜欢手动操作

我最近从23切换到使用GNU Emacs 24,我注意到每当我输入gud时,*输入/输出*缓冲区都是打开的。每次调试时,我都会用C-x 0手动关闭它。有人能告诉我需要配置的正确变量,以便在默认情况下停止显示此缓冲区吗?

我也有这个问题。在快速查看源代码之后,问题似乎是GUD将其大部分窗口专用(即,它在这些窗口上调用
set-window-dedicated-p
)。专用窗口是无法从中切换的窗口。我猜越来越多的年轻人在许多windows模式下使用GUD,希望GUD管理他们的窗口布局,而我们中喜欢手动操作的人是少数。gdb-mi.el中似乎没有任何明显的东西禁用此行为(例如,
gdb set window buffer
似乎总是对它管理的所有窗口执行
set-window-dedicated-p
t


现在,或多或少是我正在使用的——我手动停用窗口。不过,这似乎不太理想。应该有办法让GUD让您手动管理窗口布局

在新的emacs版本中有一个“gud gdb”,它实现了gdb/emacs交互的旧行为(没有专用窗口和I/O缓冲区)。如果您不想在使用M-x gud gdb时调用它,您可以为M-x gdb定义一个别名,您可以完全禁用窗口奉献,如下所示:(在Emacs 24.4+中)


请注意,这不会影响已经专用的窗口。

thanx。。默认的gdb行为是不受欢迎的,因为M-x gdb许多窗口已经永远存在。在窗口锁定到位并阻止缓冲区切换之前,这不是gdb行为。这看起来是源代码箭头之前emacs中古老的gdb行为,天哪,1985年?就像在emacs中的外壳中运行它。出于某种原因,您的修复只起到了一点作用-然后在专用模式下再次弹出窗口,每次它都会得到一个新的输出。所谓“年轻人”,您指的是那些不是emacs用户的人,他们强迫gdb看起来像他们最喜欢的其他工具,但功能几乎没有那么强大。我怀疑,在少数人中,我认识的每个人都有这种行为。虽然现在我正在为这个打破其他东西的问题进行修复。emacs的一个主要设计特征是它让用户控制界面。这让我们回到了一个被强加在我们身上的接口,它迫使我查看一个没有任何有意义信息的缓冲区,同时阻止我切换到我想要查看的缓冲区。
(defun set-window-undedicated-p (window flag)
 "Never set window dedicated."
 flag)

(advice-add 'set-window-dedicated-p :override #'set-window-undedicated-p)