From 250b7a26b4f834226f9a83e0fa5b901a2e289980 Mon Sep 17 00:00:00 2001 From: Peter Cardenas <16930781+PeterCardenas@users.noreply.github.com> Date: Wed, 15 Oct 2025 03:43:25 -0700 Subject: [PATCH] fix: filter out completions to relevant completion source (#2769) --- lua/cmp_avante/commands.lua | 11 ++++++++++- lua/cmp_avante/mentions.lua | 11 ++++++++++- lua/cmp_avante/shortcuts.lua | 11 ++++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lua/cmp_avante/commands.lua b/lua/cmp_avante/commands.lua index dfe99a3..d691957 100644 --- a/lua/cmp_avante/commands.lua +++ b/lua/cmp_avante/commands.lua @@ -18,7 +18,16 @@ function CommandsSource:get_trigger_characters() return { "/" } end function CommandsSource:get_keyword_pattern() return [[\%(@\|#\|/\)\k*]] end -function CommandsSource:complete(_, callback) +---@param params cmp.SourceCompletionApiParams +function CommandsSource:complete(params, callback) + ---@type string? + local trigger_character + if params.completion_context.triggerKind == 1 then + trigger_character = string.match(params.context.cursor_before_line, "%s*(/)%S*$") + elseif params.completion_context.triggerKind == 2 then + trigger_character = params.completion_context.triggerCharacter + end + if not trigger_character or trigger_character ~= "/" then return callback({ items = {}, isIncomplete = false }) end local Utils = require("avante.utils") local kind = require("cmp").lsp.CompletionItemKind.Variable local commands = Utils.get_commands() diff --git a/lua/cmp_avante/mentions.lua b/lua/cmp_avante/mentions.lua index 2cb1654..f053b6e 100644 --- a/lua/cmp_avante/mentions.lua +++ b/lua/cmp_avante/mentions.lua @@ -24,8 +24,17 @@ function MentionsSource:get_trigger_characters() return { "@" } end function MentionsSource:get_keyword_pattern() return [[\%(@\|#\|/\)\k*]] end -function MentionsSource:complete(_, callback) +---@param params cmp.SourceCompletionApiParams +function MentionsSource:complete(params, callback) + ---@type string? + local trigger_character local kind = require("cmp").lsp.CompletionItemKind.Variable + if params.completion_context.triggerKind == 1 then + trigger_character = string.match(params.context.cursor_before_line, "%s*(@)%S*$") + elseif params.completion_context.triggerKind == 2 then + trigger_character = params.completion_context.triggerCharacter + end + if not trigger_character or trigger_character ~= "@" then return callback({ items = {}, isIncomplete = false }) end local items = {} diff --git a/lua/cmp_avante/shortcuts.lua b/lua/cmp_avante/shortcuts.lua index 3c25835..2ac8d61 100644 --- a/lua/cmp_avante/shortcuts.lua +++ b/lua/cmp_avante/shortcuts.lua @@ -17,7 +17,16 @@ function ShortcutsSource:get_trigger_characters() return { "#" } end function ShortcutsSource:get_keyword_pattern() return [[\%(@\|#\|/\)\k*]] end -function ShortcutsSource:complete(_, callback) +---@param params cmp.SourceCompletionApiParams +function ShortcutsSource:complete(params, callback) + ---@type string? + local trigger_character + if params.completion_context.triggerKind == 1 then + trigger_character = string.match(params.context.cursor_before_line, "%s*(#)%S*$") + elseif params.completion_context.triggerKind == 2 then + trigger_character = params.completion_context.triggerCharacter + end + if not trigger_character or trigger_character ~= "#" then return callback({ items = {}, isIncomplete = false }) end local Utils = require("avante.utils") local kind = require("cmp").lsp.CompletionItemKind.Variable local shortcuts = Utils.get_shortcuts()