themaxmarchuk / tailwindcss-colors.nvim

Highlights Tailwind CSS class names when @tailwindcss/language-server is connected
MIT License
54 stars 1 forks source link

Error in setting plugin in buf_attach #2

Open danymat opened 2 years ago

danymat commented 2 years ago

Hello, I tried out your plugin and it works wonderfully !! I get this error though:

tailwindcss-colors: can't find tailwindcss lsp client at all (you sure it's loaded?)

This is how I require it:

local on_attach = function(_, bufnr)
    local function buf_set_keymap(...)
        vim.api.nvim_buf_set_keymap(bufnr, ...)
    end
    local opts = { noremap = true, silent = true }
    -- See `:help vim.lsp.*` for documentation on any of the below functions
    buf_set_keymap("n", "gd", "<Cmd>lua vim.lsp.buf.definition()<CR>", opts)
    buf_set_keymap("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>", opts)
    buf_set_keymap("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
    buf_set_keymap("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
    buf_set_keymap("n", "<leader>r", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
    buf_set_keymap("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
    buf_set_keymap("n", "<C-b>", "<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>", opts)
    buf_set_keymap("n", "<C-n>", "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>", opts)
    buf_set_keymap("n", "<Leader>fs", ":lua vim.lsp.buf.formatting_sync()<CR>", opts)

    require("lsp_signature").on_attach({
        bind = true,
        hint_prefix = "🧸 ",
        handler_opts = { border = "rounded" },
    }, bufnr)

    require("tailwindcss-colors").buf_attach(bufnr)
end
oscariquelme01 commented 1 year ago

Hello! the problem is you are running the buf_attach function for every client that attaches to the buffer, what you wanna do is add a conditional where you only run the buf_attach function when the client.name is 'tailwindcss'

local on_attach = function(client, bufnr)
    local function buf_set_keymap(...)
        vim.api.nvim_buf_set_keymap(bufnr, ...)
    end
    local opts = { noremap = true, silent = true }
    -- See `:help vim.lsp.*` for documentation on any of the below functions
    buf_set_keymap("n", "gd", "<Cmd>lua vim.lsp.buf.definition()<CR>", opts)
    buf_set_keymap("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>", opts)
    buf_set_keymap("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
    buf_set_keymap("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
    buf_set_keymap("n", "<leader>r", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
    buf_set_keymap("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
    buf_set_keymap("n", "<C-b>", "<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>", opts)
    buf_set_keymap("n", "<C-n>", "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>", opts)
    buf_set_keymap("n", "<Leader>fs", ":lua vim.lsp.buf.formatting_sync()<CR>", opts)

    require("lsp_signature").on_attach({
        bind = true,
        hint_prefix = "🧸 ",
        handler_opts = { border = "rounded" },
    }, bufnr)

      if client.name == 'tailwindcss' then 
          require("tailwindcss-colors").buf_attach(bufnr)
      end
end

That should do it