Debugging Emacs:我可以限制缓冲区中的行数吗

Debugging Emacs:我可以限制缓冲区中的行数吗,debugging,emacs,lisp,elisp,Debugging,Emacs,Lisp,Elisp,对于通过Emacs和gdb调试应用程序,调试输出的行数有时可能会很快超过9xxxx。有没有办法在数量超过(例如1000)后强制Emacs删除旧线路 M-x comint-truncate-buffer 此命令将shell缓冲区截断为某个最大行数,该行数由变量comint buffer maximum size指定。下面是每次从子shell获得输出时自动执行此操作的方法: (add-hook 'comint-output-filter-functions 'comint-truncate-buf

对于通过Emacs和gdb调试应用程序,调试输出的行数有时可能会很快超过9xxxx。有没有办法在数量超过(例如1000)后强制Emacs删除旧线路

M-x comint-truncate-buffer
此命令将shell缓冲区截断为某个最大行数,该行数由变量
comint buffer maximum size
指定。下面是每次从子shell获得输出时自动执行此操作的方法:

(add-hook 'comint-output-filter-functions 'comint-truncate-buffer)

对于变量
comint buffer maximum size
,从
Descripte variable
打印的结果如下:

comint缓冲区最大大小
是在
comint.el
中定义的变量。它的值是1024

文件:

Comint缓冲区的最大行大小。如果函数
Comint truncate buffer'打开
Comint output filter functions',则Comint buffers将从顶部截断,使其不大于该数字


您可以自定义此变量。

是否有类似于
gdb debug log max
的变量?或者可能与
*Messages*
缓冲区等效,例如
message log max
?@lawlist是,第一个设置为128,第二个设置为1000。虽然我正在使用
shell
模式,因为
gud gdb
gdb
都有问题。不管怎样,我刚刚被测试过:即使在
gdb
模式下,在数字绕过128或1000之后,行也不会被删除。比如变量
comint buffer maximum size
和函数
comint truncate buffer
:我只是猜测,但这是一般的想法。还有其他shell模式类型的主要模式,变量可能会根据模式的不同而有所不同——例如,ansi term可能会使用类似
term buffer maximum size
@lawlist aha!您可以发布一个答案:设置钩子
(添加钩子'comint output filter functions'comint truncate buffer)
完成这项工作。
comint buffer maximum size
变量管理的行数,它是您设置的数字加上1(我假设⁺由于一个错误)。