Subject: Re: bug#50470: 27.1; 'company-mode' 'eshell'

From: Dmitry Gutov <[email-masked]>
Date: Tue, 28 Mar 2023 03:41:51 +0300

On 21/03/2023 04:30, Jim Porter wrote:
> On 3/19/2023 6:34 PM, Stefan Monnier via Bug reports for GNU Emacs, the 
> Swiss army knife of text editors wrote:
>> I definitely don't want to force preloading that module.
>> But maybe that var could have a meaning that's independent
>> from completion, thus justifying to move it out of the completion
>> extension module?
> 
> Well, luckily(?) it turns out my patch wasn't quite right anyway, so I 
> completely rewrote it. (In particular, it didn't correctly generate a 
> top-level stub if there was a subcommand nested somewhere *inside* an 
> argument.)
> 
> With this change, we now have a more-general way of preventing commands 
> that can cause side effects: 'eshell-allow-commands'. We can let-bind 
> that to nil, and then any commands within an argument will signal an error.
> 
> Then we just need to disable globbing via a different method (using the 
> patch I originally posted), and all is well for this bug.
> 
> I also added a couple preliminary patches to fix some semi-related 
> issues I discovered while working on this. These could probably go in a 
> separate bug, but I'm lazy. 😉 The real meat of this change is patch 0003.

Again, no proper review from me, but I've tried the patches.

Completion looks good, just like with the previous one.

But here's an error I encountered when trying to call a command with 
asterisks without expanding them with completion:

$ ls ~/Documents/Sp*
Wrong type argument: stringp, ("~/Documents/Spain/")

This issue is present in master (without the patches applied), but not 
in emacs-29.

The patch(es) fix a similar error in company-mode completion -- 
hopefully the straight evaluation could be fixed as easily.