diff --git a/home/modules/nvim/config/after/plugin/lspconfig.lua b/home/modules/nvim/config/after/plugin/lspconfig.lua index edababf..d589b70 100644 --- a/home/modules/nvim/config/after/plugin/lspconfig.lua +++ b/home/modules/nvim/config/after/plugin/lspconfig.lua @@ -96,43 +96,42 @@ local servers = { }, tailwindcss = {}, ts_ls = {}, - -- vtsls = { - -- maxTsServerMemory = 16384, - -- filetypes = { - -- "javascript", - -- "javascriptreact", - -- "javascript.jsx", - -- "typescript", - -- "typescriptreact", - -- "typescript.tsx", - -- }, - -- settings = { - -- complete_function_calls = true, - -- vtsls = { - -- enableMoveToFileCodeAction = true, - -- autoUseWorkspaceTsdk = true, - -- experimental = { - -- completion = { - -- enableServerSideFuzzyMatch = true, - -- }, - -- }, - -- }, - -- typescript = { - -- updateImportsOnFileMove = { enabled = "always" }, - -- suggest = { - -- completeFunctionCalls = true, - -- }, - -- inlayHints = { - -- enumMemberValues = { enabled = true }, - -- functionLikeReturnTypes = { enabled = true }, - -- parameterNames = { enabled = "literals" }, - -- parameterTypes = { enabled = true }, - -- propertyDeclarationTypes = { enabled = true }, - -- variableTypes = { enabled = false }, - -- }, - -- }, - -- }, - -- }, + vtsls = { + filetypes = { + "javascript", + "javascriptreact", + "javascript.jsx", + "typescript", + "typescriptreact", + "typescript.tsx", + }, + settings = { + vtsls = { + enableMoveToFileCodeAction = true, + autoUseWorkspaceTsdk = true, + experimental = { + completion = { + enableServerSideFuzzyMatch = true, + }, + }, + }, + typescript = { + updateImportsOnFileMove = { enabled = "always" }, + tsserver = { maxTsServerMemory = 16384 }, + suggest = { + completeFunctionCalls = true, + }, + inlayHints = { + enumMemberValues = { enabled = true }, + functionLikeReturnTypes = { enabled = true }, + parameterNames = { enabled = "literals" }, + parameterTypes = { enabled = true }, + propertyDeclarationTypes = { enabled = true }, + variableTypes = { enabled = false }, + }, + }, + }, + }, yamlls = { settings = { yaml = { @@ -149,6 +148,9 @@ local servers = { }, } +local typescript_server = require("nixCatsUtils").getCatOrDefault("typescriptServer", "ts_ls") +servers[typescript_server == "vtsls" and "ts_ls" or "vtsls"] = nil + for server, config in pairs(servers) do config.capabilities = capabilities vim.lsp.config(server, config) diff --git a/home/modules/nvim/config/flake.nix b/home/modules/nvim/config/flake.nix index 4da3f87..c22f698 100644 --- a/home/modules/nvim/config/flake.nix +++ b/home/modules/nvim/config/flake.nix @@ -97,7 +97,6 @@ nixd nixfmt prettier - typescript-language-server ormolu prettierd rust-analyzer @@ -107,9 +106,8 @@ stylua tree-sitter tailwindcss-language-server - typescript-language-server + (if (categories.typescriptServer or "ts_ls") == "vtsls" then vtsls else typescript-language-server) vscode-langservers-extracted - vtsls yaml-language-server yamllint ]; @@ -214,6 +212,7 @@ general = true; github = false; colorscheme = "zenwritten"; + typescriptServer = "ts_ls"; }; }; }; diff --git a/home/modules/nvim/default.nix b/home/modules/nvim/default.nix index ec8eb26..c98470e 100644 --- a/home/modules/nvim/default.nix +++ b/home/modules/nvim/default.nix @@ -13,9 +13,18 @@ in { imports = [ inputs.nvim.homeModules.default ]; - options.nvim.colorscheme = lib.mkOption { - type = lib.types.enum (lib.attrNames themes); - default = "zenwritten"; + options.nvim = { + colorscheme = lib.mkOption { + type = lib.types.enum (lib.attrNames themes); + default = "zenwritten"; + }; + typescriptServer = lib.mkOption { + default = "ts_ls"; + type = lib.types.enum [ + "ts_ls" + "vtsls" + ]; + }; }; config = lib.mkIf config.nvim.enable { @@ -23,6 +32,7 @@ in categories = { colorscheme = config.nvim.colorscheme; github = config.git.github.enable; + inherit (config.nvim) typescriptServer; }; };