From 4b9bcda11364f74035e273c14d3d04770555010a Mon Sep 17 00:00:00 2001 From: Danil Alexeev Date: Sun, 6 Apr 2025 08:21:43 +0300 Subject: [PATCH] GDScript: Add autocompletion for `@export_tool_button` --- modules/gdscript/gdscript_editor.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp index 092a2043b1b..33af1f2f3f4 100644 --- a/modules/gdscript/gdscript_editor.cpp +++ b/modules/gdscript/gdscript_editor.cpp @@ -48,7 +48,9 @@ #ifdef TOOLS_ENABLED #include "core/config/project_settings.h" #include "editor/editor_file_system.h" +#include "editor/editor_node.h" #include "editor/editor_settings.h" +#include "editor/editor_string_names.h" #endif void GDScriptLanguage::get_comment_delimiters(List *p_delimiters) const { @@ -942,6 +944,19 @@ static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_a option.insert_text = option.display.quote(p_quote_style); r_result.insert(option.display, option); } + } else if (p_annotation->name == SNAME("@export_tool_button")) { + if (p_argument == 1) { + const Ref theme = EditorNode::get_singleton()->get_editor_theme(); + if (theme.is_valid()) { + List icon_list; + theme->get_icon_list(EditorStringName(EditorIcons), &icon_list); + for (const StringName &E : icon_list) { + ScriptLanguage::CodeCompletionOption option(E, ScriptLanguage::CODE_COMPLETION_KIND_CLASS); + option.insert_text = option.display.quote(p_quote_style); + r_result.insert(option.display, option); + } + } + } } else if (p_annotation->name == SNAME("@export_custom")) { switch (p_argument) { case 0: {