Juri, this doesn't seem right. Eglot shouldn't be turning itself on in hidden buffers to start with: It's totally useless there. So you have to explain an Emacs -Q recipe that demonstrates how Eglot reached this nonsensical state. You haven't done that (or have you and i have missed it?). I tried project-find-regexp with Eglot-managed files with no problems, but I have no idea what you're doing. Also, this problem is totally off-topic here: this is about project-kill-buffers. Please start as new issue of you haven't already. João On Thu, Nov 3, 2022, 17:39 Juri Linkov wrote: > > OTOH I completely support the request to make Eglot more resilient > > to unforeseeable situations. Currently it's so brittle, so I get a lot > > of such errors all the time: > > > > Debugger entered--Lisp error: (wrong-type-argument arrayp nil) > > file-truename(nil) > > eglot--path-to-uri(nil) > > eglot--TextDocumentIdentifier() > > eglot--signal-textDocument/didClose() > > kill-buffer(#) > > xref--convert-hits(...) > > xref-matches-in-files("word" ...) > > project--find-regexp-in-files("word" ...) > > apply(project--find-regexp-in-files ("word" ...)) > > xref--show-xref-buffer(...) > > xref--show-xrefs(...) > > xref-show-xrefs(...) > > project-find-regexp("word") > > funcall-interactively(project-find-regexp "word") > > command-execute(project-find-regexp) > > Here's a patch that fixes this: > > diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el > index c5870618372..5b05f84c63c 100644 > --- a/lisp/progmodes/eglot.el > +++ b/lisp/progmodes/eglot.el > @@ -1792,7 +1792,9 @@ eglot--maybe-activate-editing-mode > (unless eglot--managed-mode > ;; Called when `revert-buffer-in-progress-p' is t but > ;; `revert-buffer-preserve-modes' is nil. > - (when (and buffer-file-name (eglot-current-server)) > + (when (and buffer-file-name > + (not (string-match-p "\\` " (buffer-name))) > + (eglot-current-server)) > (setq eglot--diagnostics nil) > (eglot--managed-mode) > (eglot--signal-textDocument/didOpen)))) >