diff options
author | awy <awy@awy.one> | 2025-10-20 20:55:26 +0300 |
---|---|---|
committer | awy <awy@awy.one> | 2025-10-20 20:55:26 +0300 |
commit | 662dafc52b2c8a9426bb2197ab9246a8cda318e4 (patch) | |
tree | f9d1f20e3864360bf941fd6bc02848ed77b037a8 /.config/nvim/lsp/tailwindcss.lua | |
parent | 8131d9f2898b991a2d2c7a2ac601ce9e07cc9c9f (diff) | |
download | hyprdots-662dafc52b2c8a9426bb2197ab9246a8cda318e4.tar.gz |
nvqw
Diffstat (limited to '.config/nvim/lsp/tailwindcss.lua')
-rw-r--r-- | .config/nvim/lsp/tailwindcss.lua | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/.config/nvim/lsp/tailwindcss.lua b/.config/nvim/lsp/tailwindcss.lua new file mode 100644 index 0000000..1608d52 --- /dev/null +++ b/.config/nvim/lsp/tailwindcss.lua @@ -0,0 +1,135 @@ +---@brief +--- https://github.com/tailwindlabs/tailwindcss-intellisense +--- +--- Tailwind CSS Language Server can be installed via npm: +--- +--- npm install -g @tailwindcss/language-server +local util = require 'lspconfig.util' + +---@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 = util.insert_package_json(root_files, 'tailwindcss', fname) + root_files = util.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, +} |