aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGeorge Harker <george@george-graphics.co.uk>2023-03-19 18:09:18 -0700
committerAmaan Qureshi <amaanq12@gmail.com>2023-03-24 13:07:53 -0400
commitd1333dd7e51729a581fed3e429fa035bff77a3db (patch)
tree961499041e8e3da94963e7331e09754d423b40a1 /tests
parentfix: shim 0.9 deprecations (diff)
downloadnvim-treesitter-d1333dd7e51729a581fed3e429fa035bff77a3db.tar
nvim-treesitter-d1333dd7e51729a581fed3e429fa035bff77a3db.tar.gz
nvim-treesitter-d1333dd7e51729a581fed3e429fa035bff77a3db.tar.bz2
nvim-treesitter-d1333dd7e51729a581fed3e429fa035bff77a3db.tar.lz
nvim-treesitter-d1333dd7e51729a581fed3e429fa035bff77a3db.tar.xz
nvim-treesitter-d1333dd7e51729a581fed3e429fa035bff77a3db.tar.zst
nvim-treesitter-d1333dd7e51729a581fed3e429fa035bff77a3db.zip
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
Diffstat (limited to 'tests')
-rw-r--r--tests/indent/python/aligned_indent_2.py12
-rw-r--r--tests/indent/python/control_flow.py2
-rw-r--r--tests/indent/python/error_state_def.py6
-rw-r--r--tests/indent/python/error_state_dict.py6
-rw-r--r--tests/indent/python/error_state_funcall.py5
-rw-r--r--tests/indent/python/error_state_list.py5
-rw-r--r--tests/indent/python/error_state_set.py5
-rw-r--r--tests/indent/python/error_state_tuple.py7
-rw-r--r--tests/indent/python/error_state_tuple_align.py7
-rw-r--r--tests/indent/python/return_dedent.py23
-rw-r--r--tests/indent/python_spec.lua16
11 files changed, 89 insertions, 5 deletions
diff --git a/tests/indent/python/aligned_indent_2.py b/tests/indent/python/aligned_indent_2.py
new file mode 100644
index 000000000..124f7142f
--- /dev/null
+++ b/tests/indent/python/aligned_indent_2.py
@@ -0,0 +1,12 @@
+if True:
+ print(1, 2, 3)
+
+if True:
+ print(
+ 1,
+ 2,
+ 3
+ )
+ print(1,
+ 2,
+ 3)
diff --git a/tests/indent/python/control_flow.py b/tests/indent/python/control_flow.py
index 7ec02e3ff..fca528a2d 100644
--- a/tests/indent/python/control_flow.py
+++ b/tests/indent/python/control_flow.py
@@ -26,5 +26,3 @@ while (a > 4 and
pass
try:
- pass
-
diff --git a/tests/indent/python/error_state_def.py b/tests/indent/python/error_state_def.py
new file mode 100644
index 000000000..943fbfac3
--- /dev/null
+++ b/tests/indent/python/error_state_def.py
@@ -0,0 +1,6 @@
+def foo(a,
+ b,
+ c):
+ pass
+
+def foobar(a,
diff --git a/tests/indent/python/error_state_dict.py b/tests/indent/python/error_state_dict.py
new file mode 100644
index 000000000..dec92b1f9
--- /dev/null
+++ b/tests/indent/python/error_state_dict.py
@@ -0,0 +1,6 @@
+
+d = {1:4,
+ 2:3,
+ 4:5}
+
+d2 = {1:3,
diff --git a/tests/indent/python/error_state_funcall.py b/tests/indent/python/error_state_funcall.py
new file mode 100644
index 000000000..e86720ed1
--- /dev/null
+++ b/tests/indent/python/error_state_funcall.py
@@ -0,0 +1,5 @@
+
+f(1,2,3,
+ 4,5,6)
+
+g(1,2,3,
diff --git a/tests/indent/python/error_state_list.py b/tests/indent/python/error_state_list.py
new file mode 100644
index 000000000..09823bb05
--- /dev/null
+++ b/tests/indent/python/error_state_list.py
@@ -0,0 +1,5 @@
+l = [1,
+ 2,
+ 3]
+
+l2 = [1,
diff --git a/tests/indent/python/error_state_set.py b/tests/indent/python/error_state_set.py
new file mode 100644
index 000000000..31338de68
--- /dev/null
+++ b/tests/indent/python/error_state_set.py
@@ -0,0 +1,5 @@
+s = {1,
+ 2,
+ 3}
+
+s2 = {1,
diff --git a/tests/indent/python/error_state_tuple.py b/tests/indent/python/error_state_tuple.py
new file mode 100644
index 000000000..fda59c8c3
--- /dev/null
+++ b/tests/indent/python/error_state_tuple.py
@@ -0,0 +1,7 @@
+(
+ a,
+ b,
+ c,
+)
+
+(a,
diff --git a/tests/indent/python/error_state_tuple_align.py b/tests/indent/python/error_state_tuple_align.py
new file mode 100644
index 000000000..fda59c8c3
--- /dev/null
+++ b/tests/indent/python/error_state_tuple_align.py
@@ -0,0 +1,7 @@
+(
+ a,
+ b,
+ c,
+)
+
+(a,
diff --git a/tests/indent/python/return_dedent.py b/tests/indent/python/return_dedent.py
index 44d6219de..8171bc9d1 100644
--- a/tests/indent/python/return_dedent.py
+++ b/tests/indent/python/return_dedent.py
@@ -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)
+ ]
diff --git a/tests/indent/python_spec.lua b/tests/indent/python_spec.lua
index c400de542..6f4e0fec7 100644
--- a/tests/indent/python_spec.lua
+++ b/tests/indent/python_spec.lua
@@ -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)