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

From: João Távora <[email-masked]>
Date: Sun, 23 May 2021 22:17:28 +0100

Doug Davis <[email-masked]> writes:

> Hi João & Pankaj,
>
> João Távora <[email-masked]> writes:
>
>> Pankaj Jangid <[email-masked]> writes:
>>
>>> If ‘eglot’ is running and ‘tab-always-indent’ is set to ’complete. Then
>>> in python-mode, TAB doesn’t cycle point column positions. For example,
>>> in the following code if you are at end of line 2 and then you press RET
>>> then TAB doesn’t move the point to left margin. Without ‘eglot’ this
>>> works fine.
>>>
>>> #+begin_src python
>>> def greet(s):
>>>     print(f"Hello {s}!")
>>> #+end_src
>>
>> Hello Pankaj,
>>
>> I cannot reproduce this.  Here's what I ran:
>>
>>   $ emacs --version | head -1
>>   GNU Emacs 26.3
>>   $ emacs -Q -f package-initialize -L ~/path/to/eglot/eglot -l eglot \
>>     ~/path/to/a/python/file.py -f eglot
>
> Just driving by, hopefully this is helpful; it looks like company may be
> the missing ingredient.

No, it wasn't, but indeed, there was a missing ingredient.  I had
forgotten to set tab-always-indent to 'complete.

With this recipe, I can reproduce the bug:

   $ emacs -Q -f package-initialize -L ~/path/to/eglot/eglot -l eglot  \
     ~/path/to/a/python/file.py                                        \
     --eval '(setq tab-always-indent (quote complete))' -f eglot

Don't know what's up, though.  Going to have a better look.

João