summaryrefslogtreecommitdiff
path: root/lua/blink/cmp/completion/windows/render/tailwind.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/blink/cmp/completion/windows/render/tailwind.lua')
-rw-r--r--lua/blink/cmp/completion/windows/render/tailwind.lua31
1 files changed, 31 insertions, 0 deletions
diff --git a/lua/blink/cmp/completion/windows/render/tailwind.lua b/lua/blink/cmp/completion/windows/render/tailwind.lua
new file mode 100644
index 0000000..0bff6b2
--- /dev/null
+++ b/lua/blink/cmp/completion/windows/render/tailwind.lua
@@ -0,0 +1,31 @@
+local tailwind = {}
+
+local kinds = require('blink.cmp.types').CompletionItemKind
+
+--- @param item blink.cmp.CompletionItem
+--- @return string|nil
+function tailwind.get_hex_color(item)
+ local doc = item.documentation
+ if item.kind ~= kinds.Color or not doc then return end
+ local content = type(doc) == 'string' and doc or doc.value
+ if content and content:match('^#%x%x%x%x%x%x$') then return content end
+end
+
+--- @param item blink.cmp.CompletionItem
+--- @return string?
+function tailwind.get_kind_icon(item)
+ if tailwind.get_hex_color(item) then return '██' end
+end
+
+--- @param ctx blink.cmp.DrawItemContext
+--- @return string|nil
+function tailwind.get_hl(ctx)
+ local hex_color = tailwind.get_hex_color(ctx.item)
+ if not hex_color then return end
+
+ local hl_name = 'HexColor' .. hex_color:sub(2)
+ if #vim.api.nvim_get_hl(0, { name = hl_name }) == 0 then vim.api.nvim_set_hl(0, hl_name, { fg = hex_color }) end
+ return hl_name
+end
+
+return tailwind