Something went wrong. Try again.
clojure plugin for neovim
Something went wrong. Try again.
6.6 kB · 230 lines
Lua
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231-- [nfnl] fnl/clojure-nvim/lsp.fnllocal _local_1_ = require("clojure-nvim.fs")local get_package_path = _local_1_["get-package-path"]local edn = require("clojure-nvim.vendor.edn")local textcase = require("textcase")local clojure_lsp_commands = get_package_path("lua", "clojure-nvim", "clojure-lsp-commands.edn")local function get_uri_and_pos() local _let_2_ = vim.api.nvim_win_get_cursor(0) local row = _let_2_[1] local col = _let_2_[2] local uri = vim.uri_from_bufnr(0) return {uri, (row - 1), col}endlocal function get_client(name) if (nil == name) then _G.error("Missing argument name on fnl/clojure-nvim/lsp.fnl:17", 2) else end return vim.lsp.get_clients({name = name})[1]endlocal function execute_positional_command(cmd, _3fargs) if (nil == cmd) then _G.error("Missing argument cmd on fnl/clojure-nvim/lsp.fnl:20", 2) else end local client = get_client("clojure-lsp") local _let_5_ = get_uri_and_pos() local uri = _let_5_[1] local row = _let_5_[2] local col = _let_5_[3] local function _6_() if ("string" == type(_3fargs)) then return _3fargs else return unpack((_3fargs or {})) end end client:exec_cmd({command = cmd.command, arguments = {uri, row, col, _6_()}}) return vim.api.nvim__redraw({buf = 0, flush = true})endlocal function execute_prompt_command(cmd, _3fargs) if (nil == cmd) then _G.error("Missing argument cmd on fnl/clojure-nvim/lsp.fnl:29", 2) else end local prompt = cmd.prompt if not _3fargs then local function _8_(_241) return execute_positional_command(cmd, _241) end return vim.ui.input({prompt = (prompt .. " ")}, _8_) else local function _10_() local t_9_ = _3fargs if (nil ~= t_9_) then t_9_ = t_9_.args else end return t_9_ end return execute_positional_command(cmd, _10_()) endendlocal function execute_choice_command(cmd, _3fargs) if (nil == cmd) then _G.error("Missing argument cmd on fnl/clojure-nvim/lsp.fnl:35", 2) else end local prompt = cmd.prompt local choices = cmd.choices if not _3fargs then local function _14_(_241) return execute_positional_command(cmd, _241) end return vim.ui.select(choices, {prompt = prompt}, _14_) else local function _16_() local t_15_ = _3fargs if (nil ~= t_15_) then t_15_ = t_15_.args else end return t_15_ end return execute_positional_command(cmd, _16_()) endendlocal function get_command_fn(cmd) if (nil == cmd) then _G.error("Missing argument cmd on fnl/clojure-nvim/lsp.fnl:41", 2) else end local case_20_ = cmd.type if (case_20_ == "positional") then local function _21_(_args) return execute_positional_command(cmd, nil) end return _21_ elseif (case_20_ == "prompt") then local function _22_(args) if (nil == args) then _G.error("Missing argument args on fnl/clojure-nvim/lsp.fnl:44", 2) else end return execute_prompt_command(cmd, args) end return _22_ elseif (case_20_ == "choice") then local function _24_(args) if (nil == args) then _G.error("Missing argument args on fnl/clojure-nvim/lsp.fnl:45", 2) else end return execute_choice_command(cmd, args) end return _24_ else return nil endendlocal function register_keymaps(commands) if (nil == commands) then _G.error("Missing argument commands on fnl/clojure-nvim/lsp.fnl:47", 2) else end for _, cmd in ipairs(commands) do if cmd.shortcut then vim.keymap.set("n", ("<leader>cl" .. cmd.shortcut), get_command_fn(cmd), {silent = true, noremap = true, desc = ("clojure-lsp-" .. cmd.command)}) else end end return nilendlocal function register_commands(commands) if (nil == commands) then _G.error("Missing argument commands on fnl/clojure-nvim/lsp.fnl:56", 2) else end for _, cmd in ipairs(commands) do local nargs if cmd.positional then nargs = "0" else nargs = "?" end vim.api.nvim_create_user_command(("CljLsp" .. textcase.api.to_pascal_case(cmd.command)), get_command_fn(cmd), {nargs = nargs}) end local function _31_() local _let_32_ = get_uri_and_pos() local uri = _let_32_[1] local row = _let_32_[2] local col = _let_32_[3] return vim.lsp.buf_notify(0, "clojure/cursorInfo/log", {textDocument = {uri = uri}, position = {line = row, character = col}}) end vim.api.nvim_create_user_command("CljLspCursorInfo", _31_, {nargs = 0}) local function _33_() return vim.lsp.buf_notify(0, "clojure/serverInfo/log") end vim.api.nvim_create_user_command("CljLspServerInfo", _33_, {nargs = 0}) local function _34_() return vim.lsp.buf_request_sync(0, "clojure/workspace/projectTree/nodes") end vim.api.nvim_create_user_command("CljLspProjectTree", _34_, {nargs = 0}) return nilendlocal M = {}local default_lsp_config = {cmd = {"clojure-lsp"}, filetypes = {"clojure"}, root_markers = {"project.clj", "deps.edn", "build.boot", "shadow-cljs.edn", "bb.edn", ".git"}}M["set-config"] = function(_3flsp_config) local lsp_config = (_3flsp_config or {}) local function _35_() if vim.tbl_isempty(lsp_config) then return default_lsp_config else return vim.tbl_deep_extend("force", default_lsp_config, lsp_config) end end return vim.lsp.config("clojure-lsp", _35_())endM["enable-config"] = function() return vim.lsp.enable("clojure-lsp")endM["register-keys"] = function(config) if (nil == config) then _G.error("Missing argument config on fnl/clojure-nvim/lsp.fnl:100", 2) else end local reg_keys = config["register-keymaps"] local reg_cmds = config["register-commands"] if vim.uv.fs_stat(clojure_lsp_commands) then local commands = edn.decode(vim.fn.readblob(clojure_lsp_commands)) if reg_keys then register_keymaps(commands) else end if reg_cmds then return register_commands(commands) else return nil end else return nil endendM.initialize = function(config) if (nil == config) then _G.error("Missing argument config on fnl/clojure-nvim/lsp.fnl:109", 2) else end local _42_ do local t_41_ = config if (nil ~= t_41_) then t_41_ = t_41_.lsp else end if (nil ~= t_41_) then t_41_ = t_41_.enable else end _42_ = t_41_ end if _42_ then M["set-config"](config.lsp.config) M["enable-config"]() return M["register-keys"](config.lsp) else return nil endendreturn M