mirror of
https://github.com/LazyVim/LazyVim.git
synced 2026-07-25 14:01:06 +00:00
feat(extras): add typescript vscode extra
This commit is contained in:
parent
c901640167
commit
6f404064e0
1 changed files with 191 additions and 0 deletions
191
lua/lazyvim/plugins/extras/lang/typescript-vscode.lua
Normal file
191
lua/lazyvim/plugins/extras/lang/typescript-vscode.lua
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
-- https://github.com/neovim/neovim/issues/21749#issuecomment-1378720864
|
||||
-- Fix loading of json5 for "Joakker/lua-json5"
|
||||
-- table.insert(vim._so_trails, "/?.dylib")
|
||||
|
||||
return {
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
if type(opts.ensure_installed) == "table" then
|
||||
vim.list_extend(opts.ensure_installed, { "typescript", "tsx", "embedded_template" })
|
||||
end
|
||||
end,
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.servers, {
|
||||
-- ---@type lspconfig.options.vtsls
|
||||
vtsls = {
|
||||
settings = {
|
||||
vtsls = {
|
||||
experimental = {
|
||||
completion = {
|
||||
enableServerSideFuzzyMatch = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
javascript = {
|
||||
format = {
|
||||
indentSize = vim.o.shiftwidth,
|
||||
convertTabsToSpaces = vim.o.expandtab,
|
||||
tabSize = vim.o.tabstop,
|
||||
},
|
||||
-- otherwise it would ask every time if you want to update imports, which is a bit annoying
|
||||
updateImportsOnFileMove = {
|
||||
enabled = "always",
|
||||
},
|
||||
},
|
||||
typescript = {
|
||||
format = {
|
||||
indentSize = vim.o.shiftwidth,
|
||||
convertTabsToSpaces = vim.o.expandtab,
|
||||
tabSize = vim.o.tabstop,
|
||||
},
|
||||
inlayHints = {
|
||||
parameterNames = { enabled = "literals" },
|
||||
parameterTypes = { enabled = true },
|
||||
variableTypes = { enabled = true },
|
||||
propertyDeclarationTypes = { enabled = true },
|
||||
functionLikeReturnTypes = { enabled = true },
|
||||
enumMemberValues = { enabled = true },
|
||||
},
|
||||
updateImportsOnFileMove = {
|
||||
enabled = "always",
|
||||
},
|
||||
-- cool feature, but increases ram usage a lot
|
||||
-- referencesCodeLens = {
|
||||
-- enabled = true,
|
||||
-- showOnAllFunctions = true,
|
||||
-- },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
dependencies = {
|
||||
"yioneko/nvim-vtsls",
|
||||
},
|
||||
},
|
||||
{
|
||||
"mfussenegger/nvim-dap",
|
||||
optional = true,
|
||||
dependencies = {
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"vtsls",
|
||||
"js-debug-adapter",
|
||||
"chrome-debug-adapter",
|
||||
})
|
||||
end,
|
||||
},
|
||||
},
|
||||
opts = function()
|
||||
local languages = { "typescript", "javascript", "typescriptreact", "javascriptreact" }
|
||||
|
||||
local dap = require("dap")
|
||||
|
||||
dap.adapters["pwa-node"] = {
|
||||
type = "server",
|
||||
host = "localhost",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = "js-debug-adapter",
|
||||
args = { "${port}" },
|
||||
},
|
||||
}
|
||||
|
||||
dap.adapters["pwa-chrome"] = {
|
||||
type = "server",
|
||||
host = "localhost",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = "js-debug-adapter",
|
||||
args = { "${port}" },
|
||||
},
|
||||
}
|
||||
|
||||
-- pwa-chrome isn't working fully.
|
||||
-- https://stackoverflow.com/a/73427518/5930949
|
||||
dap.adapters["chrome"] = {
|
||||
type = "executable",
|
||||
command = "chrome-debug-adapter",
|
||||
-- host = "localhost",
|
||||
-- port = "${port}",
|
||||
-- executable = {
|
||||
-- command = "chrome-debug-adapter",
|
||||
-- -- args = { "${port}" },
|
||||
-- },
|
||||
}
|
||||
|
||||
require("dap.ext.vscode").load_launchjs(nil, {
|
||||
["pwa-node"] = languages,
|
||||
["node"] = languages,
|
||||
["chrome"] = languages,
|
||||
["pwa-chrome"] = languages,
|
||||
})
|
||||
|
||||
for _, language in ipairs(languages) do
|
||||
if dap.configurations[language] == nil then
|
||||
dap.configurations[language] = {}
|
||||
end
|
||||
|
||||
if language:find("javascript") then
|
||||
vim.list_extend(dap.configurations[language], {
|
||||
{
|
||||
type = "pwa-node",
|
||||
request = "launch",
|
||||
name = "Launch file (node)",
|
||||
program = "${file}",
|
||||
cwd = "${workspaceFolder}",
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
if language:find("typescript") then
|
||||
vim.list_extend(dap.configurations[language], {
|
||||
{
|
||||
type = "pwa-node",
|
||||
request = "launch",
|
||||
name = "Launch file (tsx)",
|
||||
cwd = "${workspaceFolder}",
|
||||
-- NOTE: you would need to have tsx installed globally (`npm i tsx -g`)
|
||||
runtimeExecutable = "tsx",
|
||||
args = { "${file}" },
|
||||
sourceMaps = true,
|
||||
protocol = "inspector",
|
||||
skipFiles = { "<node_internals>/**", "node_modules/**" },
|
||||
resolveSourceMapLocations = {
|
||||
"${workspaceFolder}/**",
|
||||
"!**/node_modules/**",
|
||||
},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
vim.list_extend(dap.configurations[language], {
|
||||
{
|
||||
type = "pwa-node",
|
||||
request = "attach",
|
||||
name = "Attach to process",
|
||||
processId = require("dap.utils").pick_process,
|
||||
cwd = "${workspaceFolder}",
|
||||
},
|
||||
})
|
||||
end
|
||||
end,
|
||||
},
|
||||
{
|
||||
-- we need workspace/didRename for renaming to work with vtsls
|
||||
{
|
||||
"antosha417/nvim-lsp-file-operations",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
},
|
||||
opts = {},
|
||||
},
|
||||
},
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue