diff --git a/lua/plugins/blink.lua b/lua/plugins/blink.lua index 14f55efd..d4161b79 100644 --- a/lua/plugins/blink.lua +++ b/lua/plugins/blink.lua @@ -21,16 +21,40 @@ return { -- `friendly-snippets` contains a variety of premade snippets. -- See the README about individual language/framework/plugin snippets: -- https://github.com/rafamadriz/friendly-snippets - -- { - -- 'rafamadriz/friendly-snippets', - -- config = function() - -- require('luasnip.loaders.from_vscode').lazy_load() - -- end, - -- }, + { + 'rafamadriz/friendly-snippets', + config = function() + require('luasnip.loaders.from_vscode').lazy_load() + end, + }, }, opts = {}, }, }, + init = function() + -- set autocommand for blink-menu-sourcename. + vim.api.nvim_create_autocmd('ColorScheme', { + desc = 'set italic to BlinkCmpSource, and try to change fg', + group = vim.api.nvim_create_augroup('ColorReadjust', { clear = true }), + callback = function() + local hl = { + default = true, + italic = true, + } + + -- if the hl-group for the Menu-Selection has reverse property, + -- then don't bother setting fg & bg, because it would be messed up anyway. + if not vim.api.nvim_get_hl(0, { name = 'PmenuSel' }).reverse then + hl.fg = vim.api.nvim_get_hl(0, { name = 'LspCodeLens' }).fg + or vim.api.nvim_get_hl(0, { name = 'BlinkCmpGhostText' }).fg + or vim.api.nvim_get_hl(0, { name = 'NonText' }).fg + end + + vim.api.nvim_set_hl(0, 'BlinkCmpSource', hl) + end, + }) + end, + ---@module 'blink.cmp' ---@type blink.cmp.Config opts = { @@ -56,12 +80,40 @@ return { -- : Toggle signature help -- -- See :h blink-cmp-config-keymap for defining your own keymap - preset = 'default', + -- preset = 'default', + -- + -- I have my own keymaps now + [''] = { 'show_documentation', 'hide_documentation' }, + [''] = { 'hide', 'fallback' }, + [''] = { 'select_and_accept', 'fallback' }, + + [''] = { 'select_prev', 'fallback' }, + [''] = { 'select_next', 'fallback' }, + [''] = { 'select_prev', 'fallback_to_mappings' }, + [''] = { 'show', 'select_next', 'fallback_to_mappings' }, + + [''] = { 'scroll_documentation_up', 'fallback' }, + [''] = { 'scroll_documentation_down', 'fallback' }, + + [''] = { 'snippet_forward', 'fallback_to_mappings' }, + [''] = { 'snippet_backward', 'fallback_to_mappings' }, + + [''] = { 'show_signature', 'hide_signature', 'fallback' }, -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps }, + cmdline = { + keymap = { preset = 'inherit' }, + completion = { menu = { auto_show = true } }, + }, + + term = { + keymap = { preset = 'inherit' }, + completion = { menu = { auto_show = true } }, + }, + appearance = { -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' -- Adjusts spacing to ensure icons are aligned @@ -71,7 +123,30 @@ return { completion = { -- By default, you may press `` to show the documentation. -- Optionally, set `auto_show = true` to show the documentation after a delay. - documentation = { auto_show = false, auto_show_delay_ms = 500 }, + documentation = { auto_show = true, auto_show_delay_ms = 1500 }, + + menu = { + draw = { + columns = { + -- The following two components are from the default config + { 'kind_icon' }, + { 'label', 'label_description', gap = 1 }, + -- Add `source_name` to parse it and get lsp-provider name + { 'source_name' }, + }, + components = { + source_name = { + width = { fill = true }, + text = function(ctx) + -- either get the client_name aka lsp-provider "like lua_ls" + -- or get the source name from blink's list of sources, see below. + return ctx.item.client_name or ctx.source_name + end, + highlight = 'BlinkCmpSource', + }, + }, + }, + }, }, sources = { @@ -87,7 +162,7 @@ return { -- the rust implementation via `'prefer_rust_with_warning'` -- -- See :h blink-cmp-config-fuzzy for more information - fuzzy = { implementation = 'lua' }, + fuzzy = { implementation = 'prefer_rust_with_warning' }, -- Shows a signature help window while you type arguments for a function signature = { enabled = true },