Subject: bug#66394: 29.1; Make register-read-with-preview more useful

From: Thierry Volpiatto <[email-masked]>
Date: Sat, 25 Nov 2023 19:59:26 +0000

Hello Eli,

Eli Zaretskii <[email-masked]> writes:

>> Cc: Michael Heerdegen <[email-masked]>, [email-masked],
>>  [email-masked]
>> From: Thierry Volpiatto <[email-masked]>
>> Date: Mon, 20 Nov 2023 18:51:10 +0000
>> 
>> Stefan Monnier <[email-masked]> writes:
>> 
>> >> Ccing also Stefan monnier because for some reasons the patch when
>> >> applied doesn't compile (when compiling Emacs) unless we add on
>> >> top:
>> >>
>> >>     (cl--generic-prefill-dispatchers 0 (eql 'x) integer)
>> >>
>> >> following the advice of the compiler,
>> >
>> > Indeed, this is needed because `register.el` is preloaded and method
>> > dispatcher are generated&compiled "on the fly" but we don't want to
>> > preload the compiler, so we want to pre-compile the dispatchers used
>> > by the preloaded code.
>> >
>> >> but I am not sure it is the way to do.
>> >
>> > `cl--generic-prefill-dispatchers` is not guaranteed to be defined when
>> > we load `register.el` (it's only defined if we loaded the non-compiled
>> > version of `cl-generic.el`) so the above call should be in
>> > `cl-generic.el` rather than in `register.el`.
>> >
>> > I'd put it next to the following block:
>> >
>> >     (cl--generic-prefill-dispatchers 0 (eql nil))
>> >     (cl--generic-prefill-dispatchers window-system (eql nil))
>> >     (cl--generic-prefill-dispatchers (terminal-parameter nil 'xterm--get-selection)
>> >                                      (eql nil))
>> >     (cl--generic-prefill-dispatchers (terminal-parameter nil 'xterm--set-selection)
>> >                                      (eql nil))
>> >
>> > which is already about dispatchers needed to support other files.
>> 
>> I will for now leave the call to `cl--generic-prefill-dispatchers` in
>> the patch as a reminder that it should be added instead in cl-defgeneric
>> once merging.
>
> I tried to install the patch, but it fails to compile:
>
>     ELC      ../lisp/register.elc
>
>   In toplevel form:
>   register.el:33:37: Warning: `eql' called with 1 argument, but requires 2
>   register.el:33:45: Warning: reference to free variable `integer'

I have not these warnings.

> This then fails the build, since 'register' is preloaded.

Here it is building fine, this from the last Emacs master from tonight.

> Thierry, can you please fix the code, so that I could install it?  Or
> what am I missing?

Don't know, did you "make clean" first?

NOTE: I leaved the patch like this but it needs the change suggested by
Stefan before merging (or with an extra commit) see above.

> P.S. Also, the log message is not according to our conventions.

I don't remember now what are your conventions for commits, perhaps you
can correct it if needed?

Thanks.

-- 
Thierry