Browse Source

Add code_complete_enabled code editor setting

quinnyo 2 years ago
parent
commit
68c24f9993
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();
 	}
 	}
@@ -1736,6 +1736,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"));
 }
 }
@@ -2010,6 +2011,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);