diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-03-01 17:22:21 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-03-01 17:22:21 +0100 |
commit | 7c3090ed4aa10cd8ecee8aa0e44df3888d31e575 (patch) | |
tree | 0d725363b90ae9c6e23fc22f1b4ca40d2578ceea | |
parent | 34effe41dc71691aaf7b802a398f7a83c640a5f1 (diff) | |
parent | adbe2383321831ca963af6d406555be983abe7de (diff) | |
download | redot-engine-7c3090ed4aa10cd8ecee8aa0e44df3888d31e575.tar.gz |
Merge pull request #89043 from Mickeon/autocomplete-EditorSettings
Add autocompletion for EditorSettings' methods
-rw-r--r-- | editor/editor_settings.cpp | 29 | ||||
-rw-r--r-- | editor/editor_settings.h | 4 |
2 files changed, 33 insertions, 0 deletions
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index b6d8d7b8d6..c39912d772 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -1785,6 +1785,35 @@ void EditorSettings::notify_changes() { root->propagate_notification(NOTIFICATION_EDITOR_SETTINGS_CHANGED); } +#ifdef TOOLS_ENABLED +void EditorSettings::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const { + const String pf = p_function; + if (p_idx == 0) { + if (pf == "has_setting" || pf == "set_setting" || pf == "get_setting" || pf == "erase" || + pf == "set_initial_value" || pf == "set_as_basic" || pf == "mark_setting_changed") { + for (const KeyValue<String, VariantContainer> &E : props) { + if (E.value.hide_from_editor) { + continue; + } + + r_options->push_back(E.key.quote()); + } + } else if (pf == "get_project_metadata" && project_metadata.is_valid()) { + List<String> sections; + project_metadata->get_sections(§ions); + for (const String §ion : sections) { + r_options->push_back(section.quote()); + } + } else if (pf == "set_builtin_action_override") { + for (const StringName &action : InputMap::get_singleton()->get_actions()) { + r_options->push_back(String(action).quote()); + } + } + } + Object::get_argument_options(p_function, p_idx, r_options); +} +#endif + void EditorSettings::_bind_methods() { ClassDB::bind_method(D_METHOD("has_setting", "name"), &EditorSettings::has_setting); ClassDB::bind_method(D_METHOD("set_setting", "name", "value"), &EditorSettings::set_setting); diff --git a/editor/editor_settings.h b/editor/editor_settings.h index 4995558e2b..a058f91be8 100644 --- a/editor/editor_settings.h +++ b/editor/editor_settings.h @@ -186,6 +186,10 @@ public: void notify_changes(); +#ifdef TOOLS_ENABLED + virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override; +#endif + EditorSettings(); ~EditorSettings(); }; |