local util = require 'lspconfig.util' local bin_name = 'tailwindcss-language-server' local cmd = { bin_name, '--stdio' } if vim.fn.has 'win32' == 1 then cmd = { 'cmd.exe', '/C', bin_name, '--stdio' } end return { default_config = { cmd = cmd, -- filetypes copied and adjusted from tailwindcss-intellisense filetypes = { -- html 'aspnetcorerazor', 'astro', 'astro-markdown', 'blade', 'django-html', 'htmldjango', 'edge', 'eelixir', -- vim ft 'ejs', 'erb', 'eruby', -- vim ft 'gohtml', 'haml', 'handlebars', 'hbs', 'html', -- 'HTML (Eex)', -- 'HTML (EEx)', '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', }, init_options = { userLanguages = { eelixir = 'html-eex', eruby = 'erb', }, }, settings = { tailwindCSS = { validate = true, lint = { cssConflict = 'warning', invalidApply = 'error', invalidScreen = 'error', invalidVariant = 'error', invalidConfigPath = 'error', invalidTailwindDirective = 'error', recommendedVariantOrder = 'warning', }, classAttributes = { 'class', 'className', 'classList', 'ngClass', }, }, }, on_new_config = function(new_config) if not new_config.settings then new_config.settings = {} end if not new_config.settings.editor then new_config.settings.editor = {} end if not new_config.settings.editor.tabSize then -- set tab size for hover new_config.settings.editor.tabSize = vim.lsp.util.get_effective_tabstop() end end, root_dir = function(fname) return util.root_pattern('tailwind.config.js', 'tailwind.config.ts')(fname) or util.root_pattern('postcss.config.js', 'postcss.config.ts')(fname) or util.find_package_json_ancestor(fname) or util.find_node_modules_ancestor(fname) or util.find_git_ancestor(fname) end, }, docs = { description = [[ https://github.com/tailwindlabs/tailwindcss-intellisense Tailwind CSS Language Server can be installed via npm: ```sh npm install -g @tailwindcss/language-server ``` ]], default_config = { root_dir = [[root_pattern('tailwind.config.js', 'tailwind.config.ts', 'postcss.config.js', 'postcss.config.ts', 'package.json', 'node_modules', '.git')]], }, }, }