在通过Emacs和gdb调试应用程序时,调试输出的行数有时可能会快速超过9xxxx。是否有一种方法可以强制Emacs在超过1000行后删除旧行?
M-x comint-truncate-buffer
这个命令将 shell 缓冲区截断为一定数量的最大行数,由变量 comint-buffer-maximum-size
指定。以下是每次从子 shell 获取输出时自动执行此操作的方法:
(add-hook 'comint-output-filter-functions 'comint-truncate-buffer)
comint-buffer-maximum-size
,从describe-variable
的输出来看,如下所示:
comint-buffer-maximum-size
是一个在comint.el
中定义的变量。它的值为1024。comint-truncate-buffer' is on
comint-output-filter-functions',则会将Comint缓冲区从顶部截断,以使其不超过此数字。
gdb-debug-log-max
这样的变量?或者对于*Messages*
缓冲区,是否有相应的等效变量,例如message-log-max
? - lawlistshell
模式,因为gud-gdb
和gdb
都有问题。无论如何,我只是测试了一下:即使在gdb
模式下,行数在绕过128或1000后也不会被删除。 - Hi-Angelcomint-buffer-maximum-size
和函数comint-truncate-buffer
,例如:https://www.gnu.org/software/emacs/manual/html_node/emacs/Shell-Mode.html。我只是猜测,但这是一般的想法。还有其他类型的主要shell模式,根据不同的模式,变量可能会有所不同--例如,ansi-term可能会使用类似于`term-buffer-maximum-size`的东西。 - lawlist(add-hook 'comint-output-filter-functions 'comint-truncate-buffer)
就可以完成任务了。由comint-buffer-maximum-size
变量管理的行数,它将是您设置的行数加1 *(我猜这是由于一个错误)*。 - Hi-Angel