Subject: Re: bug#48609: Eglot and tab-always-indent conflict in python-mode

From: João Távora <[email-masked]>
Date: Tue, 25 May 2021 10:36:23 +0100

Pankaj Jangid <[email-masked]> writes:

> João Távora <[email-masked]> writes:
>
>> When Eglot is active, the completion system can find a large number of
>> completions available for that empty line.  Since you have selected
>> tab-always-indent to be 'complete, Eglot will request and present those
>> completions in the *Completions* buffer.
>>
>> The only way to cancel that operation is by C-g or clicking somewhere
>> else.  This in turn makes it so that the "last" command issued isn't
>> indent-for-tab-command anymore, and so there aren't two
>> indent-for-tab-command commands in a row.  And that is the criteria
>> consulted by python.el's indentation function to decide to cycle the
>> indentation.
>>
>> So I'm not sure what needs to be fixed here, if anything, or how you
>> would like this to behave.
>
> I think that the best place should be python.el then. A variable
> ‘python-completion-on-empty-line’ or some better name. I don’t know if
> such a variable already exist or not. Need to check.

Yes, I agree, python.el.  I wonder if instead of that variale the
cycling logic could be changed to account for this case where there may
be completions at point (Eglot is only one possible provider of such
completions, btw.)

João