GNU bug report logs - #59167
27.2; eldoc-documentation-strategy being 'ignore prevents new eldoc supports

Previous Next

Package: emacs;

Reported by: daanturo <daanturo <at> gmail.com>

Date: Thu, 10 Nov 2022 11:34:02 UTC

Severity: normal

Found in version 27.2

To reply to this bug, email your comments to 59167 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#59167; Package emacs. (Thu, 10 Nov 2022 11:34:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to daanturo <daanturo <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 10 Nov 2022 11:34:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: daanturo <daanturo <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.2; eldoc-documentation-strategy being 'ignore prevents new eldoc
 supports
Date: Thu, 10 Nov 2022 18:30:40 +0700
[Message part 1 (text/plain, inline)]


For Emacs < 27, after installing and loading the latest (1.13 currently)
eldoc, `eldoc-documentation-strategy` is set to `ignore` (along with
`eldoc-documentation-function`) unconditionally, whether it was set
before or not.

As a result, it even overrides user setting.

- Steps to reproduce:

```emacs-lisp
(when (< emacs-major-version 28)

  (package-initialize)

  (require 'eldoc)

  (unless (bound-and-true-p eldoc-documentation-strategy)
    (url-copy-file "https://elpa.gnu.org/packages/eldoc-1.13.0.tar"
                   "/tmp/eldoc-1.13.0.tar"
                   'ok)
    (package-install-file "/tmp/eldoc-1.13.0.tar"))

  (load "eldoc")

  (print (list (default-value 'eldoc-documentation-function)
               (default-value 'eldoc-documentation-strategy))))
```

- Observed: (ignore ignore)

- Expected: (eldoc-documentation-default eldoc-documentation-default)
(or the value of `eldoc-documentation-strategy` prior to loading)



Therefore unless explicitly set after that, or override locally,
supports targeted at the new eldoc will be futile.

For eglot as a workaround (I think so), `eldoc-documentation-strategy`
is even forcefully set locally [1] so user's choice is meaningless when
using eglot (even for Emacs>=28).

I propose that instead of forcing `eldoc-documentation-strategy` to
ignore, we respect user setting or set its default value to something
meaningful instead.


[1]: https://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/progmodes/eglot.el?id=43db0e2784bfafdb8b08a2f5f075e2d432df132f#n1716

In GNU Emacs 27.2 (build 1, x86_64-redhat-linux-gnu, GTK+ Version 3.24.30, cairo version 1.17.4)
of 2022-01-30 built on x64-builder02.almalinux.org
Windowing system distributor 'The X.Org Foundation', version 11.0.12201005
System Description: AlmaLinux 9.0 (Emerald Puma)

Recent messages:
Undo [2 times]

Configured using:
'configure --build=x86_64-redhat-linux-gnu
--host=x86_64-redhat-linux-gnu --program-prefix=
--disable-dependency-tracking --prefix=/usr --exec-prefix=/usr
--bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc
--datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64
--libexecdir=/usr/libexec --localstatedir=/var
--sharedstatedir=/var/lib --mandir=/usr/share/man
--infodir=/usr/share/info --with-dbus --with-gif --with-jpeg --with-png
--with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3
--with-gpm=no --with-xwidgets --with-modules --with-harfbuzz
--with-cairo --with-json build_alias=x86_64-redhat-linux-gnu
host_alias=x86_64-redhat-linux-gnu CC=gcc 'CFLAGS=-DMAIL_USE_LOCKF -O2
-flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches
-pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
-Wp,-D_GLIBCXX_ASSERTIONS
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2
-mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
-fcf-protection' 'LDFLAGS=-Wl,-z,relro -Wl,--as-needed -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 '
PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

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

Important settings:
value of $LANG: C.utf8
value of $XMODIFIERS: @im=fcitx
locale-coding-system: utf-8-unix

Major mode: TypeScript

Minor modes in effect:
corfu-indexed-mode: t
lsp-diagnostics-mode: t
lsp-headerline-breadcrumb-mode: t
lsp-modeline-workspace-status-mode: t
lsp-modeline-diagnostics-mode: t
lsp-modeline-code-actions-mode: t
lsp-completion-mode: t
lsp-managed-mode: t
lsp-mode: t
flymake-mode: t
savehist-mode: t
minibuffer-depth-indicate-mode: t
vertico-multiform-mode: t
vertico-mouse-mode: t
vertico-mode: t
electric-pair-mode: t
global-corfu-mode: t
corfu-mode: t
my-sgml-minor-mode: t
sgml-electric-tag-pair-mode: t
my-outline-comment-mode: t
my-outline-minor-highlight-mode: t
outline-minor-mode: t
flyspell-mode: t
display-line-numbers-mode: t
winner-mode: t
save-place-mode: t
global-auto-revert-mode: t
global-subword-mode: t
subword-mode: t
my-scroll-mode: t
delete-selection-mode: t
cua-mode: t
key-chord-mode: t
my-flyspell-global-mode: t
my-global-lsp-mode: t
my-pair-navigate-mode: t
my-global-pair-edit-mode: t
my-pair-edit-mode: t
my-minibuffer-input-history-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tab-bar-history-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
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
hs-minor-mode: t

Load-path shadows:
~/.local/state/emacs-27.2/elpaca-builds/ht/ht hides ~/.local/state/emacs-27.2/my-use-elisp/ht
~/.local/state/emacs-27.2/elpaca-builds/f/f-shortdoc hides ~/.local/state/emacs-27.2/my-use-elisp/f-shortdoc
~/.local/state/emacs-27.2/elpaca-builds/f/f hides ~/.local/state/emacs-27.2/my-use-elisp/f
~/.local/state/emacs-27.2/elpaca-builds/s/s hides ~/.local/state/emacs-27.2/my-use-elisp/s
~/.local/state/emacs-27.2/elpaca-builds/dash/dash hides ~/.local/state/emacs-27.2/my-use-elisp/dash
~/.local/state/emacs-27.2/my-use-elisp/compat hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat
~/.local/state/emacs-27.2/my-use-elisp/compat-help hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat-help
~/.local/state/emacs-27.2/my-use-elisp/compat-font-lock hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat-font-lock
~/.local/state/emacs-27.2/my-use-elisp/compat-28 hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat-28
~/.local/state/emacs-27.2/my-use-elisp/compat-27 hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat-27
~/.local/state/emacs-27.2/my-use-elisp/compat-26 hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat-26
~/.local/state/emacs-27.2/my-use-elisp/compat-25 hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat-25
~/.local/state/emacs-27.2/my-use-elisp/compat-24 hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat-24
~/.local/state/emacs-27.2/my-use-elisp/compat-macs hides ~/.local/share/emacs-27/elpa/compat-28.1.2.2/compat-macs
~/.local/state/emacs-27.2/elpaca-builds/project/project hides ~/.local/share/emacs-27/elpa/project-0.8.2/project
~/.local/state/emacs-27.2/elpaca-builds/project/project-autoloads hides ~/.local/share/emacs-27/elpa/project-0.8.2/project-autoloads
~/.local/state/emacs-27.2/elpaca-builds/xref/xref hides ~/.local/share/emacs-27/elpa/xref-1.5.1/xref
~/.local/state/emacs-27.2/elpaca-builds/xref/xref-autoloads hides ~/.local/share/emacs-27/elpa/xref-1.5.1/xref-autoloads
~/.local/state/emacs-27.2/elpaca-builds/jsonrpc/jsonrpc hides /usr/share/emacs/27.2/lisp/jsonrpc
~/.local/state/emacs-27.2/elpaca-builds/project/project hides /usr/share/emacs/27.2/lisp/progmodes/project
~/.local/state/emacs-27.2/elpaca-builds/flymake/flymake hides /usr/share/emacs/27.2/lisp/progmodes/flymake
~/.local/state/emacs-27.2/elpaca-builds/xref/xref hides /usr/share/emacs/27.2/lisp/progmodes/xref
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-gvfs hides /usr/share/emacs/27.2/lisp/net/tramp-gvfs
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-sh hides /usr/share/emacs/27.2/lisp/net/tramp-sh
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp hides /usr/share/emacs/27.2/lisp/net/tramp
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-ftp hides /usr/share/emacs/27.2/lisp/net/tramp-ftp
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-archive hides /usr/share/emacs/27.2/lisp/net/tramp-archive
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-smb hides /usr/share/emacs/27.2/lisp/net/tramp-smb
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-uu hides /usr/share/emacs/27.2/lisp/net/tramp-uu
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-loaddefs hides /usr/share/emacs/27.2/lisp/net/tramp-loaddefs
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-adb hides /usr/share/emacs/27.2/lisp/net/tramp-adb
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/trampver hides /usr/share/emacs/27.2/lisp/net/trampver
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-compat hides /usr/share/emacs/27.2/lisp/net/tramp-compat
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-integration hides /usr/share/emacs/27.2/lisp/net/tramp-integration
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-cmds hides /usr/share/emacs/27.2/lisp/net/tramp-cmds
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-sudoedit hides /usr/share/emacs/27.2/lisp/net/tramp-sudoedit
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-cache hides /usr/share/emacs/27.2/lisp/net/tramp-cache
~/.local/share/emacs-27/elpa/tramp-2.5.3.3/tramp-rclone hides /usr/share/emacs/27.2/lisp/net/tramp-rclone
~/.local/state/emacs-27.2/my-use-elisp/seq hides /usr/share/emacs/27.2/lisp/emacs-lisp/seq
~/.local/state/emacs-27.2/elpaca-builds/eldoc/eldoc hides /usr/share/emacs/27.2/lisp/emacs-lisp/eldoc

Features:
(shadow sort mail-extr emacsbug message dired dired-loaddefs format-spec
rfc822 mml mml-sec epa derived gnus-util rmail rmail-loaddefs
text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils my-minibuffer-input-history-mode undo-fu
mule-util corfu-indexed time-date lsp-diagnostics lsp-headerline
lsp-icons lsp-modeline lsp-lens vc-mtn vc-hg vc-git diff-mode vc-bzr
vc-src vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher view lsp-zig
lsp-steep lsp-svelte lsp-sqls lsp-yaml lsp-xml lsp-vimscript lsp-vhdl
lsp-vetur lsp-html lsp-verilog lsp-vala lsp-v lsp-toml lsp-terraform
lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-r lsp-purescript
lsp-pylsp lsp-pyls lsp-pwsh lsp-php lsp-perl lsp-ocaml lsp-nix lsp-nim
lsp-nginx lsp-markdown lsp-lua lsp-kotlin lsp-json url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
mailcap lsp-javascript lsp-haxe lsp-groovy lsp-hack lsp-graphql lsp-go
lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang
lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp
gnutls lsp-crystal lsp-cmake lsp-clojure lsp-semantic-tokens lsp-clangd
lsp-beancount lsp-bash lsp-angular lsp-ada lsp-actionscript lsp lsp-mode
lsp-protocol xref url-util tree-widget spinner network-stream puny nsm
rmc markdown-mode color lv inline imenu ht ewoc epg epg-config
flymake-proc flymake project warnings thingatpt
16-my-functions-file-directory 16-my-commands savehist mb-depth
vertico-multiform vertico-mouse vertico elec-pair corfu
16-my-functions-sgml sgml-mode dom my-sticky-header hideshow
my-outline-comment-mode noutline outline flyspell ispell
display-line-numbers typescript-mode rx cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs compile
comint ansi-color dash-autoloads s-autoloads f-autoloads ht-autoloads
spinner-autoloads markdown-mode-autoloads lv-autoloads eldoc-autoloads
lsp-mode-autoloads jsonrpc-autoloads xref-autoloads project-autoloads
flymake-autoloads eglot-autoloads my-init winner ring saveplace hl-line
autorevert filenotify my-config my-custom dracula-theme pcase cap-words
superword subword cus-edit cus-start cus-load wid-edit two-column delsel
cua-base key-chord 32-my-config-functions my-packages elpaca
elpaca-process elpaca-autoloads 08-other-package-managers
96-my-non-doom-init edmacro kmacro 01-my-core-functions f s
00-my-core-macros dash easy-mmode doom-lib compat compat-macs cl-extra
help-mode 00-my-lib-man info package easymenu browse-url 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 my-early-init 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 loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify dynamic-setting system-font-setting
font-render-setting xwidget-internal cairo move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 548198 352741)
(symbols 48 34808 9)
(strings 32 213470 24052)
(string-bytes 1 4138067)
(vectors 16 55169)
(vector-slots 8 1396343 323498)
(floats 8 331 1144)
(intervals 56 902 346)
(buffers 1000 21))

-- 
Daanturo.
[0001-Don-t-set-eldoc-documentation-strategy-to-ignore-on-.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#59167; Package emacs. (Thu, 10 Nov 2022 12:45:01 GMT) Full text and rfc822 format available.

Message #8 received at 59167 <at> debbugs.gnu.org (full text, mbox):

From: daanturo <daanturo <at> gmail.com>
To: 59167 <at> debbugs.gnu.org
Subject: Re: 27.2; eldoc-documentation-strategy being 'ignore prevents new
 eldoc supports
Date: Thu, 10 Nov 2022 19:41:54 +0700
[Message part 1 (text/plain, inline)]
This version takes `eldoc-documentation-strategy`'s `default-value` to set
instead (the previous one may take the buffer-local value).

Another justification for the patch:

If `eldoc-documentation-strategy` is already set before loading the new eldoc,
loading the library will pop this warning up:

```
Warning (defvaralias): Overwriting value of ‘eldoc-documentation-strategy’ by aliasing to ‘eldoc-documentation-function’
```

By setting `eldoc-documentation-function` before defining
`eldoc-documentation-strategy` as alias, we can preserver its value of avoid
this warning.


By the way, why was `eldoc-documentation-strategy` made obsolete instead of
`eldoc-documentation-function`, isn't the latter's usage ough to be warned
against?

The second patch declares the correct obsolete one.

-- 
Daanturo.
[0002-Eldoc-on-old-Emacs-correct-the-obsolete-variable.patch (text/x-patch, attachment)]
[0001-Don-t-set-eldoc-strategy-to-ignore-on-Emacs-27-and-b.patch (text/x-patch, attachment)]

This bug report was last modified 1 year and 168 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.