Subject: Re: bug#62709: 29.0.60; quail-minibuffer-message prevents set-mark-command from activating region in minibuffer

From: Visuwesh <[email-masked]>
Date: Fri, 07 Apr 2023 17:21:26 +0530

[வெள்ளி ஏப்ரல் 07, 2023] Eli Zaretskii wrote:

>> - To observe the problem, first define a dummy Quail input method
>> 
>>     (quail-define-package "none" "asdf" "none")
>> 
>> - Then activate recursive minibuffers
>> 
>>     M-: (setq enable-recursive-minibuffers t) RET
>> 
>> - Now open a minibuffer (C-x C-f is a good one) then activate the "none"
>>   input method.
>> 
>> - Now type M-x set-mark-command RET and note how the region is not
>>   active.
>> 
>> This problem goes away if you redefine `quail-minibuffer-message' to
>> simply echo the string by saying
>> 
>>     (defalias 'quail-minibuffer-message #'message)
>> 
>> Furthermore, the comment above `quail-minibuffer-message' says
>> 
>>     ;; Quail specific version of minibuffer-message.  It displays STRING
>>     ;; with timeout 1000000 seconds instead of two seconds.
>> 
>> but even with that redefinition, the guidance string is printed just
>> fine (minus the extra square brackets that message adds).
>
> I'd prefer to solve the problem that prevents the region from becoming
> active, without changing how Quail shows its messages.  Can you try
> finding such a solution, 

One solution would be to use an overlay to show the guidance string,
like what `minibuffer-depth-mode' does.

> or at least explaining why quail-minibuffer-message prevents the
> region from becoming active in this case?

Unfortunately, that is well beyond my abilities.  If I simply comment
out the part where Quail `insert's the guidance string, I see no issue
but if I leave it and check the return value of `use-region-p' and value
of `mark-active' before and after the `insert' call, I see nil before
and after the insert call...

I investigated insert and delete-region because they deactivate an
active region in a "normal buffer" when called.

> Thanks.