From 10fba80d84fa940c10f193bc351f96e2cc32d92b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Techet?= Date: Mon, 29 Aug 2022 19:35:46 +0200 Subject: [PATCH] Ignore local tags for autocompletion in other files ctags sets the tag's "local" flag to true for tags whose visibility is limited to the current file only. These are for instance "static" functions in C. We can ignore these tags for autocompletion in other files than the tag's file which reduces the number of irrelevant tags in the autocompletion popup. --- src/tagmanager/tm_workspace.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tagmanager/tm_workspace.c b/src/tagmanager/tm_workspace.c index 24c9184a6..0bc44e668 100644 --- a/src/tagmanager/tm_workspace.c +++ b/src/tagmanager/tm_workspace.c @@ -637,7 +637,12 @@ gboolean tm_workspace_is_autocomplete_tag(TMTag *tag, (current_file == tag->file && current_line >= tag->line && g_strcmp0(current_scope, tag->scope) == 0); - return valid && !tm_tag_is_anon(tag) && tm_parser_langs_compatible(lang, tag->lang); + + /* tag->local indicates per-file-only visibility such as static C functions */ + gboolean valid_local = !tag->local || current_file == tag->file; + + return valid && valid_local && + !tm_tag_is_anon(tag) && tm_parser_langs_compatible(lang, tag->lang); }