Custom Tailwind CSS LSP configuration to enable autocompletion for specific variable naming patterns in addition to the default behavior.
Location: lua/plugins/nvim-lspconfig.lua (Create one if you don’t have it)
The Tailwind CSS language server will provide autocompletion for class names in the following contexts:
cn() Functioncn("flex items-center");Common shadcn/ui pattern for conditional class names.
ClassNamesconst buttonClassNames = "";const cardClassNames = "";const anyNameClassNames = "";Stylesconst buttonStyles = "";const modalStyles = "";const anyNameStyles = "";_CLASSNAMESconst BUTTON_CLASSNAMES = "";const MODAL_CLASSNAMES = "";const ANY_NAME_CLASSNAMES = "";_STYLESconst BUTTON_STYLES = "";const MODAL_STYLES = "";const ANY_NAME_STYLES = "";The configuration uses Tailwind CSS’s experimental.classRegex feature to define custom patterns:
experimental = { classRegex = { { "cn\\(([^)]*)\\)", "['\"`]([^'\"`]*)['\"`]" }, { "ClassNames\\s*=\\s*[\"'`]([^\"'`]*)[\"'`]" }, { "Styles\\s*=\\s*[\"'`]([^\"'`]*)[\"'`]" }, { "_CLASSNAMES\\s*=\\s*[\"'`]([^\"'`]*)[\"'`]" }, { "_STYLES\\s*=\\s*[\"'`]([^\"'`]*)[\"'`]" }, },},After modifying the configuration:
Restart the LSP server or Neovim
:LspRestart tailwindcssTo add additional patterns, edit lua/plugins/nvim-lspconfig.lua and add a new entry to the classRegex array:
{ "YourPattern\\s*=\\s*[\"'`]([^\"'`]*)[\"'`]" },experimental.classRegex