Browse Source

Add tailwindcss lsp support (#205)

Nawfal bin Mohmad Rouyan 4 years ago
parent
commit
c2a937b622
3 changed files with 25 additions and 0 deletions
  1. 1 0
      init.lua
  2. 21 0
      lua/lsp/tailwindcss-ls.lua
  3. 3 0
      lua/nv-globals.lua

+ 1 - 0
init.lua

@@ -66,6 +66,7 @@ require('lsp.efm-general-ls')
 require('lsp.virtual_text')
 require('lsp.virtual_text')
 require('lsp.latex-ls')
 require('lsp.latex-ls')
 require('lsp.svelte-ls')
 require('lsp.svelte-ls')
+require('lsp.tailwindcss-ls')
 
 
 -- vim.lsp.callbacks["textDocument/publishDiagnostics"] = function() end
 -- vim.lsp.callbacks["textDocument/publishDiagnostics"] = function() end
 -- vim.lsp.handlers["textDocument/publishDiagnostics"] = nil
 -- vim.lsp.handlers["textDocument/publishDiagnostics"] = nil

+ 21 - 0
lua/lsp/tailwindcss-ls.lua

@@ -0,0 +1,21 @@
+local lspconfig = require 'lspconfig'
+local configs = require 'lspconfig/configs'
+
+-- Check if tailwindls server already defined.
+if not lspconfig.tailwindls then configs['tailwindls'] = {default_config = {}} end
+
+lspconfig.tailwindls.setup {
+    cmd = {
+        "node", DATA_PATH .. "/lspinstall/tailwindcss/tailwindcss-intellisense/extension/dist/server/index.js",
+        "--stdio"
+    },
+    filetypes = O.tailwindls.filetypes,
+    root_dir = require('lspconfig/util').root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"),
+    handlers = {
+        ["tailwindcss/getConfiguration"] = function(_, _, params, _, bufnr, _)
+            -- tailwindcss lang server waits for this repsonse before providing hover
+            vim.lsp.buf_notify(bufnr, "tailwindcss/getConfigurationResponse", {_id = params._id})
+        end
+    },
+    on_attach = require'lsp'.common_on_attach
+}

+ 3 - 0
lua/nv-globals.lua

@@ -46,6 +46,9 @@ O = {
         formatter = '',
         formatter = '',
         autoformat = false,
         autoformat = false,
         diagnostics = {virtual_text = true, signs = true, underline = true}
         diagnostics = {virtual_text = true, signs = true, underline = true}
+    },
+    tailwindls = {
+        filetypes = {'html', 'css', 'scss', 'javascript', 'javascriptreact', 'typescript', 'typescriptreact'}
     }
     }
     -- css = {formatter = '', autoformat = false, virtual_text = true},
     -- css = {formatter = '', autoformat = false, virtual_text = true},
     -- json = {formatter = '', autoformat = false, virtual_text = true}
     -- json = {formatter = '', autoformat = false, virtual_text = true}