diff options
Diffstat (limited to '.config/nvim/lua/lang/json.lua')
-rw-r--r-- | .config/nvim/lua/lang/json.lua | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/.config/nvim/lua/lang/json.lua b/.config/nvim/lua/lang/json.lua new file mode 100644 index 0000000..78bf669 --- /dev/null +++ b/.config/nvim/lua/lang/json.lua @@ -0,0 +1,69 @@ +local M = {} + +M.config = function() + O.lang.json = { + diagnostics = { + virtual_text = { spacing = 0, prefix = "" }, + signs = true, + underline = true, + }, + formatter = { + exe = "python", + args = { "-m", "json.tool" }, + stdin = true, + }, + } +end + +M.format = function() + O.formatters.filetype["json"] = { + function() + return { + exe = O.lang.json.formatter.exe, + args = O.lang.json.formatter.args, + stdin = O.lang.json.formatter.stdin, + } + end, + } + + require("formatter.config").set_defaults { + logging = false, + filetype = O.formatters.filetype, + } +end + +M.lint = function() + -- TODO: implement linters (if applicable) + return "No linters configured!" +end + +M.lsp = function() + if require("utils").check_lsp_client_active "jsonls" then + return + end + + -- npm install -g vscode-json-languageserver + require("lspconfig").jsonls.setup { + cmd = { + "node", + DATA_PATH .. "/lspinstall/json/vscode-json/json-language-features/server/dist/node/jsonServerMain.js", + "--stdio", + }, + on_attach = require("lsp").common_on_attach, + + commands = { + Format = { + function() + vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 }) + end, + }, + }, + } +end + +M.dap = function() + -- TODO: implement dap + return "No DAP configured!" +end + +return M |