Browse Source

Merge pull request #68140 from quinnyo/auto-complete-option

Add editor setting to toggle automatic code completion
Yuri Sizov 2 years ago
parent
commit
d13369eee1
4 changed files with 9 additions and 2 deletions
  1. 3 0
      doc/classes/EditorSettings.xml
  2. 3 1
      editor/code_editor.cpp
  3. 1 0
      editor/code_editor.h
  4. 2 1
      editor/editor_settings.cpp

+ 3 - 0
doc/classes/EditorSettings.xml

@@ -837,6 +837,9 @@
 		<member name="text_editor/completion/code_complete_delay" type="float" setter="" getter="">
 		<member name="text_editor/completion/code_complete_delay" type="float" setter="" getter="">
 			The delay in seconds after which autocompletion suggestions should be displayed when the user stops typing.
 			The delay in seconds after which autocompletion suggestions should be displayed when the user stops typing.
 		</member>
 		</member>
+		<member name="text_editor/completion/code_complete_enabled" type="bool" setter="" getter="">
+			If [code]true[/code], code completion will be triggered automatically after [member text_editor/completion/code_complete_delay]. If [code]false[/code], you can still trigger completion manually by pressing [kbd]Ctrl + Space[/kbd] ([kbd]Cmd + Space[/kbd] on macOS).
+		</member>
 		<member name="text_editor/completion/complete_file_paths" type="bool" setter="" getter="">
 		<member name="text_editor/completion/complete_file_paths" type="bool" setter="" getter="">
 			If [code]true[/code], provides autocompletion suggestions for file paths in methods such as [code]load()[/code] and [code]preload()[/code].
 			If [code]true[/code], provides autocompletion suggestions for file paths in methods such as [code]load()[/code] and [code]preload()[/code].
 		</member>
 		</member>

+ 3 - 1
editor/code_editor.cpp

@@ -905,7 +905,7 @@ void CodeTextEditor::_line_col_changed() {
 }
 }
 
 
 void CodeTextEditor::_text_changed() {
 void CodeTextEditor::_text_changed() {
-	if (text_editor->is_insert_text_operation()) {
+	if (code_complete_enabled && text_editor->is_insert_text_operation()) {
 		code_complete_timer_line = text_editor->get_caret_line();
 		code_complete_timer_line = text_editor->get_caret_line();
 		code_complete_timer->start();
 		code_complete_timer->start();
 	}
 	}
@@ -1737,6 +1737,7 @@ void CodeTextEditor::_apply_settings_change() {
 
 
 	text_editor->set_code_hint_draw_below(EDITOR_GET("text_editor/completion/put_callhint_tooltip_below_current_line"));
 	text_editor->set_code_hint_draw_below(EDITOR_GET("text_editor/completion/put_callhint_tooltip_below_current_line"));
 
 
+	code_complete_enabled = EDITOR_GET("text_editor/completion/code_complete_enabled");
 	code_complete_timer->set_wait_time(EDITOR_GET("text_editor/completion/code_complete_delay"));
 	code_complete_timer->set_wait_time(EDITOR_GET("text_editor/completion/code_complete_delay"));
 	idle->set_wait_time(EDITOR_GET("text_editor/completion/idle_parse_delay"));
 	idle->set_wait_time(EDITOR_GET("text_editor/completion/idle_parse_delay"));
 }
 }
@@ -2011,6 +2012,7 @@ CodeTextEditor::CodeTextEditor() {
 	idle->set_one_shot(true);
 	idle->set_one_shot(true);
 	idle->set_wait_time(EDITOR_GET("text_editor/completion/idle_parse_delay"));
 	idle->set_wait_time(EDITOR_GET("text_editor/completion/idle_parse_delay"));
 
 
+	code_complete_enabled = EDITOR_GET("text_editor/completion/code_complete_enabled");
 	code_complete_timer = memnew(Timer);
 	code_complete_timer = memnew(Timer);
 	add_child(code_complete_timer);
 	add_child(code_complete_timer);
 	code_complete_timer->set_one_shot(true);
 	code_complete_timer->set_one_shot(true);

+ 1 - 0
editor/code_editor.h

@@ -157,6 +157,7 @@ class CodeTextEditor : public VBoxContainer {
 
 
 	Label *info = nullptr;
 	Label *info = nullptr;
 	Timer *idle = nullptr;
 	Timer *idle = nullptr;
+	bool code_complete_enabled = true;
 	Timer *code_complete_timer = nullptr;
 	Timer *code_complete_timer = nullptr;
 	int code_complete_timer_line = 0;
 	int code_complete_timer_line = 0;
 
 

+ 2 - 1
editor/editor_settings.cpp

@@ -597,7 +597,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
 	// Completion
 	// Completion
 	EDITOR_SETTING(Variant::FLOAT, PROPERTY_HINT_RANGE, "text_editor/completion/idle_parse_delay", 2.0, "0.1,10,0.01")
 	EDITOR_SETTING(Variant::FLOAT, PROPERTY_HINT_RANGE, "text_editor/completion/idle_parse_delay", 2.0, "0.1,10,0.01")
 	_initial_set("text_editor/completion/auto_brace_complete", true);
 	_initial_set("text_editor/completion/auto_brace_complete", true);
-	EDITOR_SETTING(Variant::FLOAT, PROPERTY_HINT_RANGE, "text_editor/completion/code_complete_delay", 0.3, "0.01,5,0.01")
+	_initial_set("text_editor/completion/code_complete_enabled", true);
+	EDITOR_SETTING(Variant::FLOAT, PROPERTY_HINT_RANGE, "text_editor/completion/code_complete_delay", 0.3, "0.01,5,0.01,or_greater")
 	_initial_set("text_editor/completion/put_callhint_tooltip_below_current_line", true);
 	_initial_set("text_editor/completion/put_callhint_tooltip_below_current_line", true);
 	_initial_set("text_editor/completion/complete_file_paths", true);
 	_initial_set("text_editor/completion/complete_file_paths", true);
 	_initial_set("text_editor/completion/add_type_hints", false);
 	_initial_set("text_editor/completion/add_type_hints", false);