diff --git a/dot_config/nvim/lua/plugins/blink.lua b/dot_config/nvim/lua/plugins/blink.lua index 79511db..336037b 100644 --- a/dot_config/nvim/lua/plugins/blink.lua +++ b/dot_config/nvim/lua/plugins/blink.lua @@ -10,9 +10,28 @@ require("blink.cmp").setup({ }, completion = { documentation = { auto_show = false }, + trigger = { prefetch_on_insert = false }, }, sources = { - default = { "lsp", "path", "snippets", "buffer" }, + default = { "lsp", "path", "snippets", "minuet", "buffer" }, + providers = { + minuet = { + name = "minuet", + module = "minuet.blink", + async = true, + timeout_ms = 3000, + score_offset = 50, + }, + }, }, fuzzy = { implementation = "prefer_rust_with_warning" }, }) + +local function minuet_blink_map() + local ok, map = pcall(require("minuet").make_blink_map) + if ok then + return map()[1] + end +end + +vim.keymap.set("i", "", minuet_blink_map, { desc = "Minuet manual completion" }) diff --git a/dot_config/nvim/lua/plugins/init.lua b/dot_config/nvim/lua/plugins/init.lua index d915cb1..74cf68d 100644 --- a/dot_config/nvim/lua/plugins/init.lua +++ b/dot_config/nvim/lua/plugins/init.lua @@ -17,6 +17,7 @@ vim.api.nvim_create_autocmd("PackChanged", { require("plugins.theme") require("plugins.mini-icons") require("plugins.treesitter") +require("plugins.minuet") require("plugins.blink") require("plugins.whichkey") require("plugins.lualine") diff --git a/dot_config/nvim/lua/plugins/minuet.lua b/dot_config/nvim/lua/plugins/minuet.lua new file mode 100644 index 0000000..5d09dba --- /dev/null +++ b/dot_config/nvim/lua/plugins/minuet.lua @@ -0,0 +1,47 @@ +vim.pack.add({ + { src = "https://github.com/milanglacier/minuet-ai.nvim" }, +}) + +local function opencode_go_api_key() + local ok, lines = pcall(vim.fn.readfile, vim.fn.expand("~/.local/share/opencode/auth.json")) + if not ok then + return nil + end + local ok_decode, auth = pcall(vim.fn.json_decode, table.concat(lines, "\n")) + if not ok_decode or not auth["opencode-go"] or not auth["opencode-go"].key then + return nil + end + return auth["opencode-go"].key +end + +local function setup_minuet() + pcall(require("minuet").setup, { + provider = "openai_compatible", + request_timeout = 2.5, + throttle = 1500, + debounce = 600, + provider_options = { + openai_compatible = { + api_key = opencode_go_api_key, + end_point = "https://opencode.ai/zen/go/v1/chat/completions", + model = "deepseek-v4-flash", + name = "Opencode", + optional = { + max_tokens = 56, + top_p = 0.9, + thinking = { type = "disabled" }, + }, + }, + }, + }) +end + +setup_minuet() + +vim.api.nvim_create_autocmd("PackChanged", { + callback = function(ev) + if ev.data.spec.name == "minuet-ai.nvim" then + setup_minuet() + end + end, +}) diff --git a/dot_config/nvim/nvim-pack-lock.json b/dot_config/nvim/nvim-pack-lock.json index be9a323..d218250 100644 --- a/dot_config/nvim/nvim-pack-lock.json +++ b/dot_config/nvim/nvim-pack-lock.json @@ -34,6 +34,10 @@ "src": "https://github.com/nvim-mini/mini.nvim", "version": "0.18.0 - 0.19.0" }, + "minuet-ai.nvim": { + "rev": "035e07136a281ca17c52722cc2201db2e08bbd3a", + "src": "https://github.com/milanglacier/minuet-ai.nvim" + }, "neo-tree.nvim": { "rev": "83e7a2982fd12b9c3d35bc39dd5877cd91a02a61", "src": "https://github.com/nvim-neo-tree/neo-tree.nvim",