aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lsp/fennel_ls.lua
blob: acd9341a5e3dd6f29d43420b7c04b647c499d7af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
---@brief
---
--- https://sr.ht/~xerool/fennel-ls/
---
--- A language server for fennel.
---
--- fennel-ls is configured using the closest file to your working directory named `flsproject.fnl`.
--- All fennel-ls configuration options [can be found here](https://git.sr.ht/~xerool/fennel-ls/tree/HEAD/docs/manual.md#configuration).

---@type vim.lsp.Config
return {
  cmd = { 'fennel-ls' },
  filetypes = { 'fennel' },
  root_dir = function(bufnr, on_dir)
    local fname = vim.api.nvim_buf_get_name(bufnr)
    local has_fls_project_cfg = function(path)
      local fnlpath = vim.fs.joinpath(path, 'flsproject.fnl')
      return (vim.uv.fs_stat(fnlpath) or {}).type == 'file'
    end
    on_dir(vim.iter(vim.fs.parents(fname)):find(has_fls_project_cfg) or vim.fs.root(0, '.git'))
  end,
  settings = {},
  capabilities = {
    offsetEncoding = { 'utf-8', 'utf-16' },
  },
}