project-files-relative-names was introduced a few months ago, so it's no surprise that there are some side effects when set.
This affects the handler for workspace/didChangeWatchedFiles. The result is that dirs-to-watch...
(dirs-to-watch
(delete-dups (mapcar #'file-name-directory
(project-files
(eglot--project server))))))
...is nil when project-files-relative-names is t, due to file-name-directory failing to parse the directories it was expecting. This results in file-readable-p failing with a nil dir:
(watch-dir (dir)
(when-let ((probe
(and (file-readable-p dir)
One solution which I've tested is simply the defensive:
(project-files-relative-names nil) ; add this
(dirs-to-watch
(delete-dups (mapcar #'file-name-directory
(project-files
(eglot--project server))))))
-Stephane