lsp.lua

Branches > main > 46734e3 > files / nvim / lua / lsp.lua

local lsp = vim.lsp
local keymap = vim.keymap.set

-- TODO should be buffer-local?
local function on_attach(client, bufnr)
  keymap("n", "gd", lsp.buf.definition)
  keymap("n", "gr", lsp.buf.references)
  keymap("n", "gi", lsp.buf.implementation)
  keymap("n", "<Space>r", lsp.buf.rename)
  keymap("n", "<Space>c", lsp.buf.code_action)
end

local function config(opts)
  local name = opts.name

  opts.cmd = {name}
  opts.on_attach = on_attach

  lsp.config(name, opts)
  lsp.enable(name)
end

--- TODO hopefully this works :p
config({name = "clojure-lsp",
        filetypes = {"clojure"},
        root_markers = {"project.clj", "deps.edn", "build.boot", "shadow-cljs.edn", ".git", "bb.edn"}})

config({name = "lua-language-server",
        filetypes = {"lua"},
        settings = {Lua = {diagnostics = {globals = {"vim"}}}},
        root_markers = {".luarc.json", ".luarc.jsonc", ".luacheckrc", ".stylua.toml", "stylua.toml", "selene.toml", "selene.yml", ".git"}})