From d7b445365d6324eac6be422de5d17301b22042f5 Mon Sep 17 00:00:00 2001 From: Janis Hutz Date: Tue, 15 Apr 2025 10:25:48 +0200 Subject: [PATCH] [LSP] Improve TS, TSX, JS, JSX, Vue handling --- nvim/lua/plugins/lsp/lspconfig.lua | 50 +++++++++----- nvim/lua/plugins/lsp/none-ls.lua | 1 + nvim/lua/plugins/lsp/typescript-tools.lua | 79 ----------------------- 3 files changed, 36 insertions(+), 94 deletions(-) delete mode 100755 nvim/lua/plugins/lsp/typescript-tools.lua diff --git a/nvim/lua/plugins/lsp/lspconfig.lua b/nvim/lua/plugins/lsp/lspconfig.lua index 9b11c7b..4ac2b56 100755 --- a/nvim/lua/plugins/lsp/lspconfig.lua +++ b/nvim/lua/plugins/lsp/lspconfig.lua @@ -6,10 +6,10 @@ return { "hrsh7th/cmp-nvim-lsp", { "antosha417/nvim-lsp-file-operations", config = true }, -- "mfussenegger/nvim-jdtls", - "nvim-java/nvim-java" + "nvim-java/nvim-java", }, config = function() - require('java').setup() + require("java").setup() -- import lspconfig plugin local lspconfig = require("lspconfig") @@ -142,6 +142,27 @@ return { on_attach = on_attach, }) + lspconfig.ts_ls.setup({ + capabilities = capabilities, + on_attach = on_attach, + init_options = { + plugins = { + { + name = "@vue/typescript-plugin", + location = "/usr/local/lib/node_modules/@vue/typescript-plugin", + languages = { "javascript", "typescript", "vue" }, + }, + }, + }, + filetypes = { + "javascript", + "typescript", + "typescriptreact", + "javascriptreact", + "vue", + }, + }) + local java_on_attach = function(client, bufnr) on_attach(client, bufnr) @@ -187,33 +208,32 @@ return { on_attach = java_on_attach, }) - lspconfig.texlab.setup{ + lspconfig.texlab.setup({ cmd = { "texlab" }, filetypes = { "tex", "latex", "bib" }, root_dir = function(fname) return vim.loop.cwd() end, - } + }) - local lspconfutil = require 'lspconfig/util' + local lspconfutil = require("lspconfig/util") local root_pattern = lspconfutil.root_pattern("veridian.yml", ".git", ".xpr") - local verilog_root_dir = function () - local filename = lspconfutil.path.join(vim.loop.cwd(), fname) + local verilog_root_dir = function() + local filename = lspconfutil.path.join(vim.loop.cwd(), fname) return root_pattern(filename) or lspconfutil.path.dirname(filename) end - lspconfig.veridian.setup { + lspconfig.veridian.setup({ capabilities = capabilities, on_attach = on_attach, - root_dir = verilog_root_dir - } + root_dir = verilog_root_dir, + }) - lspconfig.verible.setup( { + lspconfig.verible.setup({ -- cmd = { 'verible-verilog-ls', '--rules_config=/home/janis/.config/nvim/util/verible-conf.json' }, - cmd = { 'verible-verilog-ls', '--rules=-no-trailing-spaces', '' }, + cmd = { "verible-verilog-ls", "--rules=-no-trailing-spaces", "" }, capabilities = capabilities, on_attach = on_attach, - root_dir = verilog_root_dir - } ) - + root_dir = verilog_root_dir, + }) end, } diff --git a/nvim/lua/plugins/lsp/none-ls.lua b/nvim/lua/plugins/lsp/none-ls.lua index fe23323..ebcbb13 100755 --- a/nvim/lua/plugins/lsp/none-ls.lua +++ b/nvim/lua/plugins/lsp/none-ls.lua @@ -8,6 +8,7 @@ return { null_ls.builtins.formatting.stylua, null_ls.builtins.formatting.prettier, null_ls.builtins.formatting.shfmt, + null_ls.builtins.diagnostics.eslint, null_ls.builtins.formatting.black, }, }) diff --git a/nvim/lua/plugins/lsp/typescript-tools.lua b/nvim/lua/plugins/lsp/typescript-tools.lua deleted file mode 100755 index b4ed9e9..0000000 --- a/nvim/lua/plugins/lsp/typescript-tools.lua +++ /dev/null @@ -1,79 +0,0 @@ -return { - "pmizio/typescript-tools.nvim", - dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, - opts = {}, - ft = { "javascript", "javascriptreact", "typescript", "typescriptreact", "vue" }, - config = function() - require("typescript-tools").setup({ - on_attach = function(client, bufnr) - local opts = { silent = true } - local keymap = vim.keymap - opts.buffer = bufnr - - -- set keybinds - opts.desc = "Show LSP references" - keymap.set("n", "gR", "Telescope lsp_references", opts) - - opts.desc = "Go to declaration" - keymap.set("n", "gD", ":lua vim.lsp.buf.declaration", opts) - - opts.desc = "Show LSP definitions" - keymap.set("n", "gd", "Telescope lsp_definitions", opts) - - opts.desc = "Show LSP implementations" - keymap.set("n", "gi", "Telescope lsp_implementations", opts) - - opts.desc = "Show LSP type definitions" - keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) - - opts.desc = "See available code actions" - keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) - - opts.desc = "Format current file" - keymap.set("n", "gf", vim.lsp.buf.format, opts) - - opts.desc = "Smart rename" - keymap.set("n", "n", vim.lsp.buf.rename, opts) - - opts.desc = "Show buffer diagnostics" - keymap.set("n", "ga", "Telescope diagnostics bufnr=0", opts) - - opts.desc = "Show line diagnostics" - keymap.set("n", "gA", ":lua vim.diagnostic.open_float()", opts) - - opts.desc = "Go to previous diagnostic" - keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) - - opts.desc = "Go to next diagnostic" - keymap.set("n", "]d", vim.diagnostic.goto_next, opts) - - opts.desc = "Show documentation for what is under cursor" - keymap.set("n", "k", vim.lsp.buf.hover, opts) - - opts.desc = "Restart LSP" - keymap.set("n", "rs", ":LspRestart", opts) - - vim.opt.signcolumn = "yes" -- reserve space for diagnostics - - client.server_capabilities.documentFormattingProvider = false - client.server_capabilities.documentRangeFormattingProvider = false - end, - filetypes = { - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - "vue", - }, - settings = { - tsserver_plugins = { - "@vue/typescript-plugin", - }, - jsx_close_tag = { - enable = true, - filetypes = { "javascriptreact", "typescriptreact" }, - }, - }, - }) - end, -}