From 6548bb64c11e0860a504de3012e8aa14e1d51d7e Mon Sep 17 00:00:00 2001 From: Jędrzej Boczar Date: Fri, 19 Jan 2024 16:08:23 +0100 Subject: feat(meson): add indents.scm --- queries/meson/indents.scm | 25 +++++++++++++++++++++++++ tests/indent/meson/cond.meson | 16 ++++++++++++++++ tests/indent/meson/dict.meson | 15 +++++++++++++++ tests/indent/meson/func.meson | 13 +++++++++++++ tests/indent/meson/list.meson | 14 ++++++++++++++ tests/indent/meson/loop.meson | 8 ++++++++ tests/indent/meson/meson.build | 34 ++++++++++++++++++++++++++++++++++ tests/indent/meson/method.meson | 8 ++++++++ tests/indent/meson/ternary.meson | 11 +++++++++++ tests/indent/meson_spec.lua | 28 ++++++++++++++++++++++++++++ 10 files changed, 172 insertions(+) create mode 100644 queries/meson/indents.scm create mode 100644 tests/indent/meson/cond.meson create mode 100644 tests/indent/meson/dict.meson create mode 100644 tests/indent/meson/func.meson create mode 100644 tests/indent/meson/list.meson create mode 100644 tests/indent/meson/loop.meson create mode 100644 tests/indent/meson/meson.build create mode 100644 tests/indent/meson/method.meson create mode 100644 tests/indent/meson/ternary.meson create mode 100644 tests/indent/meson_spec.lua diff --git a/queries/meson/indents.scm b/queries/meson/indents.scm new file mode 100644 index 000000000..231f8b055 --- /dev/null +++ b/queries/meson/indents.scm @@ -0,0 +1,25 @@ +[ + (list) + (dictionaries) + (normal_command) + (if_condition) + (foreach_command) + (ternaryoperator) + (ERROR + "?") ; support partial ternary +] @indent.begin + +[ + ")" + "]" + "}" + (elseif_command) + (else_command) + "endif" + "endforeach" +] @indent.branch @indent.end + +(experession_statement + object: (_)) @indent.begin + +(comment) @indent.auto diff --git a/tests/indent/meson/cond.meson b/tests/indent/meson/cond.meson new file mode 100644 index 000000000..a4b0b71df --- /dev/null +++ b/tests/indent/meson/cond.meson @@ -0,0 +1,16 @@ +# vim: ft=meson + +if a == b +endif + +if a == b + foo() +endif + +if a == b + foo() +elif a != b + foo() +else + foo() +endif diff --git a/tests/indent/meson/dict.meson b/tests/indent/meson/dict.meson new file mode 100644 index 000000000..d48689fa4 --- /dev/null +++ b/tests/indent/meson/dict.meson @@ -0,0 +1,15 @@ +# vim: ft=meson + +foo = { + 'a': 1, + 'b': 2, +} + +bar = { + 'a': 1, + 'b': 2} + +baz = {'a': 1, + 'b': 2 +} + diff --git a/tests/indent/meson/func.meson b/tests/indent/meson/func.meson new file mode 100644 index 000000000..3e83e0fad --- /dev/null +++ b/tests/indent/meson/func.meson @@ -0,0 +1,13 @@ +# vim: ft=meson + +executable('progname', +) + +executable('progname', + sources: 'prog.c', + c_args: '-DFOO=1' +) + +executable('progname', + sources: 'prog.c', + c_args: '-DFOO=1') diff --git a/tests/indent/meson/list.meson b/tests/indent/meson/list.meson new file mode 100644 index 000000000..0dd17d27f --- /dev/null +++ b/tests/indent/meson/list.meson @@ -0,0 +1,14 @@ +# vim: ft=meson + +foo = [ + 'a', + 'b', +] + +bar = [ + 'a', + 'b'] + +baz = ['a', + 'b' +] diff --git a/tests/indent/meson/loop.meson b/tests/indent/meson/loop.meson new file mode 100644 index 000000000..ae9c4b7a7 --- /dev/null +++ b/tests/indent/meson/loop.meson @@ -0,0 +1,8 @@ +# vim: ft=meson + +foreach elem : list +endforeach + +foreach elem : list + foo() +endforeach diff --git a/tests/indent/meson/meson.build b/tests/indent/meson/meson.build new file mode 100644 index 000000000..b7e6e0568 --- /dev/null +++ b/tests/indent/meson/meson.build @@ -0,0 +1,34 @@ +project('simple', 'c') + +src = [ + 'source1.c', + 'source2.c', +] + +if 1 == 2 + if meson.is_cross_build() + src += [ + 'src1.c', + 'src2.c'] + endif +endif + +inc = include_directories([ + 'dir1/', +]) + + +dep = declare_dependency( + sources : src, + include_directories : inc, +) + +executable('myexe', src, + include_directories : [ + 'd1', + [ + 'd2', + 'd3', + ] + ], + dependencies: dep) diff --git a/tests/indent/meson/method.meson b/tests/indent/meson/method.meson new file mode 100644 index 000000000..8c17be8a8 --- /dev/null +++ b/tests/indent/meson/method.meson @@ -0,0 +1,8 @@ +# vim: ft=meson + +myobj + .do_something('now') + +myobj.do_something('now') + .do_something('now') + .do_something('now') diff --git a/tests/indent/meson/ternary.meson b/tests/indent/meson/ternary.meson new file mode 100644 index 000000000..d3dec04ac --- /dev/null +++ b/tests/indent/meson/ternary.meson @@ -0,0 +1,11 @@ +# vim: ft=meson + +x = cond ? + iftrue : + iffalse + +x = cond + ? iftrue + : iffalse + +x = cond ? diff --git a/tests/indent/meson_spec.lua b/tests/indent/meson_spec.lua new file mode 100644 index 000000000..bc2372ee0 --- /dev/null +++ b/tests/indent/meson_spec.lua @@ -0,0 +1,28 @@ +local Runner = require("tests.indent.common").Runner + +local run = Runner:new(it, "tests/indent/meson", { + tabstop = 2, + shiftwidth = 2, + softtabstop = 0, + expandtab = true, +}) + +describe("indent Meson:", function() + describe("whole file:", function() + run:whole_file(".", { + expected_failures = {}, + }) + end) + + describe("new line:", function() + run:new_line("cond.meson", { on_line = 3, text = "foo()", indent = 2 }) + run:new_line("cond.meson", { on_line = 6, text = "foo()", indent = 2 }) + run:new_line("cond.meson", { on_line = 7, text = "foo()", indent = 2 }) + run:new_line("cond.meson", { on_line = 12, text = "foo()", indent = 2 }) + run:new_line("cond.meson", { on_line = 14, text = "foo()", indent = 2 }) + run:new_line("dict.meson", { on_line = 13, text = ",'x':1,", indent = 2 }) + run:new_line("loop.meson", { on_line = 3, text = "foo()", indent = 2 }) + run:new_line("loop.meson", { on_line = 7, text = "foo()", indent = 2 }) + run:new_line("ternary.meson", { on_line = 11, text = "x : y", indent = 2 }) + end) +end) -- cgit v1.2.3-70-g09d2