On August 25, 2020 at 9:13 PM, "Rob McBroom" <mailinglist0@skurfer.com> wrote:
I forget the details of the behavior I didn’t like before, but I use
disableIndentCorrections = 'emptyLines'
Give that a try. Python is my primary language and it mostly does what I want. 
Thanks, that did the trick! This behaviour should probably be the default for python.
 The exceptions:
It doesn’t auto-indent after (, but that’s probably the language grammar.
 
I though it would be just a matter of adding ( and ) to increase/decrease indent patterns, but that doesn't seem to have any effect whatsoever. In fact, removing the part of the increase/decrease indent pattern regexes matching [{ and }] doesn't change the current behaviour, so it seems that it is handled differently. Googling, I found a thread that suggests that auto-indent of paired [] and {} is based a macro triggered by the return key when in a certain scope: 
(about half-way down the conversation)
I say we need some authoritative advice here ;)
 After a block like
class MyClass:
    def action(self):
        pass
⇥
Hitting ⇥ at the location shown above will line up with pass and not the previous def. I guess it’s doing the thing that makes sense, even though it’s never what I want and bites me almost daily.
 
Yeah, I agree.  A bit ugly workaround is to add a snippet that applies when caret is in the leftmost position, e.g.:
    
`printf "%*s" ${TM_TAB_SIZE} ''`$0
and setting the scope selector to L:(source.python dyn.caret.begin.line) and key equivalent to ⇥.
This would obviously only work if you use spaces for tabs...
Cheers,
Per