Subject: bug#44629: 28.0.50; Eglot noisy with gfm-view-mode and view-read-only

From: "Basil L. Contovounesios" <[email-masked]>
Date: Sat, 14 Nov 2020 10:58:04 +0000

X-Debbugs-Cc: "João Távora" <[email-masked]>
Severity: minor

With Eglot, gfm-view-mode, and non-nil view-read-only, the echo area
becomes quite congested.  Here's an example that assumes you have
previously installed the eglot (GNU ELPA) and markdown-mode (MELPA)
packages using a vanilla package.el configuration, as well as pyls, the
default Python language server that Eglot expects:

0. emacs -Q
1. (setq view-read-only t) C-j
2. M-x package-initialize RET
3. C-x C-f /tmp/foo.py RET
4. Enter the following Python:

  def foo():
      bar = 1

5. M-x eglot RET (and wait for things to settle down)
6. M-x flymake-goto-next-error RET (and wait for things to settle down)

The echo area is now taken over by the view-mode-enter message
"View mode: type C-h for help, h for commands, q to quit."

This message also appears at various other stages of editing, but when
hovering over variables or flymake errors it seems to be the last one
standing in the echo area.

This happens because eglot--format-markup calls gfm-view-mode, which in
turn enables read-only-mode, which in turn calls view-mode-enter.

I can't disable this by setting view-read-only or
view-inhibit-help-message locally, since Eglot does its doc processing
in a different buffer.

Perhaps Eglot could/should bind view-inhibit-help-message around
gfm-view-mode?  Any other ideas?

Thanks,

-- 
Basil

In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw3d scroll bars)
 of 2020-11-11 built on thunk
Repository revision: e7b4f465e8b2ec1c8d54a611db7eca44ae350711
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12008000
System Description: Debian GNU/Linux bullseye/sid

Configured using:
 'configure 'CC=ccache gcc' 'CFLAGS=-O2 -march=native' --config-cache
 --prefix=/home/blc/.local --with-x-toolkit=lucid
 --with-file-notification=yes --with-x'

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB
NOTIFY INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT
LIBOTF ZLIB TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM MODULES THREADS
LIBSYSTEMD JSON PDUMPER LCMS2

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

Major mode: Python

Minor modes in effect:
  eglot--managed-mode: t
  flymake-mode: t
  shell-dirtrack-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail
rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils markdown-mode color noutline outline
cl-extra view vc-mtn vc-hg vc-git diff-mode easy-mmode vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher eglot array filenotify
jsonrpc ert pp ewoc debug backtrace help-mode find-func xref
flymake-proc flymake thingatpt warnings compile text-property-search
pcase project imenu python tramp-sh tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat shell pcomplete parse-time
iso8601 time-date ls-lisp format-spec comint ring ansi-color finder-inf
tex-site debian-el edmacro kmacro rx w3m-load info package easymenu
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json subr-x map url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer cl-generic 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 charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
x multi-tty make-network-process emacs)