mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -04:00
refactor(indent)!: Rework indent, aligned indent
indents now use @indent.X style captures, and indent.PROP for properties to set on those captures, as documented in the help. Captures are: indent.auto indent.begin indent.end indent.dedent indent.branch indent.ignore indent.align indent.zero Properties are: indent.immediate indent.start_at_same_line indent.open_delimiter indent.close_delimiter indent.increment indent.avoid_last_matching_next Multiple opening delims on one line and multiple closing on a line are collapsed so as not to over indent, The final line of @indent.align blocks which must in some cases be treated specially to avoid clashing with the next line is treated the same regardless of whether the @indent.align capture actually uses aligned indentation or just normal indentation. The indent.avoid_last_matching_next property controls this. Adjust python to use these. List, set, dict and tuple all use @indent.align which permits both hanging and aligned styles. Finally, try: on it’s own will indent when typing live but make no guaranteeds about whole-file formatting. Includes lucario387:fix-align-indent
This commit is contained in:
parent
90ead4ed58
commit
d1333dd7e5
14 changed files with 298 additions and 53 deletions
12
tests/indent/python/aligned_indent_2.py
Normal file
12
tests/indent/python/aligned_indent_2.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
if True:
|
||||
print(1, 2, 3)
|
||||
|
||||
if True:
|
||||
print(
|
||||
1,
|
||||
2,
|
||||
3
|
||||
)
|
||||
print(1,
|
||||
2,
|
||||
3)
|
||||
|
|
@ -26,5 +26,3 @@ while (a > 4 and
|
|||
pass
|
||||
|
||||
try:
|
||||
pass
|
||||
|
||||
|
|
|
|||
6
tests/indent/python/error_state_def.py
Normal file
6
tests/indent/python/error_state_def.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
def foo(a,
|
||||
b,
|
||||
c):
|
||||
pass
|
||||
|
||||
def foobar(a,
|
||||
6
tests/indent/python/error_state_dict.py
Normal file
6
tests/indent/python/error_state_dict.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
d = {1:4,
|
||||
2:3,
|
||||
4:5}
|
||||
|
||||
d2 = {1:3,
|
||||
5
tests/indent/python/error_state_funcall.py
Normal file
5
tests/indent/python/error_state_funcall.py
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
f(1,2,3,
|
||||
4,5,6)
|
||||
|
||||
g(1,2,3,
|
||||
5
tests/indent/python/error_state_list.py
Normal file
5
tests/indent/python/error_state_list.py
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
l = [1,
|
||||
2,
|
||||
3]
|
||||
|
||||
l2 = [1,
|
||||
5
tests/indent/python/error_state_set.py
Normal file
5
tests/indent/python/error_state_set.py
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
s = {1,
|
||||
2,
|
||||
3}
|
||||
|
||||
s2 = {1,
|
||||
7
tests/indent/python/error_state_tuple.py
Normal file
7
tests/indent/python/error_state_tuple.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
)
|
||||
|
||||
(a,
|
||||
7
tests/indent/python/error_state_tuple_align.py
Normal file
7
tests/indent/python/error_state_tuple_align.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
)
|
||||
|
||||
(a,
|
||||
|
|
@ -14,3 +14,26 @@ def a():
|
|||
return (
|
||||
1, 2, 3
|
||||
)
|
||||
|
||||
def a():
|
||||
return b(
|
||||
1, 2, 3
|
||||
)
|
||||
|
||||
def a():
|
||||
return [1, 2, 3]
|
||||
|
||||
def a():
|
||||
return {1, 2, 3}
|
||||
|
||||
def a():
|
||||
return {
|
||||
"a": 1,
|
||||
"b": 2,
|
||||
"c": 3
|
||||
}
|
||||
|
||||
def a():
|
||||
return [
|
||||
a for a in range (1, 3)
|
||||
]
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@ describe("indent Python:", function()
|
|||
|
||||
describe("new line:", function()
|
||||
run:new_line("aligned_indent.py", { on_line = 1, text = "arg3,", indent = 19 })
|
||||
run:new_line("aligned_indent_2.py", { on_line = 2, text = "x", indent = 4 })
|
||||
run:new_line("aligned_indent_2.py", { on_line = 9, text = "x", indent = 4 })
|
||||
run:new_line("aligned_indent_2.py", { on_line = 12, text = "x", indent = 4 })
|
||||
run:new_line("basic_blocks.py", { on_line = 1, text = "wait,", indent = 4 })
|
||||
run:new_line("basic_blocks.py", { on_line = 6, text = "x += 1", indent = 4 })
|
||||
run:new_line("basic_blocks.py", { on_line = 7, text = "x += 1", indent = 4 })
|
||||
|
|
@ -35,11 +38,18 @@ describe("indent Python:", function()
|
|||
run:new_line("control_flow.py", { on_line = 22, text = "x = 4", indent = 4 })
|
||||
run:new_line("control_flow.py", { on_line = 24, text = "c < 6 and", indent = 7 })
|
||||
run:new_line("control_flow.py", { on_line = 26, text = "x = 4", indent = 4 })
|
||||
run:new_line("control_flow.py", { on_line = 29, text = "x = 4", indent = 4 })
|
||||
run:new_line("control_flow.py", { on_line = 28, text = "x = 4", indent = 4 })
|
||||
run:new_line("branches.py", { on_line = 25, text = "x > 9 and", indent = 4 })
|
||||
run:new_line("branches.py", { on_line = 29, text = "and x > 9", indent = 4 })
|
||||
run:new_line("hanging_indent.py", { on_line = 1, text = "arg0,", indent = 8 })
|
||||
run:new_line("hanging_indent.py", { on_line = 1, text = "arg0,", indent = 4 })
|
||||
run:new_line("hanging_indent.py", { on_line = 5, text = "0,", indent = 4 })
|
||||
run:new_line("error_state_def.py", { on_line = 6, text = "b,", indent = 11 })
|
||||
run:new_line("error_state_tuple.py", { on_line = 7, text = "b,", indent = 1 })
|
||||
run:new_line("error_state_tuple_align.py", { on_line = 7, text = "b,", indent = 1 })
|
||||
run:new_line("error_state_list.py", { on_line = 5, text = "3,", indent = 6 })
|
||||
run:new_line("error_state_dict.py", { on_line = 6, text = "9:10,", indent = 6 })
|
||||
run:new_line("error_state_set.py", { on_line = 5, text = "9,", indent = 6 })
|
||||
run:new_line("error_state_funcall.py", { on_line = 5, text = "6,", indent = 2 })
|
||||
run:new_line(
|
||||
"join_lines.py",
|
||||
{ on_line = 1, text = "+ 1 \\", indent = 4 },
|
||||
|
|
@ -75,7 +85,7 @@ describe("indent Python:", function()
|
|||
run:new_line("line_after_indent.py", { on_line = 55, text = "x", indent = 4 })
|
||||
run:new_line("line_after_indent.py", { on_line = 63, text = "x", indent = 4 })
|
||||
|
||||
for _, line in ipairs { 2, 5, 8, 11, 16 } do
|
||||
for _, line in ipairs { 2, 5, 8, 11, 16, 21, 24, 27, 34, 39 } do
|
||||
run:new_line("return_dedent.py", { on_line = line, text = "x", indent = 0 })
|
||||
end
|
||||
end)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue