unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
@ 2024-11-24 18:56 Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-24 19:03 ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-24 18:56 UTC (permalink / raw)
  To: 74511


If the user customizes `dictionary-read-word-function' then loads the
dictionary package, the value of `dictionary-read-word-function' will be
overridden when `dictionary-search-interface' is loaded. To reproduce:

1. Run emacs with `emacs -Q`.
2. Open a scratch buffer and evaluate the following:

    (setopt dictionary-read-word-function 'dictionary-completing-read-word)
    (require 'dictionary)
    (message "%S" dictionary-read-word-function)

I'd expect `dictionary-read-word-function' to be
`dictionary-completing-read-word' but instead it gets reset back to the
default, `dictionary-read-dictionary-default'. I can work around this by
calling `setopt' after loading the `dictionary' package, but ideally
that wouldn't be necessary.


In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.18.2) of 2024-11-24 built on Laptop
Repository revision: cf3ea44eb56364190ea9f2b905f74902c49de416
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101014
System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-modules --without-m17n-flt --without-selinux --without-pop
 --without-gconf --disable-gc-mark-trace --enable-link-time-optimization
 --with-native-compilation=yes --with-xinput2 --with-x-toolkit=no
 --without-toolkit-scroll-bars --without-xft --without-xaw3d
 --without-gsettings --with-cairo-xcb --with-sound=no --with-tree-sitter
 --without-gpm --without-compress-install
 '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
 'CFLAGS=-march=native -mtune=native -O3 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection -fomit-frame-pointer
 -fno-math-errno -fno-trapping-math -fno-math-errno -fno-trapping-math
 -flto=auto' 'LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed
 -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs -flto=auto''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBOTF
LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY OLDXMENU PDUMPER
PNG RSVG SECCOMP SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XIM
XINPUT2 XPM ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  windmove-mode: t
  rainbow-mode: t
  rainbow-delimiters-mode: t
  notmuch-bookmarks-mode: t
  global-atomic-chrome-edit-mode: t
  iwd-agent-mode: t
  i3bar-mode: t
  ednc-mode: t
  exwm-xsettings-mode: t
  exwm-background-mode: t
  exwm-systemtray-mode: t
  exwm-randr-mode: t
  ligature-mode: t
  ws-butler-mode: t
  auto-compile-on-load-mode: t
  auto-compile-on-save-mode: t
  auto-compile-mode: t
  save-place-mode: t
  savehist-mode: t
  openwith-mode: t
  org-super-agenda-mode: t
  global-org-modern-mode: t
  goto-address-prog-mode: t
  eat-eshell-mode: t
  bug-reference-prog-mode: t
  magit-todos-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  server-mode: t
  recentf-mode: t
  global-treesit-auto-mode: t
  editorconfig-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  async-bytecomp-package-mode: t
  sudo-edit-indicator-mode: t
  global-auto-revert-mode: t
  vertico-mode: t
  corfu-popupinfo-mode: t
  global-corfu-mode: t
  corfu-mode: t
  minibuffer-depth-indicate-mode: t
  minibuffer-electric-default-mode: t
  isearch-mb-mode: t
  pixel-scroll-precision-mode: t
  global-hl-todo-mode: t
  hl-todo-mode: t
  all-the-icons-completion-mode: t
  marginalia-mode: t
  visual-replace-global-mode: t
  global-jinx-mode: t
  evil-goggles-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  global-evil-collection-unimpaired-mode: t
  evil-collection-unimpaired-mode: t
  evil-mode: t
  evil-local-mode: t
  desktop-environment-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  prettify-symbols-mode: t
  tab-bar-history-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/steb/.cache/emacs/elpa/protobuf-mode-20240823.1417/protobuf-mode hides /usr/share/emacs/site-lisp/protobuf-mode
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch hides /usr/share/emacs/site-lisp/notmuch
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-wash hides /usr/share/emacs/site-lisp/notmuch-wash
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-tree hides /usr/share/emacs/site-lisp/notmuch-tree
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-tag hides /usr/share/emacs/site-lisp/notmuch-tag
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-show hides /usr/share/emacs/site-lisp/notmuch-show
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-query hides /usr/share/emacs/site-lisp/notmuch-query
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-print hides /usr/share/emacs/site-lisp/notmuch-print
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-parser hides /usr/share/emacs/site-lisp/notmuch-parser
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-mua hides /usr/share/emacs/site-lisp/notmuch-mua
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-message hides /usr/share/emacs/site-lisp/notmuch-message
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-maildir-fcc hides /usr/share/emacs/site-lisp/notmuch-maildir-fcc
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-lib hides /usr/share/emacs/site-lisp/notmuch-lib
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-jump hides /usr/share/emacs/site-lisp/notmuch-jump
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-hello hides /usr/share/emacs/site-lisp/notmuch-hello
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-draft hides /usr/share/emacs/site-lisp/notmuch-draft
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-crypto hides /usr/share/emacs/site-lisp/notmuch-crypto
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-compat hides /usr/share/emacs/site-lisp/notmuch-compat
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-company hides /usr/share/emacs/site-lisp/notmuch-company
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/notmuch-address hides /usr/share/emacs/site-lisp/notmuch-address
/home/steb/.cache/emacs/elpa/notmuch-20240816.2039/coolj hides /usr/share/emacs/site-lisp/coolj
/home/steb/.cache/emacs/elpa/filechooser-0.2.1/filechooser hides /usr/share/emacs/site-lisp/filechooser
/home/steb/.cache/emacs/elpa/filechooser-0.2.1/filechooser-autoloads hides /usr/share/emacs/site-lisp/filechooser-autoloads
/home/steb/.cache/emacs/elpa/transient-20241122.1928/transient hides /usr/share/emacs/31.0.50/lisp/transient
/home/steb/.cache/emacs/elpa/modus-themes-4.6.0/theme-loaddefs hides /usr/share/emacs/31.0.50/lisp/theme-loaddefs
/home/steb/.cache/emacs/elpa/org-9.7.16/ox hides /usr/share/emacs/31.0.50/lisp/org/ox
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-texinfo hides /usr/share/emacs/31.0.50/lisp/org/ox-texinfo
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-publish hides /usr/share/emacs/31.0.50/lisp/org/ox-publish
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-org hides /usr/share/emacs/31.0.50/lisp/org/ox-org
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-odt hides /usr/share/emacs/31.0.50/lisp/org/ox-odt
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-md hides /usr/share/emacs/31.0.50/lisp/org/ox-md
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-man hides /usr/share/emacs/31.0.50/lisp/org/ox-man
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-latex hides /usr/share/emacs/31.0.50/lisp/org/ox-latex
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-koma-letter hides /usr/share/emacs/31.0.50/lisp/org/ox-koma-letter
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-icalendar hides /usr/share/emacs/31.0.50/lisp/org/ox-icalendar
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-html hides /usr/share/emacs/31.0.50/lisp/org/ox-html
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-beamer hides /usr/share/emacs/31.0.50/lisp/org/ox-beamer
/home/steb/.cache/emacs/elpa/org-9.7.16/ox-ascii hides /usr/share/emacs/31.0.50/lisp/org/ox-ascii
/home/steb/.cache/emacs/elpa/org-9.7.16/org hides /usr/share/emacs/31.0.50/lisp/org/org
/home/steb/.cache/emacs/elpa/org-9.7.16/org-version hides /usr/share/emacs/31.0.50/lisp/org/org-version
/home/steb/.cache/emacs/elpa/org-9.7.16/org-timer hides /usr/share/emacs/31.0.50/lisp/org/org-timer
/home/steb/.cache/emacs/elpa/org-9.7.16/org-tempo hides /usr/share/emacs/31.0.50/lisp/org/org-tempo
/home/steb/.cache/emacs/elpa/org-9.7.16/org-table hides /usr/share/emacs/31.0.50/lisp/org/org-table
/home/steb/.cache/emacs/elpa/org-9.7.16/org-src hides /usr/share/emacs/31.0.50/lisp/org/org-src
/home/steb/.cache/emacs/elpa/org-9.7.16/org-refile hides /usr/share/emacs/31.0.50/lisp/org/org-refile
/home/steb/.cache/emacs/elpa/org-9.7.16/org-protocol hides /usr/share/emacs/31.0.50/lisp/org/org-protocol
/home/steb/.cache/emacs/elpa/org-9.7.16/org-plot hides /usr/share/emacs/31.0.50/lisp/org/org-plot
/home/steb/.cache/emacs/elpa/org-9.7.16/org-persist hides /usr/share/emacs/31.0.50/lisp/org/org-persist
/home/steb/.cache/emacs/elpa/org-9.7.16/org-pcomplete hides /usr/share/emacs/31.0.50/lisp/org/org-pcomplete
/home/steb/.cache/emacs/elpa/org-9.7.16/org-num hides /usr/share/emacs/31.0.50/lisp/org/org-num
/home/steb/.cache/emacs/elpa/org-9.7.16/org-mouse hides /usr/share/emacs/31.0.50/lisp/org/org-mouse
/home/steb/.cache/emacs/elpa/org-9.7.16/org-mobile hides /usr/share/emacs/31.0.50/lisp/org/org-mobile
/home/steb/.cache/emacs/elpa/org-9.7.16/org-macs hides /usr/share/emacs/31.0.50/lisp/org/org-macs
/home/steb/.cache/emacs/elpa/org-9.7.16/org-macro hides /usr/share/emacs/31.0.50/lisp/org/org-macro
/home/steb/.cache/emacs/elpa/org-9.7.16/org-loaddefs hides /usr/share/emacs/31.0.50/lisp/org/org-loaddefs
/home/steb/.cache/emacs/elpa/org-9.7.16/org-list hides /usr/share/emacs/31.0.50/lisp/org/org-list
/home/steb/.cache/emacs/elpa/org-9.7.16/org-lint hides /usr/share/emacs/31.0.50/lisp/org/org-lint
/home/steb/.cache/emacs/elpa/org-9.7.16/org-keys hides /usr/share/emacs/31.0.50/lisp/org/org-keys
/home/steb/.cache/emacs/elpa/org-9.7.16/org-inlinetask hides /usr/share/emacs/31.0.50/lisp/org/org-inlinetask
/home/steb/.cache/emacs/elpa/org-9.7.16/org-indent hides /usr/share/emacs/31.0.50/lisp/org/org-indent
/home/steb/.cache/emacs/elpa/org-9.7.16/org-id hides /usr/share/emacs/31.0.50/lisp/org/org-id
/home/steb/.cache/emacs/elpa/org-9.7.16/org-habit hides /usr/share/emacs/31.0.50/lisp/org/org-habit
/home/steb/.cache/emacs/elpa/org-9.7.16/org-goto hides /usr/share/emacs/31.0.50/lisp/org/org-goto
/home/steb/.cache/emacs/elpa/org-9.7.16/org-footnote hides /usr/share/emacs/31.0.50/lisp/org/org-footnote
/home/steb/.cache/emacs/elpa/org-9.7.16/org-fold hides /usr/share/emacs/31.0.50/lisp/org/org-fold
/home/steb/.cache/emacs/elpa/org-9.7.16/org-fold-core hides /usr/share/emacs/31.0.50/lisp/org/org-fold-core
/home/steb/.cache/emacs/elpa/org-9.7.16/org-feed hides /usr/share/emacs/31.0.50/lisp/org/org-feed
/home/steb/.cache/emacs/elpa/org-9.7.16/org-faces hides /usr/share/emacs/31.0.50/lisp/org/org-faces
/home/steb/.cache/emacs/elpa/org-9.7.16/org-entities hides /usr/share/emacs/31.0.50/lisp/org/org-entities
/home/steb/.cache/emacs/elpa/org-9.7.16/org-element hides /usr/share/emacs/31.0.50/lisp/org/org-element
/home/steb/.cache/emacs/elpa/org-9.7.16/org-element-ast hides /usr/share/emacs/31.0.50/lisp/org/org-element-ast
/home/steb/.cache/emacs/elpa/org-9.7.16/org-duration hides /usr/share/emacs/31.0.50/lisp/org/org-duration
/home/steb/.cache/emacs/elpa/org-9.7.16/org-datetree hides /usr/share/emacs/31.0.50/lisp/org/org-datetree
/home/steb/.cache/emacs/elpa/org-9.7.16/org-cycle hides /usr/share/emacs/31.0.50/lisp/org/org-cycle
/home/steb/.cache/emacs/elpa/org-9.7.16/org-ctags hides /usr/share/emacs/31.0.50/lisp/org/org-ctags
/home/steb/.cache/emacs/elpa/org-9.7.16/org-crypt hides /usr/share/emacs/31.0.50/lisp/org/org-crypt
/home/steb/.cache/emacs/elpa/org-9.7.16/org-compat hides /usr/share/emacs/31.0.50/lisp/org/org-compat
/home/steb/.cache/emacs/elpa/org-9.7.16/org-colview hides /usr/share/emacs/31.0.50/lisp/org/org-colview
/home/steb/.cache/emacs/elpa/org-9.7.16/org-clock hides /usr/share/emacs/31.0.50/lisp/org/org-clock
/home/steb/.cache/emacs/elpa/org-9.7.16/org-capture hides /usr/share/emacs/31.0.50/lisp/org/org-capture
/home/steb/.cache/emacs/elpa/org-9.7.16/org-attach hides /usr/share/emacs/31.0.50/lisp/org/org-attach
/home/steb/.cache/emacs/elpa/org-9.7.16/org-attach-git hides /usr/share/emacs/31.0.50/lisp/org/org-attach-git
/home/steb/.cache/emacs/elpa/org-9.7.16/org-archive hides /usr/share/emacs/31.0.50/lisp/org/org-archive
/home/steb/.cache/emacs/elpa/org-9.7.16/org-agenda hides /usr/share/emacs/31.0.50/lisp/org/org-agenda
/home/steb/.cache/emacs/elpa/org-9.7.16/ol hides /usr/share/emacs/31.0.50/lisp/org/ol
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-w3m hides /usr/share/emacs/31.0.50/lisp/org/ol-w3m
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-rmail hides /usr/share/emacs/31.0.50/lisp/org/ol-rmail
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-mhe hides /usr/share/emacs/31.0.50/lisp/org/ol-mhe
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-man hides /usr/share/emacs/31.0.50/lisp/org/ol-man
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-irc hides /usr/share/emacs/31.0.50/lisp/org/ol-irc
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-info hides /usr/share/emacs/31.0.50/lisp/org/ol-info
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-gnus hides /usr/share/emacs/31.0.50/lisp/org/ol-gnus
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-eww hides /usr/share/emacs/31.0.50/lisp/org/ol-eww
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-eshell hides /usr/share/emacs/31.0.50/lisp/org/ol-eshell
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-doi hides /usr/share/emacs/31.0.50/lisp/org/ol-doi
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-docview hides /usr/share/emacs/31.0.50/lisp/org/ol-docview
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-bibtex hides /usr/share/emacs/31.0.50/lisp/org/ol-bibtex
/home/steb/.cache/emacs/elpa/org-9.7.16/ol-bbdb hides /usr/share/emacs/31.0.50/lisp/org/ol-bbdb
/home/steb/.cache/emacs/elpa/org-9.7.16/oc hides /usr/share/emacs/31.0.50/lisp/org/oc
/home/steb/.cache/emacs/elpa/org-9.7.16/oc-natbib hides /usr/share/emacs/31.0.50/lisp/org/oc-natbib
/home/steb/.cache/emacs/elpa/org-9.7.16/oc-csl hides /usr/share/emacs/31.0.50/lisp/org/oc-csl
/home/steb/.cache/emacs/elpa/org-9.7.16/oc-bibtex hides /usr/share/emacs/31.0.50/lisp/org/oc-bibtex
/home/steb/.cache/emacs/elpa/org-9.7.16/oc-biblatex hides /usr/share/emacs/31.0.50/lisp/org/oc-biblatex
/home/steb/.cache/emacs/elpa/org-9.7.16/oc-basic hides /usr/share/emacs/31.0.50/lisp/org/oc-basic
/home/steb/.cache/emacs/elpa/org-9.7.16/ob hides /usr/share/emacs/31.0.50/lisp/org/ob
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-tangle hides /usr/share/emacs/31.0.50/lisp/org/ob-tangle
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-table hides /usr/share/emacs/31.0.50/lisp/org/ob-table
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-sqlite hides /usr/share/emacs/31.0.50/lisp/org/ob-sqlite
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-sql hides /usr/share/emacs/31.0.50/lisp/org/ob-sql
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-shell hides /usr/share/emacs/31.0.50/lisp/org/ob-shell
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-sed hides /usr/share/emacs/31.0.50/lisp/org/ob-sed
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-screen hides /usr/share/emacs/31.0.50/lisp/org/ob-screen
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-scheme hides /usr/share/emacs/31.0.50/lisp/org/ob-scheme
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-sass hides /usr/share/emacs/31.0.50/lisp/org/ob-sass
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-ruby hides /usr/share/emacs/31.0.50/lisp/org/ob-ruby
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-ref hides /usr/share/emacs/31.0.50/lisp/org/ob-ref
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-python hides /usr/share/emacs/31.0.50/lisp/org/ob-python
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-processing hides /usr/share/emacs/31.0.50/lisp/org/ob-processing
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-plantuml hides /usr/share/emacs/31.0.50/lisp/org/ob-plantuml
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-perl hides /usr/share/emacs/31.0.50/lisp/org/ob-perl
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-org hides /usr/share/emacs/31.0.50/lisp/org/ob-org
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-octave hides /usr/share/emacs/31.0.50/lisp/org/ob-octave
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-ocaml hides /usr/share/emacs/31.0.50/lisp/org/ob-ocaml
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-maxima hides /usr/share/emacs/31.0.50/lisp/org/ob-maxima
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-matlab hides /usr/share/emacs/31.0.50/lisp/org/ob-matlab
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-makefile hides /usr/share/emacs/31.0.50/lisp/org/ob-makefile
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-lua hides /usr/share/emacs/31.0.50/lisp/org/ob-lua
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-lob hides /usr/share/emacs/31.0.50/lisp/org/ob-lob
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-lisp hides /usr/share/emacs/31.0.50/lisp/org/ob-lisp
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-lilypond hides /usr/share/emacs/31.0.50/lisp/org/ob-lilypond
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-latex hides /usr/share/emacs/31.0.50/lisp/org/ob-latex
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-julia hides /usr/share/emacs/31.0.50/lisp/org/ob-julia
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-js hides /usr/share/emacs/31.0.50/lisp/org/ob-js
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-java hides /usr/share/emacs/31.0.50/lisp/org/ob-java
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-haskell hides /usr/share/emacs/31.0.50/lisp/org/ob-haskell
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-groovy hides /usr/share/emacs/31.0.50/lisp/org/ob-groovy
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-gnuplot hides /usr/share/emacs/31.0.50/lisp/org/ob-gnuplot
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-fortran hides /usr/share/emacs/31.0.50/lisp/org/ob-fortran
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-forth hides /usr/share/emacs/31.0.50/lisp/org/ob-forth
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-exp hides /usr/share/emacs/31.0.50/lisp/org/ob-exp
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-eval hides /usr/share/emacs/31.0.50/lisp/org/ob-eval
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-eshell hides /usr/share/emacs/31.0.50/lisp/org/ob-eshell
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-emacs-lisp hides /usr/share/emacs/31.0.50/lisp/org/ob-emacs-lisp
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-dot hides /usr/share/emacs/31.0.50/lisp/org/ob-dot
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-ditaa hides /usr/share/emacs/31.0.50/lisp/org/ob-ditaa
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-css hides /usr/share/emacs/31.0.50/lisp/org/ob-css
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-core hides /usr/share/emacs/31.0.50/lisp/org/ob-core
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-comint hides /usr/share/emacs/31.0.50/lisp/org/ob-comint
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-clojure hides /usr/share/emacs/31.0.50/lisp/org/ob-clojure
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-calc hides /usr/share/emacs/31.0.50/lisp/org/ob-calc
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-awk hides /usr/share/emacs/31.0.50/lisp/org/ob-awk
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-R hides /usr/share/emacs/31.0.50/lisp/org/ob-R
/home/steb/.cache/emacs/elpa/org-9.7.16/ob-C hides /usr/share/emacs/31.0.50/lisp/org/ob-C

Features:
(shadow sort mail-extr misearch multi-isearch emacsbug bash-completion
buffer-move consult-org network-stream evil-collection-dictionary
dictionary dictionary-connection consult-xref etags fileloop tabify
info-colors evil-collection-helpful helpful cc-langs trace cl-print
evil-collection-edebug edebug info-look evil-collection-elisp-refs
elisp-refs yaml-ts-mode windmove help-fns radix-tree tramp-cmds
comint-mime vtable mathjax c++-ts-mode c-ts-mode conf-mode js cc-mode
cc-fonts cc-guess cc-menus cc-cmds flymake-ruff dired-k
all-the-icons-dired dired-filter dired-hacks-utils dired-aux dired-x
image-file image-converter go-ts-mode checkdoc package-lint-flymake
package-lint evil-collection-finder finder lisp-mnt rainbow-mode vc-hg
vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs evil-collection-log-view
log-view emacsql-sqlite-builtin sqlite rainbow-delimiters vc
rust-ts-mode c-ts-common eshell-syntax-highlighting em-elecslash em-glob
em-extpipe em-basic em-alias textsec uni-scripts idna-mapping
ucs-normalize uni-confusable textsec-check shr pixel-fill kinsoku
url-file mule-util vertico-repeat app-launcher evil-collection-vc-git
vc-git vc-dispatcher evil-collection-consult consult magit-bookmark
org-bookmark-heading notmuch-bookmarks evil-collection-bookmark bookmark
pinentry evil-collection-atomic-chrome atomic-chrome websocket bindat
iwd i3bar ednc filechooser dbus exwm-xsettings xcb-xsettings
exwm-background exwm-systemtray xcb-systemtray xcb-xembed exwm-randr
xcb-randr exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating
xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh
xcb-icccm xcb xcb-xproto xcb-types xcb-debug cus-start posframe
visual-wrap face-remap visual-fill-column ligature evil-org corg
org-appear ws-butler oc-basic bibtex ol-man ol-info ol-docview
evil-collection-doc-view doc-view jka-compr evil-collection-image
image-mode exif auto-compile show-font saveplace tramp-cache time-stamp
savehist ready-player openwith org-super-agenda ts ht org-habit
org-crypt org-protocol ox-typst oc-typst 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 evil-org-agenda
org-agenda ox-html table ox-ascii ox-publish ox org-attach org-element
org-persist org-id org-refile org-element-ast inline avl-tree ob-http
ob-http-mode org-modern ob-dot ob-latex ob-python evil-collection-python
python ob-gnuplot ob-calc calc-store calc-trail calc-ext
evil-collection-calc calc calc-loaddefs calc-macs ob-shell
evil-collection-org org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-src evil-collection-sh-script sh-script smie executable
ob-comint org-pcomplete org-list org-footnote org-faces org-entities
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc org-loaddefs org-compat org-version org-macs
notmuch-addr evil-collection-notmuch notmuch notmuch-tree notmuch-jump
notmuch-hello notmuch-show notmuch-print notmuch-crypto notmuch-mua
notmuch-message notmuch-draft notmuch-maildir-fcc notmuch-address
notmuch-company notmuch-parser notmuch-wash coolj goto-addr icalendar
diary-lib diary-loaddefs evil-collection-calendar cal-menu calendar
cal-loaddefs notmuch-tag notmuch-lib notmuch-compat mm-view mml-smime
smime dig eshell-prompt-extras em-dirs em-ls em-prompt em-hist em-unix
em-pred esh-mode esh-var evil-collection-eat eat evil-collection-term
term disp-table ehelp eshell esh-cmd generator esh-ext esh-proc esh-opt
esh-io esh-arg esh-module esh-module-loaddefs esh-util forge-search
evil-collection-forge forge-repos forge-tablist hl-line forge-topics
forge-commands forge-semi forge-bitbucket buck forge-gogs gogs
forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy
gsexp ghub url-http url-gw nsm url-auth gnutls forge-notify
forge-revnote forge-pullreq forge-issue forge-topic yaml eieio-custom
bug-reference forge-post evil-collection-markdown-mode markdown-mode
edit-indirect evil-collection-outline noutline outline forge-repo forge
forge-core forge-db closql emacsql-sqlite-common emacsql-sqlite emacsql
emacsql-compiler eieio-base evil-collection-magit-todos magit-todos
pcre2el rxt advice re-builder evil-collection-grep grep
evil-collection-magit magit-submodule 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 evil-collection-magit-repos magit-repos magit-apply
magit-wip magit-log which-func magit-diff smerge-mode git-commit
evil-collection-log-edit log-edit message sendmail yank-media puny
evil-collection-dired dired dired-loaddefs rfc822 mml mml-sec
evil-collection-epa epa derived epg rfc6068 epg-config gnus-util
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
pcvs-util add-log magit-core magit-autorevert magit-margin
magit-transient magit-process evil-collection-with-editor with-editor
server magit-mode transient benchmark magit-git magit-base
evil-collection-magit-section magit-section cursor-sensor crm tramp-sh
recentf tree-widget treesit-auto evil-collection-eglot eglot
external-completion jsonrpc evil-collection-xref xref
evil-collection-flymake flymake diff diff-mode track-changes
evil-collection-ert ert ewoc evil-collection-debug debug backtrace
evil-collection-compile compile text-property-search
evil-collection-imenu imenu editorconfig editorconfig-core
editorconfig-core-handle editorconfig-fnmatch yasnippet async-bytecomp
async sudo-edit tramp trampver tramp-integration files-x tramp-message
tramp-compat shell pcomplete evil-collection-comint comint ansi-osc
parse-time iso8601 time-date format-spec ansi-color tramp-loaddefs
autorevert filenotify project vertico corfu-popupinfo
evil-collection-corfu corfu orderless mb-depth minibuf-eldef isearch-mb
pixel-scroll cua-base hl-todo all-the-icons-completion all-the-icons
all-the-icons-faces all-the-icons-data-material-icons
all-the-icons-data-fluentui-system-icons
all-the-icons-data-fontawesome-4 all-the-icons-data-weather-icons
all-the-icons-data-vscode-codicons all-the-icons-data-octicons
all-the-icons-data-mfixx all-the-icons-data-file-icons
all-the-icons-data-devopicons all-the-icons-data-alltheicons svg dom xml
marginalia let-alist modus-vivendi-tritanopia-theme
modus-vivendi-deuteranopia-theme modus-vivendi-tinted-theme
modus-vivendi-theme modus-operandi-tritanopia-theme
modus-operandi-deuteranopia-theme modus-operandi-tinted-theme
modus-operandi-theme modus-themes visual-replace ispell jinx
evil-goggles pulse color evil-textobj-tree-sitter
evil-textobj-tree-sitter-thing-at-point evil-textobj-tree-sitter-core
treesit evil-args evil-surround evil-collection-unimpaired
evil-collection-tabulated-list evil-collection-tab-bar
evil-collection-simple evil-collection-replace
evil-collection-process-menu evil-collection-package-menu
evil-collection-kmacro evil-collection-info evil-collection-indent
evil-collection-help evil-collection-elisp-mode evil-collection-eldoc
evil-collection-custom evil-collection-buff-menu evil-collection
annalist evil evil-integration evil-maps evil-commands reveal evil-jumps
evil-command-window evil-types evil-search evil-ex evil-macros
evil-repeat evil-states evil-core comp-run evil-common thingatpt rect
evil-vars ring edmacro kmacro general easy-mmode pcase f dash s
mode-local find-func no-littering compat use-package-ensure finder-inf
notmuch-version info all-the-icons-completion-autoloads
all-the-icons-dired-autoloads all-the-icons-ibuffer-autoloads
all-the-icons-autoloads app-launcher-autoloads aria2-autoloads
atomic-chrome-autoloads auto-compile-autoloads bash-completion-autoloads
bluetooth-autoloads buffer-move-autoloads calibre-autoloads
cape-autoloads casual-autoloads clojure-mode-autoloads
comint-mime-autoloads consult-eglot-autoloads
consult-project-extra-autoloads corfu-autoloads corg-autoloads
csv-mode-autoloads dape-autoloads devdocs-autoloads
dired-filter-autoloads dired-hacks-utils-autoloads dired-k-autoloads
discomfort-autoloads debase-autoloads disk-usage-autoloads eat-autoloads
edit-indirect-autoloads ednc-autoloads eff-autoloads ellama-autoloads
embark-consult-autoloads consult-autoloads embark-autoloads
ement-autoloads eshell-prompt-extras-autoloads
eshell-syntax-highlighting-autoloads evil-args-autoloads
evil-collection-autoloads annalist-autoloads evil-goggles-autoloads
evil-nerd-commenter-autoloads evil-org-autoloads evil-surround-autoloads
evil-textobj-tree-sitter-autoloads evm-mode-autoloads
expand-region-autoloads exwm-autoloads filechooser-autoloads
flymake-ruff-autoloads forge-search-autoloads general-autoloads
git-link-autoloads git-modes-autoloads gnuplot-autoloads
graphviz-dot-mode-autoloads helpful-autoloads elisp-refs-autoloads
htmlize-autoloads i3bar-autoloads igist-autoloads info-colors-autoloads
isearch-mb-autoloads iwd-autoloads iwindow-autoloads jinx-autoloads
journalctl-autoloads kotlin-mode-autoloads kubernetes-evil-autoloads
evil-autoloads goto-chg-autoloads kubernetes-autoloads
ligature-autoloads link-hint-autoloads avy-autoloads llm-autoloads
magit-popup-autoloads magit-todos-autoloads hl-todo-autoloads
f-autoloads marginalia-autoloads mastodon-autoloads mathjax-autoloads
meow-autoloads microdata-autoloads modus-themes-autoloads
named-pipe-autoloads nftables-mode-autoloads no-littering-autoloads
notmuch-addr-autoloads notmuch-transient-autoloads nov-autoloads
esxml-autoloads kv-autoloads ob-http-autoloads ol-notmuch-autoloads
notmuch-autoloads openwith-autoloads orderless-autoloads
org-appear-autoloads org-bookmark-heading-autoloads
org-download-autoloads async-autoloads org-modern-autoloads
org-super-agenda-autoloads ht-autoloads orgit-forge-autoloads
orgit-autoloads forge-autoloads markdown-mode-autoloads magit-autoloads
ghub-autoloads closql-autoloads emacsql-autoloads ox-typst-autoloads
org-autoloads package-lint-flymake-autoloads package-lint-autoloads
password-store-autoloads pcre2el-autoloads pdf-tools-autoloads
persist-autoloads pinentry-autoloads pkgbuild-mode-autoloads
playerctl-autoloads plz-event-source-autoloads plz-media-type-autoloads
plz-autoloads posframe-autoloads proced-narrow-autoloads
protobuf-mode-autoloads pulseaudio-control-autoloads qrencode-autoloads
rainbow-delimiters-autoloads rainbow-mode-autoloads
ready-player-autoloads request-autoloads rg-autoloads rmsbolt-autoloads
rust-playground-autoloads show-font-autoloads solidity-mode-autoloads
spinner-autoloads ssh-config-mode-autoloads sudo-edit-autoloads
svg-lib-autoloads syncthing-autoloads systemctl-autoloads
systemd-autoloads tablist-autoloads taxy-magit-section-autoloads
taxy-autoloads magit-section-autoloads tmr-autoloads tp-autoloads
transient-autoloads treepy-autoloads treesit-auto-autoloads ts-autoloads
s-autoloads dash-autoloads tzc-autoloads udev-mode-autoloads
vala-mode-autoloads cc-styles cc-align cc-engine cc-vars cc-defs
varuga-autoloads vertico-autoloads vimrc-mode-autoloads
visual-fill-column-autoloads visual-replace-autoloads vundo-autoloads
wat-ts-mode-autoloads watch-autoloads web-mode-autoloads
websocket-autoloads wgrep-autoloads whisper-autoloads
with-editor-autoloads ws-butler-autoloads xelb-autoloads yaml-autoloads
yasnippet-autoloads use-package-core comp comp-cstr cl-extra help-mode
comp-common warnings rx xdg package 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 cl-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv
bytecomp byte-compile url-vars cus-edit pp cus-load icons wid-edit
cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd touch-screen 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 lcms2
dynamic-setting font-render-setting cairo xinput2 x multi-tty
move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 2198029 1447228) (symbols 48 99946 0) (strings 32 470053 86149)
 (string-bytes 1 14455863) (vectors 16 219687) (vector-slots 8 3071945 706738) (floats 8 1125 7046)
 (intervals 56 23155 7350) (buffers 992 51))





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
  2024-11-24 18:56 bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function' Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-24 19:03 ` Eli Zaretskii
  2024-11-24 20:36   ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-11-24 19:03 UTC (permalink / raw)
  To: Steven Allen; +Cc: 74511

> Date: Sun, 24 Nov 2024 10:56:08 -0800
> From:  Steven Allen via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> 
> If the user customizes `dictionary-read-word-function' then loads the
> dictionary package, the value of `dictionary-read-word-function' will be
> overridden when `dictionary-search-interface' is loaded. To reproduce:
> 
> 1. Run emacs with `emacs -Q`.
> 2. Open a scratch buffer and evaluate the following:
> 
>     (setopt dictionary-read-word-function 'dictionary-completing-read-word)
>     (require 'dictionary)
>     (message "%S" dictionary-read-word-function)
> 
> I'd expect `dictionary-read-word-function' to be
> `dictionary-completing-read-word' but instead it gets reset back to the
> default, `dictionary-read-dictionary-default'. I can work around this by
> calling `setopt' after loading the `dictionary' package, but ideally
> that wouldn't be necessary.

You are supposed to customize dictionary-search-interface if you want
this mode of operation.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
  2024-11-24 19:03 ` Eli Zaretskii
@ 2024-11-24 20:36   ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-25 12:04     ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-24 20:36 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 74511

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Sun, 24 Nov 2024 10:56:08 -0800
>> From:  Steven Allen via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> 
>> 
>> If the user customizes `dictionary-read-word-function' then loads the
>> dictionary package, the value of `dictionary-read-word-function' will be
>> overridden when `dictionary-search-interface' is loaded. To reproduce:
>> 
>> 1. Run emacs with `emacs -Q`.
>> 2. Open a scratch buffer and evaluate the following:
>> 
>>     (setopt dictionary-read-word-function 'dictionary-completing-read-word)
>>     (require 'dictionary)
>>     (message "%S" dictionary-read-word-function)
>> 
>> I'd expect `dictionary-read-word-function' to be
>> `dictionary-completing-read-word' but instead it gets reset back to the
>> default, `dictionary-read-dictionary-default'. I can work around this by
>> calling `setopt' after loading the `dictionary' package, but ideally
>> that wouldn't be necessary.
>
> You are supposed to customize dictionary-search-interface if you want
> this mode of operation.

In addition to dictionary-search-interface, there are three separately
customizable variables:

- dictionary-display-definition-function
- dictionary-read-word-function
- dictionary-read-dictionary-function

I'd expect dictionary-search-interface to override the defaults for
these variables, but I wouldn't expect it to completely clobber any user
customizations of said variables.

If these variables cannot be customized, I'd expect them to be "defvar"
not "defcustom". Although that would be rather unfortunate because,
while I want to enable minibuffer completion for words/dictionaries, I'd
also like to use the real dictionary mode (not the help buffer).

Adding ":initialize 'custom-initialize-changed" to
dictionary-search-interface would make it possible to specify either
dictionary-search-interface or any of the other variables (but not both
at the same time).





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
  2024-11-24 20:36   ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-25 12:04     ` Eli Zaretskii
  2024-11-25 18:17       ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-11-25 12:04 UTC (permalink / raw)
  To: Steven Allen, Eshel Yaron; +Cc: 74511

> From: Steven Allen <steven@stebalien.com>
> Cc: 74511@debbugs.gnu.org
> Date: Sun, 24 Nov 2024 12:36:00 -0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> Date: Sun, 24 Nov 2024 10:56:08 -0800
> >> From:  Steven Allen via "Bug reports for GNU Emacs,
> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> >> 
> >> 
> >> If the user customizes `dictionary-read-word-function' then loads the
> >> dictionary package, the value of `dictionary-read-word-function' will be
> >> overridden when `dictionary-search-interface' is loaded. To reproduce:
> >> 
> >> 1. Run emacs with `emacs -Q`.
> >> 2. Open a scratch buffer and evaluate the following:
> >> 
> >>     (setopt dictionary-read-word-function 'dictionary-completing-read-word)
> >>     (require 'dictionary)
> >>     (message "%S" dictionary-read-word-function)
> >> 
> >> I'd expect `dictionary-read-word-function' to be
> >> `dictionary-completing-read-word' but instead it gets reset back to the
> >> default, `dictionary-read-dictionary-default'. I can work around this by
> >> calling `setopt' after loading the `dictionary' package, but ideally
> >> that wouldn't be necessary.
> >
> > You are supposed to customize dictionary-search-interface if you want
> > this mode of operation.
> 
> In addition to dictionary-search-interface, there are three separately
> customizable variables:
> 
> - dictionary-display-definition-function
> - dictionary-read-word-function
> - dictionary-read-dictionary-function
> 
> I'd expect dictionary-search-interface to override the defaults for
> these variables, but I wouldn't expect it to completely clobber any user
> customizations of said variables.
> 
> If these variables cannot be customized, I'd expect them to be "defvar"
> not "defcustom". Although that would be rather unfortunate because,
> while I want to enable minibuffer completion for words/dictionaries, I'd
> also like to use the real dictionary mode (not the help buffer).
> 
> Adding ":initialize 'custom-initialize-changed" to
> dictionary-search-interface would make it possible to specify either
> dictionary-search-interface or any of the other variables (but not both
> at the same time).

Eshel, would you please look into this?  IMO, we should at least
improve the documentation to clarify these subtleties.  Bonus points
for allowing users to customize the other options without clobbering
them when the package is loaded or dictionary-search-interface is
customized.

Thanks.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
  2024-11-25 12:04     ` Eli Zaretskii
@ 2024-11-25 18:17       ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-25 19:27         ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-25 18:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Steven Allen, 74511

Hi,

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Steven Allen <steven@stebalien.com>
>> Cc: 74511@debbugs.gnu.org
>> Date: Sun, 24 Nov 2024 12:36:00 -0800
>> 
>> Eli Zaretskii <eliz@gnu.org> writes:
>> 
>> >> Date: Sun, 24 Nov 2024 10:56:08 -0800
>> >> From:  Steven Allen via "Bug reports for GNU Emacs,
>> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> >> 
>> >> 
>> >> If the user customizes `dictionary-read-word-function' then loads the
>> >> dictionary package, the value of `dictionary-read-word-function' will be
>> >> overridden when `dictionary-search-interface' is loaded. To reproduce:
>> >> 
>> >> 1. Run emacs with `emacs -Q`.
>> >> 2. Open a scratch buffer and evaluate the following:
>> >> 
>> >>     (setopt dictionary-read-word-function 'dictionary-completing-read-word)
>> >>     (require 'dictionary)
>> >>     (message "%S" dictionary-read-word-function)
>> >> 
>> >> I'd expect `dictionary-read-word-function' to be
>> >> `dictionary-completing-read-word' but instead it gets reset back to the
>> >> default, `dictionary-read-dictionary-default'. I can work around this by
>> >> calling `setopt' after loading the `dictionary' package, but ideally
>> >> that wouldn't be necessary.
>> >
>> > You are supposed to customize dictionary-search-interface if you want
>> > this mode of operation.
>> 
>> In addition to dictionary-search-interface, there are three separately
>> customizable variables:
>> 
>> - dictionary-display-definition-function
>> - dictionary-read-word-function
>> - dictionary-read-dictionary-function
>> 
>> I'd expect dictionary-search-interface to override the defaults for
>> these variables, but I wouldn't expect it to completely clobber any user
>> customizations of said variables.
>> 
>> If these variables cannot be customized, I'd expect them to be "defvar"
>> not "defcustom". Although that would be rather unfortunate because,
>> while I want to enable minibuffer completion for words/dictionaries, I'd
>> also like to use the real dictionary mode (not the help buffer).
>> 
>> Adding ":initialize 'custom-initialize-changed" to
>> dictionary-search-interface would make it possible to specify either
>> dictionary-search-interface or any of the other variables (but not both
>> at the same time).
>
> Eshel, would you please look into this?  IMO, we should at least
> improve the documentation to clarify these subtleties.  Bonus points
> for allowing users to customize the other options without clobbering
> them when the package is loaded or dictionary-search-interface is
> customized.

Thank you Steven, for reporting this issue, and Eli, for pinging me.

The patch below tries to do both: 

- it adds a few words to the docstring of dictionary-search-interface
  which explain that this option can only be meaningfully set after
  loading dictionary.el, and
- it avoids clobbering existing settings for the other options during
  initialization.  It still overrides existing settings for the other
  options if you set dictionary-search-interface after dictionary.el,
  because that's the intended behavior when customizing this option.

WDYT?


diff --git a/lisp/net/dictionary.el b/lisp/net/dictionary.el
index 58c2e9771ba..0f9daa2d07d 100644
--- a/lisp/net/dictionary.el
+++ b/lisp/net/dictionary.el
@@ -301,21 +301,30 @@ dictionary-search-interface
 When set to `help', `dictionary-search' displays definitions in a *Help* buffer,
 and provides completion for word selection based on dictionary matches.
 
-Otherwise, `dictionary-search' displays definitions in a *Dictionary* buffer."
+Otherwise, `dictionary-search' displays definitions in a *Dictionary* buffer.
+
+This option only takes affect when you customize it after loading the
+`dictionary' library, so you may want to use `with-eval-after-load' to
+set it in your Emacs initialization file."
   :type '(choice (const :tag "Dictionary buffer" nil)
                  (const :tag "Help buffer" help))
   :set (lambda (symbol value)
-         (let ((vals (pcase value
-                       ('help '(dictionary-display-definition-in-help-buffer
-                                dictionary-completing-read-word
-                                dictionary-completing-read-dictionary))
-                       (_     '(nil
-                                dictionary-read-word-default
-                                dictionary-read-dictionary-default)))))
-           (seq-setq (dictionary-display-definition-function
-                      dictionary-read-word-function
-                      dictionary-read-dictionary-function)
-                     vals))
+         ;; If the symbol of this option is not bound, then we are
+         ;; initializing it, and the user hasn't set it in init.el.
+         ;; Avoid overriding individual customization of other options
+         ;; in this case.
+         (when (boundp symbol)
+           (let ((vals (pcase value
+                         ('help '(dictionary-display-definition-in-help-buffer
+                                  dictionary-completing-read-word
+                                  dictionary-completing-read-dictionary))
+                         (_     '(nil
+                                  dictionary-read-word-default
+                                  dictionary-read-dictionary-default)))))
+             (seq-setq (dictionary-display-definition-function
+                        dictionary-read-word-function
+                        dictionary-read-dictionary-function)
+                       vals)))
          (set-default-toplevel-value symbol value))
   :version "30.1")
 






^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
  2024-11-25 18:17       ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-25 19:27         ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-25 21:27           ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-25 19:27 UTC (permalink / raw)
  To: Eshel Yaron, Eli Zaretskii; +Cc: 74511


Eshel Yaron <me@eshelyaron.com> writes:

> Hi,
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> From: Steven Allen <steven@stebalien.com>
>>> Cc: 74511@debbugs.gnu.org
>>> Date: Sun, 24 Nov 2024 12:36:00 -0800
>>> 
>>> Eli Zaretskii <eliz@gnu.org> writes:
>>> 
>>> >> Date: Sun, 24 Nov 2024 10:56:08 -0800
>>> >> From:  Steven Allen via "Bug reports for GNU Emacs,
>>> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>>> >> 
>>> >> 
>>> >> If the user customizes `dictionary-read-word-function' then loads the
>>> >> dictionary package, the value of `dictionary-read-word-function' will be
>>> >> overridden when `dictionary-search-interface' is loaded. To reproduce:
>>> >> 
>>> >> 1. Run emacs with `emacs -Q`.
>>> >> 2. Open a scratch buffer and evaluate the following:
>>> >> 
>>> >>     (setopt dictionary-read-word-function 'dictionary-completing-read-word)
>>> >>     (require 'dictionary)
>>> >>     (message "%S" dictionary-read-word-function)
>>> >> 
>>> >> I'd expect `dictionary-read-word-function' to be
>>> >> `dictionary-completing-read-word' but instead it gets reset back to the
>>> >> default, `dictionary-read-dictionary-default'. I can work around this by
>>> >> calling `setopt' after loading the `dictionary' package, but ideally
>>> >> that wouldn't be necessary.
>>> >
>>> > You are supposed to customize dictionary-search-interface if you want
>>> > this mode of operation.
>>> 
>>> In addition to dictionary-search-interface, there are three separately
>>> customizable variables:
>>> 
>>> - dictionary-display-definition-function
>>> - dictionary-read-word-function
>>> - dictionary-read-dictionary-function
>>> 
>>> I'd expect dictionary-search-interface to override the defaults for
>>> these variables, but I wouldn't expect it to completely clobber any user
>>> customizations of said variables.
>>> 
>>> If these variables cannot be customized, I'd expect them to be "defvar"
>>> not "defcustom". Although that would be rather unfortunate because,
>>> while I want to enable minibuffer completion for words/dictionaries, I'd
>>> also like to use the real dictionary mode (not the help buffer).
>>> 
>>> Adding ":initialize 'custom-initialize-changed" to
>>> dictionary-search-interface would make it possible to specify either
>>> dictionary-search-interface or any of the other variables (but not both
>>> at the same time).
>>
>> Eshel, would you please look into this?  IMO, we should at least
>> improve the documentation to clarify these subtleties.  Bonus points
>> for allowing users to customize the other options without clobbering
>> them when the package is loaded or dictionary-search-interface is
>> customized.
>
> Thank you Steven, for reporting this issue, and Eli, for pinging me.
>
> The patch below tries to do both: 
>
> - it adds a few words to the docstring of dictionary-search-interface
>   which explain that this option can only be meaningfully set after
>   loading dictionary.el, and
> - it avoids clobbering existing settings for the other options during
>   initialization.  It still overrides existing settings for the other
>   options if you set dictionary-search-interface after dictionary.el,
>   because that's the intended behavior when customizing this option.
>
> WDYT?
>

Is adding the following to `dictionary-search-interface' not sufficient?

    :initialize 'custom-initialize-changed

That would apply the `dictionary-search-interface' setting if and only
if specified by the user while still alowing the user to, e.g., use the
customize interface.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
  2024-11-25 19:27         ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-25 21:27           ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-11-26 12:59             ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-11-25 21:27 UTC (permalink / raw)
  To: Steven Allen; +Cc: Eli Zaretskii, 74511

Steven Allen <steven@stebalien.com> writes:

> Eshel Yaron <me@eshelyaron.com> writes:
>
>>
>> The patch below tries to do both: 
>>
>> - it adds a few words to the docstring of dictionary-search-interface
>>   which explain that this option can only be meaningfully set after
>>   loading dictionary.el, and
>> - it avoids clobbering existing settings for the other options during
>>   initialization.  It still overrides existing settings for the other
>>   options if you set dictionary-search-interface after dictionary.el,
>>   because that's the intended behavior when customizing this option.
>>
>> WDYT?
>>
>
> Is adding the following to `dictionary-search-interface' not sufficient?
>
>     :initialize 'custom-initialize-changed
>
> That would apply the `dictionary-search-interface' setting if and only
> if specified by the user while still alowing the user to, e.g., use the
> customize interface.

Ah yes, seems even better than my patch since it also makes it possible
to set dictionary-search-interface before loading dictionary.el, thanks!

Eli, does this seem OK for the release branch?

diff --git a/lisp/net/dictionary.el b/lisp/net/dictionary.el
index 58c2e9771ba..42fb8c57b40 100644
--- a/lisp/net/dictionary.el
+++ b/lisp/net/dictionary.el
@@ -317,6 +317,7 @@ dictionary-search-interface
                       dictionary-read-dictionary-function)
                      vals))
          (set-default-toplevel-value symbol value))
+  :initialize #'custom-initialize-changed
   :version "30.1")
 
 (defface dictionary-word-definition-face





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
  2024-11-25 21:27           ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-11-26 12:59             ` Eli Zaretskii
  0 siblings, 0 replies; 8+ messages in thread
From: Eli Zaretskii @ 2024-11-26 12:59 UTC (permalink / raw)
  To: Eshel Yaron; +Cc: steven, 74511

> From: Eshel Yaron <me@eshelyaron.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  74511@debbugs.gnu.org
> Date: Mon, 25 Nov 2024 22:27:57 +0100
> 
> Steven Allen <steven@stebalien.com> writes:
> 
> > Eshel Yaron <me@eshelyaron.com> writes:
> >
> >>
> >> The patch below tries to do both: 
> >>
> >> - it adds a few words to the docstring of dictionary-search-interface
> >>   which explain that this option can only be meaningfully set after
> >>   loading dictionary.el, and
> >> - it avoids clobbering existing settings for the other options during
> >>   initialization.  It still overrides existing settings for the other
> >>   options if you set dictionary-search-interface after dictionary.el,
> >>   because that's the intended behavior when customizing this option.
> >>
> >> WDYT?
> >>
> >
> > Is adding the following to `dictionary-search-interface' not sufficient?
> >
> >     :initialize 'custom-initialize-changed
> >
> > That would apply the `dictionary-search-interface' setting if and only
> > if specified by the user while still alowing the user to, e.g., use the
> > customize interface.
> 
> Ah yes, seems even better than my patch since it also makes it possible
> to set dictionary-search-interface before loading dictionary.el, thanks!
> 
> Eli, does this seem OK for the release branch?
> 
> diff --git a/lisp/net/dictionary.el b/lisp/net/dictionary.el
> index 58c2e9771ba..42fb8c57b40 100644
> --- a/lisp/net/dictionary.el
> +++ b/lisp/net/dictionary.el
> @@ -317,6 +317,7 @@ dictionary-search-interface
>                        dictionary-read-dictionary-function)
>                       vals))
>           (set-default-toplevel-value symbol value))
> +  :initialize #'custom-initialize-changed
>    :version "30.1")

Don't you mean custom-initialize-set?

If I'm missing something, please describe what will happen in the
various scenarios when dictionary-search-interface and the other
related options are customized, whether by setq or via Custom, and
when they are not customized the first time dictionary.el is loaded.
When we understand all the effects of this, we can reason whether the
change is safe for the emacs-30 branch (which it better be, since
these options were introduced in Emacs 30, AFAIR).

Thanks.





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-11-26 12:59 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-24 18:56 bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function' Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-24 19:03 ` Eli Zaretskii
2024-11-24 20:36   ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-25 12:04     ` Eli Zaretskii
2024-11-25 18:17       ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-25 19:27         ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-25 21:27           ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-11-26 12:59             ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).