Something went wrong. Try again.
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859(import-macros {: pack! : spec! : raw-setup! : setup! : user-cmd! : autocmd!} :macros)
(set vim.env.PATH (.. vim.env.PATH ":" (vim.fn.stdpath :data) :/mason/bin))
(pack! [(spec! "https://github.com/neovim/nvim-lspconfig") (spec! "https://github.com/williamboman/mason.nvim" {:cmd :Mason :after (setup! :mason)})])
;; TODO: also search `lsp/` for configs, append here.;; This list primarily exists to pull lspconfig configs(let [servers [:gopls :lua_ls :templ :harper_ls :just :nil_ls :fennel_ls :jsonls :html :cssls :ts_ls :rust_analyzer :ts_query_ls :pyright :ruff :gleam :elixirls :dexter ; :expert :svelte :tinymist :postgres_lsp :starlark_rust]] (each [_ server (ipairs servers)] (vim.lsp.enable server)))
(let [ag (vim.api.nvim_create_augroup :InlayHints {:clear true}) cb (fn [args] (let [client (vim.lsp.get_client_by_id args.data.client_id)] (when (and client (or (client:supports_method :textDocument/inlayHint) client.server_capabilities.inlayHintProvider)) (vim.lsp.inlay_hint.enable true {:bufnr args.buf}))))] (vim.cmd.highlight "default link LspInlayHint Comment") (autocmd! :LspAttach {:group ag :callback cb}))
;; Built in LSP auto-completion; (let [cb (fn [args]; (let [client (vim.lsp.get_client_by_id args.data.client_id)]; (when (client:supports_method :textDocument/completion); (vim.lsp.completion.enable true client.id args.buf; {:autotrigger true}))))]; (autocmd! :LspAttach {:callback cb}))
(user-cmd! :LspLog #(vim.cmd (.. :e (vim.fn.expand :$HOME/.local/state/nvim/lsp.log))) {:nargs 0})