---@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, }