Add tailwind and ts lsps

This commit is contained in:
Martin Larsson 2025-07-19 12:42:40 +02:00
parent 80961aa2a3
commit e9f70800ea
2 changed files with 110 additions and 0 deletions

View file

@ -0,0 +1,36 @@
return {
cmd = {
"tailwindcss-language-server",
"--stdio"
},
filetypes = {
"html",
"css",
"javascript",
"javascriptreact",
"typescript",
"typescriptreact"
},
root_markers = {
"tailwind.config.js",
"tailwind.config.ts",
"vite.config.ts",
"package.json",
".eslintrc.js",
".gitignore",
".prettierrc",
"tsconfig.json",
},
settings = {
tailwindCSS = {
validate = true,
classAttributes = {
"class",
"className",
"class:list",
"classList",
"ngClass",
},
},
},
}

View file

@ -0,0 +1,74 @@
return {
init_options = { hostInfo = "neovim" },
cmd = { "typescript-language-server", "--stdio" },
filetypes = {
"javascript",
"javascriptreact",
"javascript.jsx",
"typescript",
"typescriptreact",
"typescript.tsx",
},
root_markers = {
"tsconfig.json",
"jsconfig.json",
"package.json",
".git"
},
handlers = {
["_typescript.rename"] = function(_, result, ctx)
local client = assert(vim.lsp.get_client_by_id(ctx.client_id))
vim.lsp.util.show_document({
uri = result.textDocument.uri,
range = {
start = result.position,
["end"] = result.position,
},
}, client.offset_encoding)
vim.lsp.buf.rename()
return vim.NIL
end,
},
commands = {
["editor.action.showReferences"] = function(command, ctx)
local client = assert(vim.lsp.get_client_by_id(ctx.client_id))
local file_uri, position, references = unpack(command.arguments)
local quickfix_items = vim.lsp.util.locations_to_items(references, client.offset_encoding)
vim.fn.setqflist({}, ' ', {
title = command.title,
items = quickfix_items,
context = {
command = command,
bufnr = ctx.bufnr,
},
})
vim.lsp.util.show_document({
uri = file_uri,
range = {
start = position,
["end"] = position,
},
}, client.offset_encoding)
vim.cmd('botright copen')
end,
},
on_attach = function(client, bufnr)
-- ts_ls provides `source.*` code actions that apply to the whole file. These only appear in
-- `vim.lsp.buf.code_action()` if specified in `context.only`.
vim.api.nvim_buf_create_user_command(bufnr, "LspTypescriptSourceAction", function()
local source_actions = vim.tbl_filter(function(action)
return vim.startswith(action, "source.")
end, client.server_capabilities.codeActionProvider.codeActionKinds)
vim.lsp.buf.code_action({
context = {
only = source_actions,
diagnostics = {}
},
})
end, {})
end,
}