diff --git a/queries/python/indents.scm b/queries/python/indents.scm index da37c1f30..c02879712 100644 --- a/queries/python/indents.scm +++ b/queries/python/indents.scm @@ -50,14 +50,28 @@ ((ERROR "(" . (_)) @aligned_indent (#set! "delimiter" "()")) -((argument_list) @aligned_indent +((argument_list ")" @indent_end) @aligned_indent (#set! "delimiter" "()")) ((parameters) @aligned_indent (#set! "delimiter" "()") (#set! "final_line_indent" 1)) -((tuple) @aligned_indent +((tuple ")" @indent_end) @aligned_indent (#set! "delimiter" "()")) +(list "]" @indent_end) +(dictionary "}" @indent_end) +(set "}" @indent_end) + +(parenthesized_expression ")" @indent_end) +(generator_expression ")" @indent_end) +(list_comprehension "]" @indent_end) +(set_comprehension "}" @indent_end) +(dictionary_comprehension "}" @indent_end) + +(tuple_pattern ")" @indent_end) +(list_pattern "]" @indent_end) + + [ ")" "]" diff --git a/tests/indent/python/line_after_indent.py b/tests/indent/python/line_after_indent.py new file mode 100644 index 000000000..ba24dc03f --- /dev/null +++ b/tests/indent/python/line_after_indent.py @@ -0,0 +1,65 @@ +( + a, + b +) + +foo.bar( + a, b +) + +foo = [ + 1, + 2, + 3 +] + +foo = { + "a": 1, + "b": 2, + "c": 3 +} + +foo = { + 1, + 2, + 3, +} + +foo = ( + 1 + 2 +) + +( + a for a in range(0, 10) +) + +foo = [ + a for a in range(0, 10) +] + +foo = { + a for a in range(0, 10) +} + +foo = { + a: b for a, b in items +} + +foo.bar( + "baz") + +[ + a + b for ( + a, + b + ) + in items +] + +[ + a + b for [ + a, + b + ] + in items +] diff --git a/tests/indent/python_spec.lua b/tests/indent/python_spec.lua index b1e94cbf8..6b417a37f 100644 --- a/tests/indent/python_spec.lua +++ b/tests/indent/python_spec.lua @@ -60,5 +60,19 @@ describe("indent Python:", function() run:new_line("strings.py", { on_line = 14, text = "x", indent = 4 }) run:new_line("strings.py", { on_line = 15, text = "x", indent = 0 }) run:new_line("strings.py", { on_line = 16, text = "x", indent = 8 }) + run:new_line("line_after_indent.py", { on_line = 4, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 8, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 4, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 14, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 20, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 26, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 30, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 34, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 38, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 42, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 46, text = "x", indent = 0 }) + run:new_line("line_after_indent.py", { on_line = 49, text = "x", indent = 0 }) + 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 }) end) end)