用 file-notify-add-watch 监听一个文件夹,可以捕获到文件夹内文件的编辑修改吗?

lsp-modefile-notify-add-watch 来监听文件夹,实现当文件夹下的文件修改的时候触发 workspace/didChangeWatchedFiles,但是看这个方法的文档显示的,文件夹的监听只能捕获文件夹下文件的创建和删除,如果修改文件内容回调没有触发。代码如下:

在 vanilla Emacs 下尝试之后发现,默认修改文件的时候会在当前文件夹下面生成 .#xxx的备份文件,所以能够触发文件夹的监听事件,但是 doom-emacs 下面将这种文件都集中到一个统一的文件夹下面, 所以这个监听就不会触发。同样在 vscode 下面编辑这个文件,更不会触发了。

具体 issue 见这个: file-notify-add-watch watch a directory doesn't work when backup file disabled or edit file in vscode? · Issue #3296 · emacs-lsp/lsp-mode · GitHub

这个有解不?

你的意思是Vanilla Emacs的行为是你想要的,你想在 Doom Emacs 里面实现同样的功能吗?

那倒不是 只是在Mac上filenotify.el对文件夹的监听在这种情况下,监听不到里面文件的更新,即使实现了原生emacs的功能,那在vscode中编辑也不能触发监听。 刚又看了下文档,它说有些backends可以支持文件变化的更新,不知道Mac上有没有可以支持的,如果有那就是没安装估计

我试了下 linux 和 windows, 它们监听的库用的分别是 inotifyw32notify ,都可以正常工作,但是在 Mac 上,用的 kqueue ,在我这里是监听不到的。

看到了这个 issues ,感觉 mac 上 fsevents 是支持的,只是看起来 emacs 目前是不支持的。

不太清楚 kqueue的工作原理… 帮不上忙,坐等大神出现。