diff options
| author | Ibrahim Muftee <ibrahim@muftee.net> | 2025-08-04 07:45:42 -0500 |
|---|---|---|
| committer | Ibrahim Muftee <ibrahim@muftee.net> | 2026-07-01 00:23:31 -0400 |
| commit | 23d53b5d7bc2f31eed672c0a8d26dc608fb6d0ba (patch) | |
| tree | 7b23cd20340dd0984bb1a9616744ef81c69d3b4c /dot_config/nvim_new/lsp/mesonlsp.lua | |
| parent | 1227ae992f4494d6a3d82d70d0bb9cb01dd50847 (diff) | |
feat(nvim) slim down new config
Diffstat (limited to 'dot_config/nvim_new/lsp/mesonlsp.lua')
| -rw-r--r-- | dot_config/nvim_new/lsp/mesonlsp.lua | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/dot_config/nvim_new/lsp/mesonlsp.lua b/dot_config/nvim_new/lsp/mesonlsp.lua new file mode 100644 index 0000000..c447043 --- /dev/null +++ b/dot_config/nvim_new/lsp/mesonlsp.lua @@ -0,0 +1,37 @@ +---@brief +--- +--- https://github.com/JCWasmx86/mesonlsp +--- +--- An unofficial, unendorsed language server for meson written in C++ + +---Checks if a given path contains a valid Meson project root file +---Looks for 'meson.build' file which contains 'project()' function +local meson_matcher = function(_, path) + local pattern = 'meson.build' + local f = vim.fn.glob(table.concat({ path, pattern }, '/')) + if f == '' then + return false + end + for line in io.lines(f) do + -- skip meson comments + if not line:match '^%s*#.*' then + local str = line:gsub('%s+', '') + if str ~= '' then + if str:match '^project%(' then + return true + else + break + end + end + end + end + return false +end + +return { + cmd = { 'mesonlsp', '--lsp' }, + filetypes = { 'meson' }, + root_dir = function(bufnr, on_dir) + on_dir(vim.fs.root(bufnr, meson_matcher) or vim.fs.root(bufnr, '.git')) + end, +} |
