Power Profiles
This commit is contained in:
@@ -1,162 +1,24 @@
|
||||
local function insert_package_json(root_files, field, fname)
|
||||
local pkg_path = vim.fs.find("package.json", { upward = true, path = fname })[1]
|
||||
if pkg_path then
|
||||
local ok, content = pcall(vim.fn.readfile, pkg_path)
|
||||
if ok then
|
||||
local json = table.concat(content, "\n")
|
||||
if string.find(json, '"' .. field .. '"') then
|
||||
table.insert(root_files, pkg_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
return root_files
|
||||
end
|
||||
|
||||
local function root_markers_with_field(root_files, files, field, fname)
|
||||
for _, f in ipairs(files) do
|
||||
local path = vim.fs.find(f, { upward = true, path = fname })[1]
|
||||
if path then
|
||||
local ok, content = pcall(vim.fn.readfile, path)
|
||||
if ok then
|
||||
local text = table.concat(content, "\n")
|
||||
if string.find(text, field) then
|
||||
table.insert(root_files, path)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return root_files
|
||||
end
|
||||
---@brief
|
||||
--- https://github.com/tailwindlabs/tailwindcss-intellisense
|
||||
---
|
||||
--- Tailwind CSS Language Server can be installed via npm:
|
||||
---
|
||||
--- npm install -g @tailwindcss/language-server
|
||||
---@type vim.lsp.Config
|
||||
return {
|
||||
cmd = { "tailwindcss-language-server", "--stdio" },
|
||||
-- filetypes copied and adjusted from tailwindcss-intellisense
|
||||
filetypes = {
|
||||
-- html
|
||||
"aspnetcorerazor",
|
||||
"astro",
|
||||
"astro-markdown",
|
||||
"blade",
|
||||
"clojure",
|
||||
"django-html",
|
||||
"htmldjango",
|
||||
"edge",
|
||||
"eelixir", -- vim ft
|
||||
"elixir",
|
||||
"ejs",
|
||||
"erb",
|
||||
"eruby", -- vim ft
|
||||
"gohtml",
|
||||
"gohtmltmpl",
|
||||
"haml",
|
||||
"handlebars",
|
||||
"hbs",
|
||||
"html",
|
||||
"htmlangular",
|
||||
"html-eex",
|
||||
"heex",
|
||||
"jade",
|
||||
"leaf",
|
||||
"liquid",
|
||||
"markdown",
|
||||
"mdx",
|
||||
"mustache",
|
||||
"njk",
|
||||
"nunjucks",
|
||||
"php",
|
||||
"razor",
|
||||
"slim",
|
||||
"twig",
|
||||
-- css
|
||||
"css",
|
||||
"less",
|
||||
"postcss",
|
||||
"sass",
|
||||
"scss",
|
||||
"stylus",
|
||||
"sugarss",
|
||||
-- js
|
||||
"javascript",
|
||||
"javascriptreact",
|
||||
"reason",
|
||||
"rescript",
|
||||
"typescript",
|
||||
"typescriptreact",
|
||||
-- mixed
|
||||
"vue",
|
||||
"svelte",
|
||||
"templ",
|
||||
},
|
||||
settings = {
|
||||
tailwindCSS = {
|
||||
validate = true,
|
||||
lint = {
|
||||
cssConflict = "warning",
|
||||
invalidApply = "error",
|
||||
invalidScreen = "error",
|
||||
invalidVariant = "error",
|
||||
invalidConfigPath = "error",
|
||||
invalidTailwindDirective = "error",
|
||||
recommendedVariantOrder = "warning",
|
||||
},
|
||||
classAttributes = {
|
||||
"class",
|
||||
"className",
|
||||
"class:list",
|
||||
"classList",
|
||||
"ngClass",
|
||||
},
|
||||
includeLanguages = {
|
||||
eelixir = "html-eex",
|
||||
elixir = "phoenix-heex",
|
||||
eruby = "erb",
|
||||
heex = "phoenix-heex",
|
||||
htmlangular = "html",
|
||||
templ = "html",
|
||||
},
|
||||
},
|
||||
},
|
||||
before_init = function(_, config)
|
||||
if not config.settings then
|
||||
config.settings = {}
|
||||
end
|
||||
if not config.settings.editor then
|
||||
config.settings.editor = {}
|
||||
end
|
||||
if not config.settings.editor.tabSize then
|
||||
config.settings.editor.tabSize = vim.lsp.util.get_effective_tabstop()
|
||||
end
|
||||
end,
|
||||
workspace_required = true,
|
||||
root_dir = function(bufnr, on_dir)
|
||||
local root_files = {
|
||||
-- Generic
|
||||
"tailwind.config.js",
|
||||
"tailwind.config.cjs",
|
||||
"tailwind.config.mjs",
|
||||
"tailwind.config.ts",
|
||||
"postcss.config.js",
|
||||
"postcss.config.cjs",
|
||||
"postcss.config.mjs",
|
||||
"postcss.config.ts",
|
||||
-- Django
|
||||
"theme/static_src/tailwind.config.js",
|
||||
"theme/static_src/tailwind.config.cjs",
|
||||
"theme/static_src/tailwind.config.mjs",
|
||||
"theme/static_src/tailwind.config.ts",
|
||||
"theme/static_src/postcss.config.js",
|
||||
-- Fallback for tailwind v4, where tailwind.config.* is not required anymore
|
||||
".git",
|
||||
}
|
||||
local fname = vim.api.nvim_buf_get_name(bufnr)
|
||||
root_files = insert_package_json(root_files, "tailwindcss", fname)
|
||||
root_files = root_markers_with_field(root_files, { "mix.lock", "Gemfile.lock" }, "tailwind", fname)
|
||||
on_dir(vim.fs.dirname(vim.fs.find(root_files, { path = fname, upward = true })[1]))
|
||||
end,
|
||||
cmd = { "tailwindcss-language-server", "--stdio" },
|
||||
filetypes = {
|
||||
"html", "css", "scss", "javascript", "javascriptreact",
|
||||
"typescript", "typescriptreact", "svelte", "vue", "astro",
|
||||
},
|
||||
root_markers = {
|
||||
"tailwind.config.js", "tailwind.config.cjs", "tailwind.config.ts",
|
||||
"postcss.config.js", "package.json", ".git",
|
||||
},
|
||||
settings = {
|
||||
tailwindCSS = {
|
||||
validate = true,
|
||||
classAttributes = { "class", "className", "classList", "ngClass" },
|
||||
-- for cn()/clsx()/cva() wrappers:
|
||||
experimental = {
|
||||
classRegex = {
|
||||
{ "cva%(([^)]*)%)", "[\"'`]([^\"'`]*).*?[\"'`]" },
|
||||
{ "cn%(([^)]*)%)", "[\"'`]([^\"'`]*).*?[\"'`]" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
vim.lsp.enable("ts_ls")
|
||||
vim.lsp.enable("tailwindcss")
|
||||
vim.lsp.enable("gopls")
|
||||
-- vim.lsp.enable("tailwindcss")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user