summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-03-01 17:22:21 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-03-01 17:22:21 +0100
commit7c3090ed4aa10cd8ecee8aa0e44df3888d31e575 (patch)
tree0d725363b90ae9c6e23fc22f1b4ca40d2578ceea
parent34effe41dc71691aaf7b802a398f7a83c640a5f1 (diff)
parentadbe2383321831ca963af6d406555be983abe7de (diff)
downloadredot-engine-7c3090ed4aa10cd8ecee8aa0e44df3888d31e575.tar.gz
Merge pull request #89043 from Mickeon/autocomplete-EditorSettings
Add autocompletion for EditorSettings' methods
-rw-r--r--editor/editor_settings.cpp29
-rw-r--r--editor/editor_settings.h4
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(&sections);
+ for (const String &section : 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();
};