aboutsummaryrefslogtreecommitdiffstats
path: root/tests/indent
diff options
context:
space:
mode:
authorRiley Bruins <ribru17@hotmail.com>2024-02-21 01:47:09 -0800
committerGitHub <noreply@github.com>2024-02-21 18:47:09 +0900
commit455f6586bae558f99b51c0b07d46adc736f3822c (patch)
treea2f5091bd44cc51794c85dd0d86846bd8398d9f4 /tests/indent
parenthighlights(slang): add support for `where` (diff)
downloadnvim-treesitter-455f6586bae558f99b51c0b07d46adc736f3822c.tar
nvim-treesitter-455f6586bae558f99b51c0b07d46adc736f3822c.tar.gz
nvim-treesitter-455f6586bae558f99b51c0b07d46adc736f3822c.tar.bz2
nvim-treesitter-455f6586bae558f99b51c0b07d46adc736f3822c.tar.lz
nvim-treesitter-455f6586bae558f99b51c0b07d46adc736f3822c.tar.xz
nvim-treesitter-455f6586bae558f99b51c0b07d46adc736f3822c.tar.zst
nvim-treesitter-455f6586bae558f99b51c0b07d46adc736f3822c.zip
feat(query): indents that reflect the formatter (#6154)
* feat(query): indents that reflect the formatter Indentation queries that reflect the query formatter. Only applicable if `lispoptions=expr:1`
Diffstat (limited to 'tests/indent')
-rw-r--r--tests/indent/common.lua2
-rw-r--r--tests/indent/query/test.scm41
-rw-r--r--tests/indent/query_spec.lua25
3 files changed, 67 insertions, 1 deletions
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)