From: Steven Allen via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Eshel Yaron <me@eshelyaron.com>, Eli Zaretskii <eliz@gnu.org>
Cc: 74511@debbugs.gnu.org
Subject: bug#74511: 31.0.50; `dictionary-search-interface' overrides the user's customization of `dictionary-read-word-function'
Date: Mon, 25 Nov 2024 11:27:39 -0800 [thread overview]
Message-ID: <878qt73yhg.fsf@stebalien.com> (raw)
In-Reply-To: <m1iksb9o0v.fsf@macbookpro.home>
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.
next prev parent reply other threads:[~2024-11-25 19:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
2024-11-25 21:27 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878qt73yhg.fsf@stebalien.com \
--to=bug-gnu-emacs@gnu.org \
--cc=74511@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=me@eshelyaron.com \
--cc=steven@stebalien.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).