diff --git a/lua/lazyvim/plugins/extras/lang/typescript.lua b/lua/lazyvim/plugins/extras/lang/typescript.lua index f9e841a8..e4fbd8f0 100644 --- a/lua/lazyvim/plugins/extras/lang/typescript.lua +++ b/lua/lazyvim/plugins/extras/lang/typescript.lua @@ -119,12 +119,6 @@ return { -- copy typescript settings to javascript opts.settings.javascript = vim.tbl_deep_extend("force", {}, opts.settings.typescript, opts.settings.javascript or {}) - local plugins = vim.tbl_get(opts.settings, "vtsls", "tsserver", "globalPlugins") - -- allow plugins to have a key for proper merging - -- remove the key here - if plugins then - opts.settings.vtsls.tsserver.globalPlugins = vim.tbl_values(plugins) - end end, }, }, diff --git a/lua/lazyvim/plugins/extras/lang/vue.lua b/lua/lazyvim/plugins/extras/lang/vue.lua index dfc1d2f7..edeead89 100644 --- a/lua/lazyvim/plugins/extras/lang/vue.lua +++ b/lua/lazyvim/plugins/extras/lang/vue.lua @@ -27,20 +27,6 @@ return { -- Volar 2.0 has discontinued their "take over mode" which in previous version provided support for typescript in vue files. -- The new approach to get typescript support involves using the typescript language server along side volar. vtsls = { - settings = { - vtsls = { - tsserver = { - globalPlugins = { - -- Use typescript language server along with vue typescript plugin - vue = { - name = "@vue/typescript-plugin", - location = vue_typescript_plugin, - languages = { "vue" }, - }, - }, - }, - }, - }, filetypes = { "javascript", "javascriptreact", @@ -52,6 +38,12 @@ return { }, }, }) + + LazyVim.extend(opts.servers.vtsls, "settings.vtsls.tsserver.globalPlugins", { + name = "@vue/typescript-plugin", + location = vue_typescript_plugin, + languages = { "vue" }, + }) end, }, } diff --git a/lua/lazyvim/util/init.lua b/lua/lazyvim/util/init.lua index c36ef101..1c677622 100644 --- a/lua/lazyvim/util/init.lua +++ b/lua/lazyvim/util/init.lua @@ -72,6 +72,19 @@ function M.on_very_lazy(fn) }) end +function M.extend(t, key, value) + local keys = vim.split(key, ".", { plain = true }) + for i = 1, #keys do + local k = keys[i] + t[k] = t[k] or {} + if type(t) ~= "table" then + return + end + t = t[k] + end + t[#t + 1] = value +end + ---@param name string function M.opts(name) local plugin = require("lazy.core.config").spec.plugins[name]