From d80d85a4e10fda2215ee753e6f109fa086ac5e6f Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Sun, 19 Apr 2026 01:21:56 +0200 Subject: [PATCH] lsp/presets/vtsls: init --- docs/manual/release-notes/rl-0.9.md | 2 ++ modules/plugins/lsp/presets/default.nix | 1 + modules/plugins/lsp/presets/vtsls.nix | 37 +++++++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 modules/plugins/lsp/presets/vtsls.nix diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index 7bbe8db0..0a6d9314 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -290,6 +290,8 @@ - Added {option}`vim.lsp.presets.angular-language-server.enable` for Angular Template support. +- Added {option}`vim.lsp.presets.vtsls.enable` for Vue TypeScript support. + - Fix `vim.lsp.presets.vala-language-server` to be wrapped correctly with `uncrustify`. diff --git a/modules/plugins/lsp/presets/default.nix b/modules/plugins/lsp/presets/default.nix index 07cbf509..47d396d2 100644 --- a/modules/plugins/lsp/presets/default.nix +++ b/modules/plugins/lsp/presets/default.nix @@ -68,6 +68,7 @@ ./vala-language-server.nix ./vscode-css-language-server.nix ./vscode-json-language-server.nix + ./vtsls.nix ./wgsl-analyzer.nix ./yaml-language-server.nix ./zls.nix diff --git a/modules/plugins/lsp/presets/vtsls.nix b/modules/plugins/lsp/presets/vtsls.nix new file mode 100644 index 00000000..647a8a47 --- /dev/null +++ b/modules/plugins/lsp/presets/vtsls.nix @@ -0,0 +1,37 @@ +{ + config, + lib, + pkgs, + ... +}: let + inherit (lib.meta) getExe; + inherit (lib.modules) mkIf; + inherit (lib.nvim.types) mkLspPresetEnableOption; + + cfg = config.vim.lsp.presets.vtsls; +in { + options.vim.lsp.presets.vtsls = { + enable = mkLspPresetEnableOption "vtsls" "Vue.js Typescript" []; + }; + + config = mkIf cfg.enable { + vim.lsp.servers.vtsls = { + enable = true; + cmd = [(getExe pkgs.vtsls) "--stdio"]; + root_markers = [".git" "tsconfig.json" "package.json"]; + settings = { + vtsls = { + tsserver.globalPlugins = [ + { + name = "@vue/typescript-plugin"; + location = "${pkgs.vue-language-server}/lib/language-tools/packages/language-server"; + languages = ["vue"]; + configNamespace = "typescript"; + } + ]; + }; + }; + capabilities.semanticTokensProvider = false; + }; + }; +}