Subject: bug#58839: 29.0.50; project-kill-buffer fails when Eglot is running

From: Philip Kaludercic <[email-masked]>
Date: Fri, 28 Oct 2022 12:56:52 +0000

When wanting to clean up behind a project I like to use C-x p k to get
rid of everything I have opened related to it.  If I was using Eglot and
there is still an active LSP server running in the background, killing
the project fails with these messages:

--8<---------------cut here---------------start------------->8---
Kill 7 buffers in ~/Source/sgo/? (y or n) y
[eglot] error sending textDocument/didClose: (error Process EGLOT (sgo/(c-mode c++-mode)) not running: hangup
)
[eglot] error sending textDocument/didClose: (error Process EGLOT (sgo/(c-mode c++-mode)) not running: hangup
)
[eglot] error sending textDocument/didClose: (error Process EGLOT (sgo/(c-mode c++-mode)) not running: hangup
)
[eglot] Asking EGLOT (sgo/(c-mode c++-mode)) politely to terminate
[jsonrpc] Server exited with status 1
down-list: Process EGLOT (sgo/(c-mode c++-mode)) not running: hangup
--8<---------------cut here---------------end--------------->8---

Running C-x p k a second time does succeed.

The issue was previously also discussed here:
https://github.com/joaotavora/eglot/discussions/822#discussioncomment-3986357

In GNU Emacs 29.0.50 (build 23, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.17.6) of 2022-10-22 built on rhea
Repository revision: ab283bddb2505e767bdf08b063c648b87d71d33a
Repository branch: feature/package+vc
System Description: Fedora Linux 36 (Workstation Edition)

Configured using:
 'configure --with-pgtk --with-imagemagick'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK
JPEG JSON LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER
PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS XIM
GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: ELisp/d

Minor modes in effect:
  TeX-PDF-mode: t
  rcirc-color-mode: t
  rcirc-track-minor-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  outline-minor-mode: t
  flymake-mode: t
  yas-minor-mode: t
  flyspell-mode: t
  repeat-mode: t
  display-battery-mode: t
  display-time-mode: t
  diff-hl-flydiff-mode: t
  diff-hl-mode: t
  winner-mode: t
  windmove-mode: t
  corfu-history-mode: t
  corfu-mode: t
  vertico-multiform-mode: t
  vertico-mode: t
  electric-pair-mode: t
  shell-dirtrack-mode: t
  recentf-mode: t
  save-place-mode: t
  savehist-mode: t
  pixel-scroll-precision-mode: t
  pixel-scroll-mode: t
  xterm-mouse-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/philip/.config/emacs/site-lisp/flymake-proselint/flymake-proselint hides /home/philip/.config/emacs/elpa/flymake-proselint-0.3.0/flymake-proselint
/home/philip/.config/emacs/elpa/transient-0.3.7/transient hides /home/philip/Source/emacs/lisp/transient
/home/philip/.config/emacs/elpa/xref-1.5.1/xref hides /home/philip/Source/emacs/lisp/progmodes/xref

Features:
(shadow emacsbug go-mode find-file etags fileloop nroff-mode dictionary
dictionary-connection vertico-buffer loadhist embark ffap url-cache
url-http url-auth url-gw display-line-numbers vc-annotate reposition
multi-prompt two-column shortdoc rect gnus-draft ox-odt rng-loc rng-uri
rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
nxml-enc xmltok nxml-util ox-latex ox-icalendar org-agenda org-refile
ox-html table ox-ascii ox-publish ox reftex-sel cursor-sensor
reftex-parse reftex-toc consult-vertico consult compat-28 magit-bookmark
bookmark em-unix em-term term ehelp em-script em-prompt em-ls em-hist
em-pred em-glob em-extpipe em-cmpl em-dirs esh-var em-basic em-banner
em-alias esh-mode eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg
esh-module esh-groups esh-util ange-ftp whitespace preview reporter
desktop frameset tex-fold reftex-dcr reftex-auc reftex reftex-loaddefs
reftex-vars font-latex latex latex-flymake tex-ispell tex-style tex
texmathp tex-mode latexenc mhtml-mode css-mode js sgml-mode facemenu
gnus-search eieio-opt mailalias smtpmail rcirc-color rcirc
autocrypt-message ecomplete flow-fill mm-archive sh-script smie
executable quail org-element avl-tree generator ol-eww eww url-queue
mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect ol-docview
doc-view jka-compr image-mode exif ol-bibtex ol-bbdb ol-w3m ol-doi
org-link-doi org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-footnote org-src ob-comint org-pcomplete org-list org-faces
org-entities org-version ob-emacs-lisp ob-core ob-eval org-table
oc-basic bibtex ol org-keys oc org-compat org-macs org-loaddefs cal-menu
calendar cal-loaddefs ef-bio-theme ef-autumn-theme ef-frost-theme
ef-night-theme ietf-drums-date sort smiley gnus-cite mail-extr textsec
uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check qp
gnus-async gnus-bcklg gnus-ml disp-table autocrypt-gnus autocrypt
nndraft nnmh utf-7 nnfolder epa-file network-stream nsm gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu
mml2015 mm-view mml-smime smime gnutls dig nntp gnus-cache gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec
gnus-int gnus-range gnus-win ef-duo-dark-theme ef-trio-dark-theme
ef-trio-light-theme ef-themes cus-theme flymake-proselint xdg apropos
tabify cus-start cl-print mule-util pulse markdown-mode color profiler
avy copyright cc-mode advice cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-langs cc-vars cc-defs cc-bytecomp
magit-extras goto-addr face-remap magit-submodule magit-obsolete
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence
magit-notes magit-worktree magit-tag magit-merge magit-branch
magit-reset magit-files magit-refs magit-status magit magit-repos
magit-apply magit-wip magit-log which-func edebug magit-diff smerge-mode
git-commit log-edit message yank-media puny rfc822 mml mml-sec epa
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader add-log magit-core magit-autorevert magit-margin
magit-transient magit-process with-editor server magit-mode transient
edmacro kmacro magit-git magit-section magit-utils crm dash dired-aux
gnus-dired autorevert char-fold misearch multi-isearch bug-reference
buffer-env compat vc-backup vc-fossil vc-hg vc-git vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs eglot array filenotify jsonrpc ert debug backtrace
xref imenu find-func vertico-directory orderless vertico-flat noutline
outline so-long checkdoc flymake-proc flymake warnings
yasnippet-snippets yasnippet flyspell ispell init auth-source-pass
repeat project battery dbus xml shell-command+ thingatpt dired-x time
sendmail rfc2047 rfc2045 ietf-drums gnus nnheader gnus-util mail-utils
range mm-util mail-prsvr finder-inf diff-hl-flydiff diff diff-hl
log-view pcvs-util vc-dir ewoc vc dired dired-loaddefs vc-dispatcher
diff-mode hippie-exp winner windmove corfu-history corfu
vertico-multiform vertico elec-pair tramp-sh tramp tramp-cache
time-stamp tramp-loaddefs trampver tramp-integration cus-edit pp icons
tramp-compat shell pcomplete parse-time iso8601 time-date ls-lisp
format-spec recentf tree-widget wid-edit saveplace savehist pixel-scroll
cua-base xt-mouse modus-operandi-theme modus-themes cus-load setup
site-lisp auto-site loaddefs-gen lisp-mnt auctex-autoloads tex-site
ef-themes-autoloads xr-autoloads consult-autoloads corfu-autoloads
focus-autoloads vertico-autoloads debbugs-autoloads
rcirc-color-autoloads inspector-autoloads flymake-proselint-autoloads
geiser-guile-autoloads xref-autoloads vc-fossil-autoloads
diff-hl-autoloads crdt-autoloads embark-autoloads magit-autoloads
buffer-env-autoloads compat-autoloads geiser-chibi-autoloads geiser-impl
help-fns radix-tree geiser-custom geiser-base geiser-autoloads
slime-autoloads transient-autoloads info speedbar ezimage dframe package
let-alist cl-extra help-mode browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source eieio
eieio-core password-cache json map byte-opt bytecomp byte-compile
derived cl-seq compile easy-mmode files-x rx text-property-search comint
ansi-osc ansi-color ring cconv cl-macs gv pcase url-vars inline epg
rfc6068 epg-config subr-x cl-loaddefs cl-lib rmc iso-transl tooltip
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/pgtk-win pgtk-win term/common-win pgtk-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
gtk pgtk multi-tty make-network-process emacs)

Memory information:
((conses 16 1976854 260727)
 (symbols 48 63144 155)
 (strings 32 275874 35428)
 (string-bytes 1 8519084)
 (vectors 16 169530)
 (vector-slots 8 3195578 164029)
 (floats 8 1123 670)
 (intervals 56 51553 1925)
 (buffers 1000 89))