aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--queries/query/indents.scm20
-rw-r--r--tests/indent/common.lua2
-rw-r--r--tests/indent/query/test.scm41
-rw-r--r--tests/indent/query_spec.lua25
4 files changed, 83 insertions, 5 deletions
diff --git a/queries/query/indents.scm b/queries/query/indents.scm
index 925d77060..2ce40d299 100644
--- a/queries/query/indents.scm
+++ b/queries/query/indents.scm
@@ -1,8 +1,20 @@
-(list) @indent.begin
-
[
+ (list)
+ (named_node)
+ (grouping)
+ (predicate) ; WIP to newline wrap any-of?
"["
- "]"
] @indent.begin
-"]" @indent.branch
+; ERROR node indents
+(ERROR
+ "(") @indent.begin
+
+"]" @indent.branch @indent.end
+
+")" @indent.end
+
+; Captures always mark the end of a node
+; Because of that, mark it as indent.end
+(capture
+ name: (identifier) @indent.end)
diff --git a/tests/indent/common.lua b/tests/indent/common.lua
index 451d2f626..1ddd91a40 100644
--- a/tests/indent/common.lua
+++ b/tests/indent/common.lua
@@ -83,7 +83,7 @@ local function compare_indent(before, after, xfail)
end
local function set_buf_indent_opts(opts)
- local optnames = { "tabstop", "shiftwidth", "softtabstop", "expandtab", "filetype" }
+ local optnames = { "tabstop", "shiftwidth", "softtabstop", "expandtab", "filetype", "lispoptions" }
for _, opt in ipairs(optnames) do
if opts[opt] ~= nil then
vim.bo[opt] = opts[opt]
diff --git a/tests/indent/query/test.scm b/tests/indent/query/test.scm
new file mode 100644
index 000000000..62b94417c
--- /dev/null
+++ b/tests/indent/query/test.scm
@@ -0,0 +1,41 @@
+; vim:ft=query
+; format-ignore
+(fenced_code_block (fenced_code_block_delimiter) @label
+ (info_string
+ (language) @_lang)
+ (#offset! @label 0 1 0 -1)
+ (#ft-conceal! @_lang))
+
+([
+ (list_marker_minus)
+ (list_marker_plus)
+ (list_marker_star)
+] @markup.list
+ (#offset-first-n! @markup.list 1)
+ (#set! conceal "•"))
+
+(list
+ (list_item
+ (list
+ (list_item
+ ([
+ (list_marker_minus)
+ (list_marker_plus)
+ (list_marker_star)
+ ] @markup.list
+ (#offset-first-n! @markup.list 1)
+ (#set! conceal "◦"))))))
+
+; comment
+(while_statement
+ [
+ "while"
+ "do"
+ ] @open.loop
+ "end" @close.loop) @scope.loop
+
+[
+ "toplevel"
+ "list"
+] @variable
+((
diff --git a/tests/indent/query_spec.lua b/tests/indent/query_spec.lua
new file mode 100644
index 000000000..1f9c2315d
--- /dev/null
+++ b/tests/indent/query_spec.lua
@@ -0,0 +1,25 @@
+local Runner = require("tests.indent.common").Runner
+
+local run = Runner:new(it, "tests/indent/query", {
+ tabstop = 2,
+ shiftwidth = 2,
+ softtabstop = 2,
+ expandtab = true,
+ lispoptions = "expr:1",
+})
+
+describe("indent Query:", function()
+ describe("whole file:", function()
+ run:whole_file(".", {})
+ end)
+ describe("new line:", function()
+ run:new_line("test.scm", { on_line = 3, text = "(node)", indent = 2 })
+ run:new_line("test.scm", { on_line = 5, text = "(node)", indent = 2 })
+ run:new_line("test.scm", { on_line = 12, text = "(node)", indent = 2 })
+ run:new_line("test.scm", { on_line = 25, text = "(#my-directive!)", indent = 10 })
+ run:new_line("test.scm", { on_line = 34, text = '"more"', indent = 2 })
+ run:new_line("test.scm", { on_line = 35, text = "(node)", indent = 0 })
+ run:new_line("test.scm", { on_line = 40, text = "(node)", indent = 0 })
+ run:new_line("test.scm", { on_line = 41, text = "node_name", indent = 2 })
+ end)
+end)