From 242dccba12ed898aee5e307025b80dd30446334d Mon Sep 17 00:00:00 2001 From: Avery Date: Wed, 2 Jul 2025 06:28:53 +0000 Subject: [PATCH 1/2] Change how diagnostic signs are defined in Neovim --- common/home-manager/nixvim/lsp.nix | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/common/home-manager/nixvim/lsp.nix b/common/home-manager/nixvim/lsp.nix index 37a8352..7c0766d 100644 --- a/common/home-manager/nixvim/lsp.nix +++ b/common/home-manager/nixvim/lsp.nix @@ -4,17 +4,14 @@ enable = true; keymaps.lspBuf."ca" = "code_action"; luaConfig.post = '' - local signs = { - Error = "", - Warn = "", - Hint = "", - Info = "" - } - - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, {text = icon, texthl = hl, numhl = hl}) - end + vim.diagnostic.config({ + signs = { + Error = "", + Warn = "", + Hint = "", + Info = "" + } + }); ''; servers = { cssls.enable = true; From b4ee9d0b8ac3ac6f142c10f83b759cd9cb6a1ea4 Mon Sep 17 00:00:00 2001 From: Avery Date: Wed, 2 Jul 2025 06:29:17 +0000 Subject: [PATCH 2/2] Replace ts_ls with typescript-tools --- common/home-manager/nixvim/lsp.nix | 43 +++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/common/home-manager/nixvim/lsp.nix b/common/home-manager/nixvim/lsp.nix index 7c0766d..6188c69 100644 --- a/common/home-manager/nixvim/lsp.nix +++ b/common/home-manager/nixvim/lsp.nix @@ -19,7 +19,6 @@ jdtls.enable = true; nil_ls.enable = true; pyright.enable = true; - ts_ls.enable = true; rust_analyzer = { enable = true; installCargo = false; @@ -28,14 +27,44 @@ svelte.enable = true; volar = { enable = true; - tslsIntegration = true; - # extraOptions.init_options.vue.hybridMode = false; + extraOptions.on_init.__raw = '' + function(client) + client.handlers['tsserver/request'] = function(_, result, context) + local clients = vim.lsp.get_clients({ bufnr = context.bufnr, name = 'vtsls' }) + if #clients == 0 then + vim.notify('Could not found `vtsls` lsp client, vue_lsp would not work without it.', vim.log.levels.ERROR) + return + end + local ts_client = clients[1] + + local param = unpack(result) + local id, command, payload = unpack(param) + ts_client:exec_cmd({ + command = 'typescript.tsserverRequest', + arguments = { + command, + payload, + }, + }, { bufnr = context.bufnr }, function(_, r) + local response_data = { { id, r.body } } + ---@diagnostic disable-next-line: param-type-mismatch + client:notify('tsserver/response', response_data) + end) + end + end, + ''; + }; + }; + }; + typescript-tools = { + enable = true; + settings = { + filetypes = [ "javascript" "typescript" "vue" ]; + settings = { + single_file_support = false; + tsserver_plugins = [ "@vue/typescript-plugin" ]; }; }; }; - # nvim-jdtls = { - # enable = true; - # data = "~/.cache/jdtls/workspace"; - # }; }; }