diff --git a/modules/plugins/languages/ts.nix b/modules/plugins/languages/ts.nix index 6064da98..648f40b6 100644 --- a/modules/plugins/languages/ts.nix +++ b/modules/plugins/languages/ts.nix @@ -52,6 +52,57 @@ ''; }; + # vtsls language server, including Vue support + # https://github.com/yioneko/vtsls + # https://github.com/vuejs/language-tools/wiki/Neovim + vtsls = { + package = pkgs.vtsls; + lspConfig = + # lua + '' + local vue_language_server_path = '${pkgs.vue-language-server + "/lib/node_modules/@vue/language-server"}' + local vue_plugin = { + name = '@vue/typescript-plugin', + location = vue_language_server_path, + languages = { 'vue' }, + configNamespace = 'typescript', + } + + --- lsconfig method doesn't work in nvf, it says + --- it cannot find vue_ls or vtsls config.md + --- Using it this way means they're always enabled configs + vim.lsp.config("vtsls", { + capabilities = capabilities, + on_attach = function(client, bufnr) + attach_keymaps(client, bufnr); + -- TODO: do we need to disable formatting for this LS? + client.server_capabilities.documentFormattingProvider = false; + end, + filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' }, + settings = { + vtsls = { + tsserver = { + globalPlugins = { + vue_plugin, + } + } + } + }, + cmd = ${ + if isList cfg.lsp.package + then expToLua cfg.lsp.package + else ''{"${cfg.lsp.package}/bin/vtsls", "--stdio"}'' + }, + }) + + vim.lsp.config('vue_ls', { + cmd = {"${getExe pkgs.vue-language-server}", "--stdio"} + }) + + vim.lsp.enable({'vtsls', 'vue_ls'}) + ''; + }; + # Here for backwards compatibility. Still consider tsserver a valid # configuration in the enum, but assert if it's set to *properly* # redirect the user to the correct server. diff --git a/npins/sources.json b/npins/sources.json index b94cd8e0..92c25206 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -1860,9 +1860,9 @@ }, "branch": "master", "submodules": false, - "revision": "4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe", - "url": "https://github.com/neovim/nvim-lspconfig/archive/4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe.tar.gz", - "hash": "1lssglccyxlzkypklr4cwz20zik0qwnv514hp06722vcrxs32pzw" + "revision": "3db16ceeea947517f0dc1404c24dcb5ab0c91d26", + "url": "https://github.com/neovim/nvim-lspconfig/archive/3db16ceeea947517f0dc1404c24dcb5ab0c91d26.tar.gz", + "hash": "0gam1rxqkxksayblhj1i7jkh4sqjp6lpvyb1psmrhkryj6967ir2" }, "nvim-metals": { "type": "Git",