如何避免emacs一直filtering使得emacs卡顿

自己在使用emacs过程中遇到两种情况比较卡顿或速度比较慢。自己的工作流会经常涉及大量的文件,一个文件夹都是几万张图像的那种。

第一种就是删除文件。比如一个文件夹里面很多文件(两万张甚至更多图像),如果使用dired进行删除,印象中速度慢好多,且提示filtering之类的信息。此时基本上不能进行其他工作。

第二种就是使用emacs打开的文件夹没有及时关闭,如果对该文件夹修改(比如终端重命文件或删除增加文件之类),emacs会一直显示filtering,此时emacs好像在类似扫描记录什么东西,非常卡顿。之后如果有任何emacs打开的文件夹进行修改,就会发现emacs底部一直显示filtering,此时emacs会非常卡顿。

不知道大家遇到没有,如何解决?

我好像从来没见过 filtering 这种消息,是插件的吗,

可以用这个 debug-on-message 看看

另外大量的文件我一般是直接 async-shell-command

1 个赞

类似这种。你说的debug-on-message这个命令我这边没有这个命令。

另外emacs使用dired-mode删除一个文件夹,好像有类似扫描的操作。和终端rm进行删除操作的速度不一样,终端删除肯定是很快的。emacs貌似有一些慢,但是还好,还能忍受。

你可以试试

  1. M-x profilter-start
  2. 执行操作
  3. M-x profilter-report

看一下究竟是哪个函数在拖慢你的运行。

@fdaf 说的 debug-on-message 我也没听说过,不过你可以试试emacs自带的 debug-on-entry 追踪你想单步的函数。

dired的代码本身不是很干净,老插件也可能存在bug。

1 个赞

debug-on-message 是个变量运行 setq debug-on-message "Filter" 看看

4 个赞

我也是第一次听说 debug-on-message,曾经有类似需求,没找到,原来是个变量,这下学到了!

晚上编辑个 .pas 文件,突然 Emacs 不响应了,卡了好几分钟,我只能打开 vimR 用一会先 :broken_heart:

要是 Emacs 有个 frozen detect 就好了,超过 5s 就提示下,现在这状态太不爽了,没任何消息提示。