python: Fix incorrect indenting of except
, finally
, else
, and elif
control flow (#27428)
Closes #10832 Note: This PR only fixes the issue where when entering one of `except`, `finally`, `else`, and `elif` after another block like so: ```python try: for i in range(n): pass except:| ``` The `except` would be indented resulting in the following: ```python try: for i in range(n): pass except:| ``` This PR does not fix a separate issue in which the indentation is not corrected from the second example to the first, i.e. if example 2 is typed verbatim in Zed it will not auto-indent to look like example 1. Handling of this case would likely require specific logic to handle, or changes to the tree-sitter grammar for Python, as the current grammar results in ERROR nodes that obscure the natural structure (cannot tie the `except` to the `try`) Release Notes: - Fixed an issue where `except`, `finally`, `else`, and `elif` control flow keywords in Python would be incorrectly indented when entered at the correct level of indentation.
This commit is contained in:
parent
7046b9641d
commit
e273de5490
1 changed files with 15 additions and 0 deletions
|
@ -1,3 +1,18 @@
|
|||
(_ "[" "]" @end) @indent
|
||||
(_ "{" "}" @end) @indent
|
||||
(_ "(" ")" @end) @indent
|
||||
|
||||
(try_statement
|
||||
body: (_) @start
|
||||
[(except_clause) (finally_clause)] @end
|
||||
) @indent
|
||||
|
||||
(if_statement
|
||||
consequence: (_) @start
|
||||
alternative: (_) @end
|
||||
) @indent
|
||||
|
||||
(_
|
||||
alternative: (elif_clause) @start
|
||||
alternative: (_) @end
|
||||
) @indent
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue