Skip to content

feat(tsserver plugins): Allow for path in tsserver_plugins#322

Open
Parsifa1 wants to merge 3 commits intopmizio:masterfrom
Parsifa1:master
Open

feat(tsserver plugins): Allow for path in tsserver_plugins#322
Parsifa1 wants to merge 3 commits intopmizio:masterfrom
Parsifa1:master

Conversation

@Parsifa1
Copy link

@Parsifa1 Parsifa1 commented Jan 21, 2025

maybe closed #287

what i did

add a another way to add tsserver_plugins:

{
	name = "xxx",
	path = "xxx",
}

and can be mixed with string.

example:

local mason_path = vim.fn.stdpath "data" .. "/mason/packages/"
local ft = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue", "markdown.mdx" }

return {
    "pmizio/typescript-tools.nvim",
    ft = ft,
    dependencies = "nvim-lua/plenary.nvim",
    opts = {
        filetypes = ft,
        settings = {
            tsserver_plugins = {
                "@vue/typescript-plugin",        
                {
                    name = "@mdxjs/typescript-plugin",
                    path = mason_path .. "mdx-analyzer" .. "/node_modules/@mdx/language-server",
                },
            },
        },
    },
}

@Parsifa1 Parsifa1 changed the title feat(tsserver_plugins): Allow for path in tsserver_plugins feat(tsserver plugins): Allow for path in tsserver_plugins Jan 21, 2025
@Parsifa1 Parsifa1 force-pushed the master branch 2 times, most recently from fb30080 to 706d77d Compare January 21, 2025 11:54
@Parsifa1
Copy link
Author

ci failed due to codelen not from this pr :X

@wvffle
Copy link

wvffle commented Jan 23, 2025

could we get this merged? It is critical for NixOS users.

@SafariKnight
Copy link

Shouldn't there also be a way to specify specific languages/filetypes for each plugin?

Like the lspconfig docs include this to enable the vue plugins for ts_ls

  init_options = {
    plugins = {
      {
        name = "@vue/typescript-plugin",
        location = "/usr/local/lib/node_modules/@vue/typescript-plugin",
        languages = {"javascript", "typescript", "vue"},
      },
    },
  },

@Parsifa1
Copy link
Author

you are right, this is way more better.

and i think it should be added into doc, some people like me didn't know we can even did it like this🥲

@Parsifa1 Parsifa1 closed this Jan 24, 2025
@wvffle
Copy link

wvffle commented Jan 24, 2025

@Parsifa1 This PR seems to be valid, what's the reason for closing? I think that the project would benefit from it even if the same things can be configured through lspconfig.

@Parsifa1
Copy link
Author

Parsifa1 commented Jan 24, 2025

@wvffle I misunderstood what he meant. I thought TypeScript-tools already had the init_options function, but I realized it now. I will reopen it

@Parsifa1 Parsifa1 reopened this Jan 24, 2025
@fzhnf
Copy link

fzhnf commented Mar 5, 2025

It's been over a month, but this feature still hasn’t been merged. Just wanted to point out that this is really useful for nvm users—they wouldn’t have to depend on a specific npm version and could just install plugins anywhere (e.g., using Mason for the Vue plugin).

I’d rather not keep reinstalling global packages just for updating latest npm or change project directory.

Just wanted to share my thoughts—hope this feature available soon!

@wvffle
Copy link

wvffle commented May 2, 2025

I've been daily driving this PR since February and it works fine. Could we get this merged?

@Producdevity
Copy link

Is there a reason this isn't getting merged? If you point out the issues, we can work on it @pmizio

@wvffle
Copy link

wvffle commented May 29, 2025

It seems like @KostkaBrukowa is responsible for maintaining this repository.

Could we get this merged?

@Parsifa1
Copy link
Author

Parsifa1 commented Sep 2, 2025

rebased with newest commit :)

@Parsifa1 Parsifa1 force-pushed the master branch 2 times, most recently from d2afab8 to bcc49c0 Compare September 2, 2025 06:56
@Parsifa1
Copy link
Author

Parsifa1 commented Sep 2, 2025

add new filetype option:

local mason_path = vim.fn.stdpath "data" .. "/mason/packages/"
opts = {
        settings = {
            tsserver_plugins = {
                {
                    name = "@vue/typescript-plugin",
                    path = mason_path .. "vue-language-server" .. "/node_modules/@vue/language-server",
                    filetypes = { "vue", "typescript" },
                },
                {
                    name = "@mdxjs/typescript-plugin",
                    path = mason_path .. "mdx-analyzer" .. "/node_modules/@mdx/language-server",
                },
            },
        },
    },

you must set all possiable ft in the list, otherwise the lsp won't init properly.
if filetype == nil, it will load everytime.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow for path in tsserver_plugins

5 participants