1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
return {
{
"saghen/blink.compat",
version = "*",
lazy = true,
opts = {},
},
{
"saghen/blink.cmp",
event = "VeryLazy",
-- optional: provides snippets for the snippet source
dependencies = {
"rafamadriz/friendly-snippets",
"moyiz/blink-emoji.nvim",
"ray-x/cmp-sql",
},
-- use a release tag to download pre-built binaries
version = "1.*",
-- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
-- build = 'cargo build --release',
-- If you use nix, you can build from source using latest nightly rust with:
-- build = 'nix run .#build-plugin',
opts = {
snippets = {
preset = "luasnip", -- Choose LuaSnip as the snippet engine
},
-- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
-- 'super-tab' for mappings similar to vscode (tab to accept)
-- 'enter' for enter to accept
-- 'none' for no mappings
--
-- All presets have the following mappings:
-- C-space: Open menu or open docs if already open
-- C-n/C-p or Up/Down: Select next/previous item
-- C-e: Hide menu
-- C-k: Toggle signature help (if signature.enabled = true)
--
-- See :h blink-cmp-config-keymap for defining your own keymap
keymap = {
preset = "default",
},
appearance = {
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = "mono",
},
-- (Default) Only show the documentation popup when manually triggered
completion = {
menu = { auto_show = true },
trigger = {
show_on_keyword = true,
show_on_trigger_character = true,
show_on_insert_on_trigger_character = true,
},
documentation = { auto_show = true, window = { border = "single" } },
},
signature = { enabled = true },
sources = {
default = { "lsp", "path", "snippets", "buffer", "emoji", "sql" },
providers = {
lsp = {
name = "LSP",
module = "blink.cmp.sources.lsp",
min_keyword_length = 0,
},
snippets = {
name = "snippets",
module = "blink.cmp.sources.snippets",
enabled = true,
min_keyword_length = 2,
score_offset = 80,
},
emoji = {
module = "blink-emoji",
name = "Emoji",
score_offset = 15, -- Tune by preference
opts = { insert = true }, -- Insert emoji (default) or complete its name
-- should_show_items = function()
-- return vim.tbl_contains(
-- -- Enable emoji completion only for git commits and markdown.
-- -- By default, enabled for all file-types.
-- { "gitcommit", "markdown" },
-- vim.o.filetype
-- )
-- end,
},
sql = {
-- IMPORTANT: use the same name as you would for nvim-cmp
name = "sql",
module = "blink.compat.source",
-- all blink.cmp source config options work as normal:
score_offset = -3,
-- this table is passed directly to the proxied completion source
-- as the `option` field in nvim-cmp's source config
--
-- this is NOT the same as the opts in a plugin's lazy.nvim spec
opts = {},
should_show_items = function()
return vim.tbl_contains(
-- Enable emoji completion only for git commits and markdown.
-- By default, enabled for all file-types.
{ "sql" },
vim.o.filetype
)
end,
},
},
},
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
--
-- See the fuzzy documentation for more information
fuzzy = { implementation = "prefer_rust_with_warning" },
},
opts_extend = { "sources.default" },
},
}
|