Skip to content

Latest commit

Β 

History

History
4138 lines (2346 loc) Β· 252 KB

class_textedit.rst

File metadata and controls

4138 lines (2346 loc) Β· 252 KB
github_url:hide

TextEdit

Inherits: :ref:`Control<class_Control>` < :ref:`CanvasItem<class_CanvasItem>` < :ref:`Node<class_Node>` < :ref:`Object<class_Object>`

Inherited By: :ref:`CodeEdit<class_CodeEdit>`

A multiline text editor.

.. rst-class:: classref-introduction-group

Description

A multiline text editor. It also has limited facilities for editing code, such as syntax highlighting support. For more advanced facilities for editing code, see :ref:`CodeEdit<class_CodeEdit>`.

Note: Most viewport, caret, and edit methods contain a caret_index argument for :ref:`caret_multiple<class_TextEdit_property_caret_multiple>` support. The argument should be one of the following: -1 for all carets, 0 for the main caret, or greater than 0 for secondary carets in the order they were created.

Note: When holding down Alt, the vertical scroll wheel will scroll 5 times as fast as it would normally do. This also works in the Godot script editor.

.. rst-class:: classref-reftable-group

Properties

:ref:`AutowrapMode<enum_TextServer_AutowrapMode>` :ref:`autowrap_mode<class_TextEdit_property_autowrap_mode>` 3
:ref:`bool<class_bool>` :ref:`caret_blink<class_TextEdit_property_caret_blink>` false
:ref:`float<class_float>` :ref:`caret_blink_interval<class_TextEdit_property_caret_blink_interval>` 0.65
:ref:`bool<class_bool>` :ref:`caret_draw_when_editable_disabled<class_TextEdit_property_caret_draw_when_editable_disabled>` false
:ref:`bool<class_bool>` :ref:`caret_mid_grapheme<class_TextEdit_property_caret_mid_grapheme>` false
:ref:`bool<class_bool>` :ref:`caret_move_on_right_click<class_TextEdit_property_caret_move_on_right_click>` true
:ref:`bool<class_bool>` :ref:`caret_multiple<class_TextEdit_property_caret_multiple>` true
:ref:`CaretType<enum_TextEdit_CaretType>` :ref:`caret_type<class_TextEdit_property_caret_type>` 0
:ref:`bool<class_bool>` clip_contents true (overrides :ref:`Control<class_Control_property_clip_contents>`)
:ref:`bool<class_bool>` :ref:`context_menu_enabled<class_TextEdit_property_context_menu_enabled>` true
:ref:`String<class_String>` :ref:`custom_word_separators<class_TextEdit_property_custom_word_separators>` ""
:ref:`bool<class_bool>` :ref:`deselect_on_focus_loss_enabled<class_TextEdit_property_deselect_on_focus_loss_enabled>` true
:ref:`bool<class_bool>` :ref:`drag_and_drop_selection_enabled<class_TextEdit_property_drag_and_drop_selection_enabled>` true
:ref:`bool<class_bool>` :ref:`draw_control_chars<class_TextEdit_property_draw_control_chars>` false
:ref:`bool<class_bool>` :ref:`draw_spaces<class_TextEdit_property_draw_spaces>` false
:ref:`bool<class_bool>` :ref:`draw_tabs<class_TextEdit_property_draw_tabs>` false
:ref:`bool<class_bool>` :ref:`editable<class_TextEdit_property_editable>` true
:ref:`FocusMode<enum_Control_FocusMode>` focus_mode 2 (overrides :ref:`Control<class_Control_property_focus_mode>`)
:ref:`bool<class_bool>` :ref:`highlight_all_occurrences<class_TextEdit_property_highlight_all_occurrences>` false
:ref:`bool<class_bool>` :ref:`highlight_current_line<class_TextEdit_property_highlight_current_line>` false
:ref:`bool<class_bool>` :ref:`indent_wrapped_lines<class_TextEdit_property_indent_wrapped_lines>` false
:ref:`String<class_String>` :ref:`language<class_TextEdit_property_language>` ""
:ref:`bool<class_bool>` :ref:`middle_mouse_paste_enabled<class_TextEdit_property_middle_mouse_paste_enabled>` true
:ref:`bool<class_bool>` :ref:`minimap_draw<class_TextEdit_property_minimap_draw>` false
:ref:`int<class_int>` :ref:`minimap_width<class_TextEdit_property_minimap_width>` 80
:ref:`CursorShape<enum_Control_CursorShape>` mouse_default_cursor_shape 1 (overrides :ref:`Control<class_Control_property_mouse_default_cursor_shape>`)
:ref:`String<class_String>` :ref:`placeholder_text<class_TextEdit_property_placeholder_text>` ""
:ref:`bool<class_bool>` :ref:`scroll_fit_content_height<class_TextEdit_property_scroll_fit_content_height>` false
:ref:`bool<class_bool>` :ref:`scroll_fit_content_width<class_TextEdit_property_scroll_fit_content_width>` false
:ref:`int<class_int>` :ref:`scroll_horizontal<class_TextEdit_property_scroll_horizontal>` 0
:ref:`bool<class_bool>` :ref:`scroll_past_end_of_file<class_TextEdit_property_scroll_past_end_of_file>` false
:ref:`bool<class_bool>` :ref:`scroll_smooth<class_TextEdit_property_scroll_smooth>` false
:ref:`float<class_float>` :ref:`scroll_v_scroll_speed<class_TextEdit_property_scroll_v_scroll_speed>` 80.0
:ref:`float<class_float>` :ref:`scroll_vertical<class_TextEdit_property_scroll_vertical>` 0.0
:ref:`bool<class_bool>` :ref:`selecting_enabled<class_TextEdit_property_selecting_enabled>` true
:ref:`bool<class_bool>` :ref:`shortcut_keys_enabled<class_TextEdit_property_shortcut_keys_enabled>` true
:ref:`StructuredTextParser<enum_TextServer_StructuredTextParser>` :ref:`structured_text_bidi_override<class_TextEdit_property_structured_text_bidi_override>` 0
:ref:`Array<class_Array>` :ref:`structured_text_bidi_override_options<class_TextEdit_property_structured_text_bidi_override_options>` []
:ref:`SyntaxHighlighter<class_SyntaxHighlighter>` :ref:`syntax_highlighter<class_TextEdit_property_syntax_highlighter>` Β 
:ref:`String<class_String>` :ref:`text<class_TextEdit_property_text>` ""
:ref:`TextDirection<enum_Control_TextDirection>` :ref:`text_direction<class_TextEdit_property_text_direction>` 0
:ref:`bool<class_bool>` :ref:`use_custom_word_separators<class_TextEdit_property_use_custom_word_separators>` false
:ref:`bool<class_bool>` :ref:`use_default_word_separators<class_TextEdit_property_use_default_word_separators>` true
:ref:`bool<class_bool>` :ref:`virtual_keyboard_enabled<class_TextEdit_property_virtual_keyboard_enabled>` true
:ref:`LineWrappingMode<enum_TextEdit_LineWrappingMode>` :ref:`wrap_mode<class_TextEdit_property_wrap_mode>` 0
.. rst-class:: classref-reftable-group

Methods

|void| :ref:`_backspace<class_TextEdit_private_method__backspace>`(caret_index: :ref:`int<class_int>`) |virtual|
|void| :ref:`_copy<class_TextEdit_private_method__copy>`(caret_index: :ref:`int<class_int>`) |virtual|
|void| :ref:`_cut<class_TextEdit_private_method__cut>`(caret_index: :ref:`int<class_int>`) |virtual|
|void| :ref:`_handle_unicode_input<class_TextEdit_private_method__handle_unicode_input>`(unicode_char: :ref:`int<class_int>`, caret_index: :ref:`int<class_int>`) |virtual|
|void| :ref:`_paste<class_TextEdit_private_method__paste>`(caret_index: :ref:`int<class_int>`) |virtual|
|void| :ref:`_paste_primary_clipboard<class_TextEdit_private_method__paste_primary_clipboard>`(caret_index: :ref:`int<class_int>`) |virtual|
:ref:`int<class_int>` :ref:`add_caret<class_TextEdit_method_add_caret>`(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`)
|void| :ref:`add_caret_at_carets<class_TextEdit_method_add_caret_at_carets>`(below: :ref:`bool<class_bool>`)
|void| :ref:`add_gutter<class_TextEdit_method_add_gutter>`(at: :ref:`int<class_int>` = -1)
|void| :ref:`add_selection_for_next_occurrence<class_TextEdit_method_add_selection_for_next_occurrence>`()
|void| :ref:`adjust_carets_after_edit<class_TextEdit_method_adjust_carets_after_edit>`(caret: :ref:`int<class_int>`, from_line: :ref:`int<class_int>`, from_col: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`, to_col: :ref:`int<class_int>`)
|void| :ref:`adjust_viewport_to_caret<class_TextEdit_method_adjust_viewport_to_caret>`(caret_index: :ref:`int<class_int>` = 0)
|void| :ref:`apply_ime<class_TextEdit_method_apply_ime>`()
|void| :ref:`backspace<class_TextEdit_method_backspace>`(caret_index: :ref:`int<class_int>` = -1)
|void| :ref:`begin_complex_operation<class_TextEdit_method_begin_complex_operation>`()
|void| :ref:`begin_multicaret_edit<class_TextEdit_method_begin_multicaret_edit>`()
|void| :ref:`cancel_ime<class_TextEdit_method_cancel_ime>`()
|void| :ref:`center_viewport_to_caret<class_TextEdit_method_center_viewport_to_caret>`(caret_index: :ref:`int<class_int>` = 0)
|void| :ref:`clear<class_TextEdit_method_clear>`()
|void| :ref:`clear_undo_history<class_TextEdit_method_clear_undo_history>`()
|void| :ref:`collapse_carets<class_TextEdit_method_collapse_carets>`(from_line: :ref:`int<class_int>`, from_column: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`, to_column: :ref:`int<class_int>`, inclusive: :ref:`bool<class_bool>` = false)
|void| :ref:`copy<class_TextEdit_method_copy>`(caret_index: :ref:`int<class_int>` = -1)
|void| :ref:`cut<class_TextEdit_method_cut>`(caret_index: :ref:`int<class_int>` = -1)
|void| :ref:`delete_selection<class_TextEdit_method_delete_selection>`(caret_index: :ref:`int<class_int>` = -1)
|void| :ref:`deselect<class_TextEdit_method_deselect>`(caret_index: :ref:`int<class_int>` = -1)
|void| :ref:`end_action<class_TextEdit_method_end_action>`()
|void| :ref:`end_complex_operation<class_TextEdit_method_end_complex_operation>`()
|void| :ref:`end_multicaret_edit<class_TextEdit_method_end_multicaret_edit>`()
:ref:`int<class_int>` :ref:`get_caret_column<class_TextEdit_method_get_caret_column>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_caret_count<class_TextEdit_method_get_caret_count>`() |const|
:ref:`Vector2<class_Vector2>` :ref:`get_caret_draw_pos<class_TextEdit_method_get_caret_draw_pos>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`PackedInt32Array<class_PackedInt32Array>` :ref:`get_caret_index_edit_order<class_TextEdit_method_get_caret_index_edit_order>`()
:ref:`int<class_int>` :ref:`get_caret_line<class_TextEdit_method_get_caret_line>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_caret_wrap_index<class_TextEdit_method_get_caret_wrap_index>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_first_non_whitespace_column<class_TextEdit_method_get_first_non_whitespace_column>`(line: :ref:`int<class_int>`) |const|
:ref:`int<class_int>` :ref:`get_first_visible_line<class_TextEdit_method_get_first_visible_line>`() |const|
:ref:`int<class_int>` :ref:`get_gutter_count<class_TextEdit_method_get_gutter_count>`() |const|
:ref:`String<class_String>` :ref:`get_gutter_name<class_TextEdit_method_get_gutter_name>`(gutter: :ref:`int<class_int>`) |const|
:ref:`GutterType<enum_TextEdit_GutterType>` :ref:`get_gutter_type<class_TextEdit_method_get_gutter_type>`(gutter: :ref:`int<class_int>`) |const|
:ref:`int<class_int>` :ref:`get_gutter_width<class_TextEdit_method_get_gutter_width>`(gutter: :ref:`int<class_int>`) |const|
:ref:`HScrollBar<class_HScrollBar>` :ref:`get_h_scroll_bar<class_TextEdit_method_get_h_scroll_bar>`() |const|
:ref:`int<class_int>` :ref:`get_indent_level<class_TextEdit_method_get_indent_level>`(line: :ref:`int<class_int>`) |const|
:ref:`int<class_int>` :ref:`get_last_full_visible_line<class_TextEdit_method_get_last_full_visible_line>`() |const|
:ref:`int<class_int>` :ref:`get_last_full_visible_line_wrap_index<class_TextEdit_method_get_last_full_visible_line_wrap_index>`() |const|
:ref:`int<class_int>` :ref:`get_last_unhidden_line<class_TextEdit_method_get_last_unhidden_line>`() |const|
:ref:`String<class_String>` :ref:`get_line<class_TextEdit_method_get_line>`(line: :ref:`int<class_int>`) |const|
:ref:`Color<class_Color>` :ref:`get_line_background_color<class_TextEdit_method_get_line_background_color>`(line: :ref:`int<class_int>`) |const|
:ref:`Vector2i<class_Vector2i>` :ref:`get_line_column_at_pos<class_TextEdit_method_get_line_column_at_pos>`(position: :ref:`Vector2i<class_Vector2i>`, allow_out_of_bounds: :ref:`bool<class_bool>` = true) |const|
:ref:`int<class_int>` :ref:`get_line_count<class_TextEdit_method_get_line_count>`() |const|
:ref:`Texture2D<class_Texture2D>` :ref:`get_line_gutter_icon<class_TextEdit_method_get_line_gutter_icon>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const|
:ref:`Color<class_Color>` :ref:`get_line_gutter_item_color<class_TextEdit_method_get_line_gutter_item_color>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const|
:ref:`Variant<class_Variant>` :ref:`get_line_gutter_metadata<class_TextEdit_method_get_line_gutter_metadata>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const|
:ref:`String<class_String>` :ref:`get_line_gutter_text<class_TextEdit_method_get_line_gutter_text>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const|
:ref:`int<class_int>` :ref:`get_line_height<class_TextEdit_method_get_line_height>`() |const|
:ref:`Array<class_Array>`[:ref:`Vector2i<class_Vector2i>`] :ref:`get_line_ranges_from_carets<class_TextEdit_method_get_line_ranges_from_carets>`(only_selections: :ref:`bool<class_bool>` = false, merge_adjacent: :ref:`bool<class_bool>` = true) |const|
:ref:`int<class_int>` :ref:`get_line_width<class_TextEdit_method_get_line_width>`(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = -1) |const|
:ref:`int<class_int>` :ref:`get_line_wrap_count<class_TextEdit_method_get_line_wrap_count>`(line: :ref:`int<class_int>`) |const|
:ref:`int<class_int>` :ref:`get_line_wrap_index_at_column<class_TextEdit_method_get_line_wrap_index_at_column>`(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`) |const|
:ref:`PackedStringArray<class_PackedStringArray>` :ref:`get_line_wrapped_text<class_TextEdit_method_get_line_wrapped_text>`(line: :ref:`int<class_int>`) |const|
:ref:`Vector2<class_Vector2>` :ref:`get_local_mouse_pos<class_TextEdit_method_get_local_mouse_pos>`() |const|
:ref:`PopupMenu<class_PopupMenu>` :ref:`get_menu<class_TextEdit_method_get_menu>`() |const|
:ref:`int<class_int>` :ref:`get_minimap_line_at_pos<class_TextEdit_method_get_minimap_line_at_pos>`(position: :ref:`Vector2i<class_Vector2i>`) |const|
:ref:`int<class_int>` :ref:`get_minimap_visible_lines<class_TextEdit_method_get_minimap_visible_lines>`() |const|
:ref:`Vector2i<class_Vector2i>` :ref:`get_next_visible_line_index_offset_from<class_TextEdit_method_get_next_visible_line_index_offset_from>`(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>`, visible_amount: :ref:`int<class_int>`) |const|
:ref:`int<class_int>` :ref:`get_next_visible_line_offset_from<class_TextEdit_method_get_next_visible_line_offset_from>`(line: :ref:`int<class_int>`, visible_amount: :ref:`int<class_int>`) |const|
:ref:`Vector2i<class_Vector2i>` :ref:`get_pos_at_line_column<class_TextEdit_method_get_pos_at_line_column>`(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`) |const|
:ref:`Rect2i<class_Rect2i>` :ref:`get_rect_at_line_column<class_TextEdit_method_get_rect_at_line_column>`(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`) |const|
:ref:`int<class_int>` :ref:`get_saved_version<class_TextEdit_method_get_saved_version>`() |const|
:ref:`float<class_float>` :ref:`get_scroll_pos_for_line<class_TextEdit_method_get_scroll_pos_for_line>`(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = 0) |const|
:ref:`String<class_String>` :ref:`get_selected_text<class_TextEdit_method_get_selected_text>`(caret_index: :ref:`int<class_int>` = -1)
:ref:`int<class_int>` :ref:`get_selection_at_line_column<class_TextEdit_method_get_selection_at_line_column>`(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`, include_edges: :ref:`bool<class_bool>` = true, only_selections: :ref:`bool<class_bool>` = true) |const|
:ref:`int<class_int>` :ref:`get_selection_column<class_TextEdit_method_get_selection_column>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_selection_from_column<class_TextEdit_method_get_selection_from_column>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_selection_from_line<class_TextEdit_method_get_selection_from_line>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_selection_line<class_TextEdit_method_get_selection_line>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`SelectionMode<enum_TextEdit_SelectionMode>` :ref:`get_selection_mode<class_TextEdit_method_get_selection_mode>`() |const|
:ref:`int<class_int>` :ref:`get_selection_origin_column<class_TextEdit_method_get_selection_origin_column>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_selection_origin_line<class_TextEdit_method_get_selection_origin_line>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_selection_to_column<class_TextEdit_method_get_selection_to_column>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`int<class_int>` :ref:`get_selection_to_line<class_TextEdit_method_get_selection_to_line>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`PackedInt32Array<class_PackedInt32Array>` :ref:`get_sorted_carets<class_TextEdit_method_get_sorted_carets>`(include_ignored_carets: :ref:`bool<class_bool>` = false) |const|
:ref:`int<class_int>` :ref:`get_tab_size<class_TextEdit_method_get_tab_size>`() |const|
:ref:`int<class_int>` :ref:`get_total_gutter_width<class_TextEdit_method_get_total_gutter_width>`() |const|
:ref:`int<class_int>` :ref:`get_total_visible_line_count<class_TextEdit_method_get_total_visible_line_count>`() |const|
:ref:`VScrollBar<class_VScrollBar>` :ref:`get_v_scroll_bar<class_TextEdit_method_get_v_scroll_bar>`() |const|
:ref:`int<class_int>` :ref:`get_version<class_TextEdit_method_get_version>`() |const|
:ref:`int<class_int>` :ref:`get_visible_line_count<class_TextEdit_method_get_visible_line_count>`() |const|
:ref:`int<class_int>` :ref:`get_visible_line_count_in_range<class_TextEdit_method_get_visible_line_count_in_range>`(from_line: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`) |const|
:ref:`String<class_String>` :ref:`get_word_at_pos<class_TextEdit_method_get_word_at_pos>`(position: :ref:`Vector2<class_Vector2>`) |const|
:ref:`String<class_String>` :ref:`get_word_under_caret<class_TextEdit_method_get_word_under_caret>`(caret_index: :ref:`int<class_int>` = -1) |const|
:ref:`bool<class_bool>` :ref:`has_ime_text<class_TextEdit_method_has_ime_text>`() |const|
:ref:`bool<class_bool>` :ref:`has_redo<class_TextEdit_method_has_redo>`() |const|
:ref:`bool<class_bool>` :ref:`has_selection<class_TextEdit_method_has_selection>`(caret_index: :ref:`int<class_int>` = -1) |const|
:ref:`bool<class_bool>` :ref:`has_undo<class_TextEdit_method_has_undo>`() |const|
|void| :ref:`insert_line_at<class_TextEdit_method_insert_line_at>`(line: :ref:`int<class_int>`, text: :ref:`String<class_String>`)
|void| :ref:`insert_text<class_TextEdit_method_insert_text>`(text: :ref:`String<class_String>`, line: :ref:`int<class_int>`, column: :ref:`int<class_int>`, before_selection_begin: :ref:`bool<class_bool>` = true, before_selection_end: :ref:`bool<class_bool>` = false)
|void| :ref:`insert_text_at_caret<class_TextEdit_method_insert_text_at_caret>`(text: :ref:`String<class_String>`, caret_index: :ref:`int<class_int>` = -1)
:ref:`bool<class_bool>` :ref:`is_caret_after_selection_origin<class_TextEdit_method_is_caret_after_selection_origin>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`bool<class_bool>` :ref:`is_caret_visible<class_TextEdit_method_is_caret_visible>`(caret_index: :ref:`int<class_int>` = 0) |const|
:ref:`bool<class_bool>` :ref:`is_dragging_cursor<class_TextEdit_method_is_dragging_cursor>`() |const|
:ref:`bool<class_bool>` :ref:`is_gutter_clickable<class_TextEdit_method_is_gutter_clickable>`(gutter: :ref:`int<class_int>`) |const|
:ref:`bool<class_bool>` :ref:`is_gutter_drawn<class_TextEdit_method_is_gutter_drawn>`(gutter: :ref:`int<class_int>`) |const|
:ref:`bool<class_bool>` :ref:`is_gutter_overwritable<class_TextEdit_method_is_gutter_overwritable>`(gutter: :ref:`int<class_int>`) |const|
:ref:`bool<class_bool>` :ref:`is_in_mulitcaret_edit<class_TextEdit_method_is_in_mulitcaret_edit>`() |const|
:ref:`bool<class_bool>` :ref:`is_line_gutter_clickable<class_TextEdit_method_is_line_gutter_clickable>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const|
:ref:`bool<class_bool>` :ref:`is_line_wrapped<class_TextEdit_method_is_line_wrapped>`(line: :ref:`int<class_int>`) |const|
:ref:`bool<class_bool>` :ref:`is_menu_visible<class_TextEdit_method_is_menu_visible>`() |const|
:ref:`bool<class_bool>` :ref:`is_mouse_over_selection<class_TextEdit_method_is_mouse_over_selection>`(edges: :ref:`bool<class_bool>`, caret_index: :ref:`int<class_int>` = -1) |const|
:ref:`bool<class_bool>` :ref:`is_overtype_mode_enabled<class_TextEdit_method_is_overtype_mode_enabled>`() |const|
|void| :ref:`menu_option<class_TextEdit_method_menu_option>`(option: :ref:`int<class_int>`)
|void| :ref:`merge_gutters<class_TextEdit_method_merge_gutters>`(from_line: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`)
|void| :ref:`merge_overlapping_carets<class_TextEdit_method_merge_overlapping_carets>`()
:ref:`bool<class_bool>` :ref:`multicaret_edit_ignore_caret<class_TextEdit_method_multicaret_edit_ignore_caret>`(caret_index: :ref:`int<class_int>`) |const|
|void| :ref:`paste<class_TextEdit_method_paste>`(caret_index: :ref:`int<class_int>` = -1)
|void| :ref:`paste_primary_clipboard<class_TextEdit_method_paste_primary_clipboard>`(caret_index: :ref:`int<class_int>` = -1)
|void| :ref:`redo<class_TextEdit_method_redo>`()
|void| :ref:`remove_caret<class_TextEdit_method_remove_caret>`(caret: :ref:`int<class_int>`)
|void| :ref:`remove_gutter<class_TextEdit_method_remove_gutter>`(gutter: :ref:`int<class_int>`)
|void| :ref:`remove_line_at<class_TextEdit_method_remove_line_at>`(line: :ref:`int<class_int>`, move_carets_down: :ref:`bool<class_bool>` = true)
|void| :ref:`remove_secondary_carets<class_TextEdit_method_remove_secondary_carets>`()
|void| :ref:`remove_text<class_TextEdit_method_remove_text>`(from_line: :ref:`int<class_int>`, from_column: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`, to_column: :ref:`int<class_int>`)
:ref:`Vector2i<class_Vector2i>` :ref:`search<class_TextEdit_method_search>`(text: :ref:`String<class_String>`, flags: :ref:`int<class_int>`, from_line: :ref:`int<class_int>`, from_column: :ref:`int<class_int>`) |const|
|void| :ref:`select<class_TextEdit_method_select>`(origin_line: :ref:`int<class_int>`, origin_column: :ref:`int<class_int>`, caret_line: :ref:`int<class_int>`, caret_column: :ref:`int<class_int>`, caret_index: :ref:`int<class_int>` = 0)
|void| :ref:`select_all<class_TextEdit_method_select_all>`()
|void| :ref:`select_word_under_caret<class_TextEdit_method_select_word_under_caret>`(caret_index: :ref:`int<class_int>` = -1)
|void| :ref:`set_caret_column<class_TextEdit_method_set_caret_column>`(column: :ref:`int<class_int>`, adjust_viewport: :ref:`bool<class_bool>` = true, caret_index: :ref:`int<class_int>` = 0)
|void| :ref:`set_caret_line<class_TextEdit_method_set_caret_line>`(line: :ref:`int<class_int>`, adjust_viewport: :ref:`bool<class_bool>` = true, can_be_hidden: :ref:`bool<class_bool>` = true, wrap_index: :ref:`int<class_int>` = 0, caret_index: :ref:`int<class_int>` = 0)
|void| :ref:`set_gutter_clickable<class_TextEdit_method_set_gutter_clickable>`(gutter: :ref:`int<class_int>`, clickable: :ref:`bool<class_bool>`)
|void| :ref:`set_gutter_custom_draw<class_TextEdit_method_set_gutter_custom_draw>`(column: :ref:`int<class_int>`, draw_callback: :ref:`Callable<class_Callable>`)
|void| :ref:`set_gutter_draw<class_TextEdit_method_set_gutter_draw>`(gutter: :ref:`int<class_int>`, draw: :ref:`bool<class_bool>`)
|void| :ref:`set_gutter_name<class_TextEdit_method_set_gutter_name>`(gutter: :ref:`int<class_int>`, name: :ref:`String<class_String>`)
|void| :ref:`set_gutter_overwritable<class_TextEdit_method_set_gutter_overwritable>`(gutter: :ref:`int<class_int>`, overwritable: :ref:`bool<class_bool>`)
|void| :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`(gutter: :ref:`int<class_int>`, type: :ref:`GutterType<enum_TextEdit_GutterType>`)
|void| :ref:`set_gutter_width<class_TextEdit_method_set_gutter_width>`(gutter: :ref:`int<class_int>`, width: :ref:`int<class_int>`)
|void| :ref:`set_line<class_TextEdit_method_set_line>`(line: :ref:`int<class_int>`, new_text: :ref:`String<class_String>`)
|void| :ref:`set_line_as_center_visible<class_TextEdit_method_set_line_as_center_visible>`(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = 0)
|void| :ref:`set_line_as_first_visible<class_TextEdit_method_set_line_as_first_visible>`(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = 0)
|void| :ref:`set_line_as_last_visible<class_TextEdit_method_set_line_as_last_visible>`(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = 0)
|void| :ref:`set_line_background_color<class_TextEdit_method_set_line_background_color>`(line: :ref:`int<class_int>`, color: :ref:`Color<class_Color>`)
|void| :ref:`set_line_gutter_clickable<class_TextEdit_method_set_line_gutter_clickable>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, clickable: :ref:`bool<class_bool>`)
|void| :ref:`set_line_gutter_icon<class_TextEdit_method_set_line_gutter_icon>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, icon: :ref:`Texture2D<class_Texture2D>`)
|void| :ref:`set_line_gutter_item_color<class_TextEdit_method_set_line_gutter_item_color>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, color: :ref:`Color<class_Color>`)
|void| :ref:`set_line_gutter_metadata<class_TextEdit_method_set_line_gutter_metadata>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, metadata: :ref:`Variant<class_Variant>`)
|void| :ref:`set_line_gutter_text<class_TextEdit_method_set_line_gutter_text>`(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, text: :ref:`String<class_String>`)
|void| :ref:`set_overtype_mode_enabled<class_TextEdit_method_set_overtype_mode_enabled>`(enabled: :ref:`bool<class_bool>`)
|void| :ref:`set_search_flags<class_TextEdit_method_set_search_flags>`(flags: :ref:`int<class_int>`)
|void| :ref:`set_search_text<class_TextEdit_method_set_search_text>`(search_text: :ref:`String<class_String>`)
|void| :ref:`set_selection_mode<class_TextEdit_method_set_selection_mode>`(mode: :ref:`SelectionMode<enum_TextEdit_SelectionMode>`)
|void| :ref:`set_selection_origin_column<class_TextEdit_method_set_selection_origin_column>`(column: :ref:`int<class_int>`, caret_index: :ref:`int<class_int>` = 0)
|void| :ref:`set_selection_origin_line<class_TextEdit_method_set_selection_origin_line>`(line: :ref:`int<class_int>`, can_be_hidden: :ref:`bool<class_bool>` = true, wrap_index: :ref:`int<class_int>` = -1, caret_index: :ref:`int<class_int>` = 0)
|void| :ref:`set_tab_size<class_TextEdit_method_set_tab_size>`(size: :ref:`int<class_int>`)
|void| :ref:`set_tooltip_request_func<class_TextEdit_method_set_tooltip_request_func>`(callback: :ref:`Callable<class_Callable>`)
|void| :ref:`skip_selection_for_next_occurrence<class_TextEdit_method_skip_selection_for_next_occurrence>`()
|void| :ref:`start_action<class_TextEdit_method_start_action>`(action: :ref:`EditAction<enum_TextEdit_EditAction>`)
|void| :ref:`swap_lines<class_TextEdit_method_swap_lines>`(from_line: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`)
|void| :ref:`tag_saved_version<class_TextEdit_method_tag_saved_version>`()
|void| :ref:`undo<class_TextEdit_method_undo>`()
.. rst-class:: classref-reftable-group

Theme Properties

:ref:`Color<class_Color>` :ref:`background_color<class_TextEdit_theme_color_background_color>` Color(0, 0, 0, 0)
:ref:`Color<class_Color>` :ref:`caret_background_color<class_TextEdit_theme_color_caret_background_color>` Color(0, 0, 0, 1)
:ref:`Color<class_Color>` :ref:`caret_color<class_TextEdit_theme_color_caret_color>` Color(0.875, 0.875, 0.875, 1)
:ref:`Color<class_Color>` :ref:`current_line_color<class_TextEdit_theme_color_current_line_color>` Color(0.25, 0.25, 0.26, 0.8)
:ref:`Color<class_Color>` :ref:`font_color<class_TextEdit_theme_color_font_color>` Color(0.875, 0.875, 0.875, 1)
:ref:`Color<class_Color>` :ref:`font_outline_color<class_TextEdit_theme_color_font_outline_color>` Color(0, 0, 0, 1)
:ref:`Color<class_Color>` :ref:`font_placeholder_color<class_TextEdit_theme_color_font_placeholder_color>` Color(0.875, 0.875, 0.875, 0.6)
:ref:`Color<class_Color>` :ref:`font_readonly_color<class_TextEdit_theme_color_font_readonly_color>` Color(0.875, 0.875, 0.875, 0.5)
:ref:`Color<class_Color>` :ref:`font_selected_color<class_TextEdit_theme_color_font_selected_color>` Color(0, 0, 0, 0)
:ref:`Color<class_Color>` :ref:`search_result_border_color<class_TextEdit_theme_color_search_result_border_color>` Color(0.3, 0.3, 0.3, 0.4)
:ref:`Color<class_Color>` :ref:`search_result_color<class_TextEdit_theme_color_search_result_color>` Color(0.3, 0.3, 0.3, 1)
:ref:`Color<class_Color>` :ref:`selection_color<class_TextEdit_theme_color_selection_color>` Color(0.5, 0.5, 0.5, 1)
:ref:`Color<class_Color>` :ref:`word_highlighted_color<class_TextEdit_theme_color_word_highlighted_color>` Color(0.5, 0.5, 0.5, 0.25)
:ref:`int<class_int>` :ref:`caret_width<class_TextEdit_theme_constant_caret_width>` 1
:ref:`int<class_int>` :ref:`line_spacing<class_TextEdit_theme_constant_line_spacing>` 4
:ref:`int<class_int>` :ref:`outline_size<class_TextEdit_theme_constant_outline_size>` 0
:ref:`Font<class_Font>` :ref:`font<class_TextEdit_theme_font_font>` Β 
:ref:`int<class_int>` :ref:`font_size<class_TextEdit_theme_font_size_font_size>` Β 
:ref:`Texture2D<class_Texture2D>` :ref:`space<class_TextEdit_theme_icon_space>` Β 
:ref:`Texture2D<class_Texture2D>` :ref:`tab<class_TextEdit_theme_icon_tab>` Β 
:ref:`StyleBox<class_StyleBox>` :ref:`focus<class_TextEdit_theme_style_focus>` Β 
:ref:`StyleBox<class_StyleBox>` :ref:`normal<class_TextEdit_theme_style_normal>` Β 
:ref:`StyleBox<class_StyleBox>` :ref:`read_only<class_TextEdit_theme_style_read_only>` Β 
.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Signals

.. rst-class:: classref-signal

caret_changed() :ref:`πŸ”—<class_TextEdit_signal_caret_changed>`

Emitted when any caret changes position.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

gutter_added() :ref:`πŸ”—<class_TextEdit_signal_gutter_added>`

Emitted when a gutter is added.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

gutter_clicked(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_signal_gutter_clicked>`

Emitted when a gutter is clicked.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

gutter_removed() :ref:`πŸ”—<class_TextEdit_signal_gutter_removed>`

Emitted when a gutter is removed.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

lines_edited_from(from_line: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_signal_lines_edited_from>`

Emitted immediately when the text changes.

When text is added from_line will be less than to_line. On a remove to_line will be less than from_line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

text_changed() :ref:`πŸ”—<class_TextEdit_signal_text_changed>`

Emitted when the text changes.

.. rst-class:: classref-item-separator


.. rst-class:: classref-signal

text_set() :ref:`πŸ”—<class_TextEdit_signal_text_set>`

Emitted when :ref:`clear<class_TextEdit_method_clear>` is called or :ref:`text<class_TextEdit_property_text>` is set.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Enumerations

.. rst-class:: classref-enumeration

enum MenuItems: :ref:`πŸ”—<enum_TextEdit_MenuItems>`

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_CUT = 0

Cuts (copies and clears) the selected text.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_COPY = 1

Copies the selected text.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_PASTE = 2

Pastes the clipboard text over the selected text (or at the cursor's position).

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_CLEAR = 3

Erases the whole TextEdit text.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_SELECT_ALL = 4

Selects the whole TextEdit text.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_UNDO = 5

Undoes the previous action.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_REDO = 6

Redoes the previous action.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_SUBMENU_TEXT_DIR = 7

ID of "Text Writing Direction" submenu.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_DIR_INHERITED = 8

Sets text direction to inherited.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_DIR_AUTO = 9

Sets text direction to automatic.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_DIR_LTR = 10

Sets text direction to left-to-right.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_DIR_RTL = 11

Sets text direction to right-to-left.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_DISPLAY_UCC = 12

Toggles control character display.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_SUBMENU_INSERT_UCC = 13

ID of "Insert Control Character" submenu.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_LRM = 14

Inserts left-to-right mark (LRM) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_RLM = 15

Inserts right-to-left mark (RLM) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_LRE = 16

Inserts start of left-to-right embedding (LRE) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_RLE = 17

Inserts start of right-to-left embedding (RLE) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_LRO = 18

Inserts start of left-to-right override (LRO) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_RLO = 19

Inserts start of right-to-left override (RLO) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_PDF = 20

Inserts pop direction formatting (PDF) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_ALM = 21

Inserts Arabic letter mark (ALM) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_LRI = 22

Inserts left-to-right isolate (LRI) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_RLI = 23

Inserts right-to-left isolate (RLI) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_FSI = 24

Inserts first strong isolate (FSI) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_PDI = 25

Inserts pop direction isolate (PDI) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_ZWJ = 26

Inserts zero width joiner (ZWJ) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_ZWNJ = 27

Inserts zero width non-joiner (ZWNJ) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_WJ = 28

Inserts word joiner (WJ) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_INSERT_SHY = 29

Inserts soft hyphen (SHY) character.

.. rst-class:: classref-enumeration-constant

:ref:`MenuItems<enum_TextEdit_MenuItems>` MENU_MAX = 30

Represents the size of the :ref:`MenuItems<enum_TextEdit_MenuItems>` enum.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum EditAction: :ref:`πŸ”—<enum_TextEdit_EditAction>`

.. rst-class:: classref-enumeration-constant

:ref:`EditAction<enum_TextEdit_EditAction>` ACTION_NONE = 0

No current action.

.. rst-class:: classref-enumeration-constant

:ref:`EditAction<enum_TextEdit_EditAction>` ACTION_TYPING = 1

A typing action.

.. rst-class:: classref-enumeration-constant

:ref:`EditAction<enum_TextEdit_EditAction>` ACTION_BACKSPACE = 2

A backwards delete action.

.. rst-class:: classref-enumeration-constant

:ref:`EditAction<enum_TextEdit_EditAction>` ACTION_DELETE = 3

A forward delete action.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum SearchFlags: :ref:`πŸ”—<enum_TextEdit_SearchFlags>`

.. rst-class:: classref-enumeration-constant

:ref:`SearchFlags<enum_TextEdit_SearchFlags>` SEARCH_MATCH_CASE = 1

Match case when searching.

.. rst-class:: classref-enumeration-constant

:ref:`SearchFlags<enum_TextEdit_SearchFlags>` SEARCH_WHOLE_WORDS = 2

Match whole words when searching.

.. rst-class:: classref-enumeration-constant

:ref:`SearchFlags<enum_TextEdit_SearchFlags>` SEARCH_BACKWARDS = 4

Search from end to beginning.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum CaretType: :ref:`πŸ”—<enum_TextEdit_CaretType>`

.. rst-class:: classref-enumeration-constant

:ref:`CaretType<enum_TextEdit_CaretType>` CARET_TYPE_LINE = 0

Vertical line caret.

.. rst-class:: classref-enumeration-constant

:ref:`CaretType<enum_TextEdit_CaretType>` CARET_TYPE_BLOCK = 1

Block caret.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum SelectionMode: :ref:`πŸ”—<enum_TextEdit_SelectionMode>`

.. rst-class:: classref-enumeration-constant

:ref:`SelectionMode<enum_TextEdit_SelectionMode>` SELECTION_MODE_NONE = 0

Not selecting.

.. rst-class:: classref-enumeration-constant

:ref:`SelectionMode<enum_TextEdit_SelectionMode>` SELECTION_MODE_SHIFT = 1

Select as if shift is pressed.

.. rst-class:: classref-enumeration-constant

:ref:`SelectionMode<enum_TextEdit_SelectionMode>` SELECTION_MODE_POINTER = 2

Select single characters as if the user single clicked.

.. rst-class:: classref-enumeration-constant

:ref:`SelectionMode<enum_TextEdit_SelectionMode>` SELECTION_MODE_WORD = 3

Select whole words as if the user double clicked.

.. rst-class:: classref-enumeration-constant

:ref:`SelectionMode<enum_TextEdit_SelectionMode>` SELECTION_MODE_LINE = 4

Select whole lines as if the user triple clicked.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum LineWrappingMode: :ref:`πŸ”—<enum_TextEdit_LineWrappingMode>`

.. rst-class:: classref-enumeration-constant

:ref:`LineWrappingMode<enum_TextEdit_LineWrappingMode>` LINE_WRAPPING_NONE = 0

Line wrapping is disabled.

.. rst-class:: classref-enumeration-constant

:ref:`LineWrappingMode<enum_TextEdit_LineWrappingMode>` LINE_WRAPPING_BOUNDARY = 1

Line wrapping occurs at the control boundary, beyond what would normally be visible.

.. rst-class:: classref-item-separator


.. rst-class:: classref-enumeration

enum GutterType: :ref:`πŸ”—<enum_TextEdit_GutterType>`

.. rst-class:: classref-enumeration-constant

:ref:`GutterType<enum_TextEdit_GutterType>` GUTTER_TYPE_STRING = 0

When a gutter is set to string using :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`, it is used to contain text set via the :ref:`set_line_gutter_text<class_TextEdit_method_set_line_gutter_text>` method.

.. rst-class:: classref-enumeration-constant

:ref:`GutterType<enum_TextEdit_GutterType>` GUTTER_TYPE_ICON = 1

When a gutter is set to icon using :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`, it is used to contain an icon set via the :ref:`set_line_gutter_icon<class_TextEdit_method_set_line_gutter_icon>` method.

.. rst-class:: classref-enumeration-constant

:ref:`GutterType<enum_TextEdit_GutterType>` GUTTER_TYPE_CUSTOM = 2

When a gutter is set to custom using :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`, it is used to contain custom visuals controlled by a callback method set via the :ref:`set_gutter_custom_draw<class_TextEdit_method_set_gutter_custom_draw>` method.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Property Descriptions

.. rst-class:: classref-property

:ref:`AutowrapMode<enum_TextServer_AutowrapMode>` autowrap_mode = 3 :ref:`πŸ”—<class_TextEdit_property_autowrap_mode>`

.. rst-class:: classref-property-setget

If :ref:`wrap_mode<class_TextEdit_property_wrap_mode>` is set to :ref:`LINE_WRAPPING_BOUNDARY<class_TextEdit_constant_LINE_WRAPPING_BOUNDARY>`, sets text wrapping mode. To see how each mode behaves, see :ref:`AutowrapMode<enum_TextServer_AutowrapMode>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` caret_blink = false :ref:`πŸ”—<class_TextEdit_property_caret_blink>`

.. rst-class:: classref-property-setget

If true, makes the caret blink.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` caret_blink_interval = 0.65 :ref:`πŸ”—<class_TextEdit_property_caret_blink_interval>`

.. rst-class:: classref-property-setget

The interval at which the caret blinks (in seconds).

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` caret_draw_when_editable_disabled = false :ref:`πŸ”—<class_TextEdit_property_caret_draw_when_editable_disabled>`

.. rst-class:: classref-property-setget

If true, caret will be visible when :ref:`editable<class_TextEdit_property_editable>` is disabled.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` caret_mid_grapheme = false :ref:`πŸ”—<class_TextEdit_property_caret_mid_grapheme>`

.. rst-class:: classref-property-setget

Allow moving caret, selecting and removing the individual composite character components.

Note: Backspace is always removing individual composite character components.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` caret_move_on_right_click = true :ref:`πŸ”—<class_TextEdit_property_caret_move_on_right_click>`

.. rst-class:: classref-property-setget

If true, a right-click moves the caret at the mouse position before displaying the context menu.

If false, the context menu ignores mouse location.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` caret_multiple = true :ref:`πŸ”—<class_TextEdit_property_caret_multiple>`

.. rst-class:: classref-property-setget

Sets if multiple carets are allowed.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`CaretType<enum_TextEdit_CaretType>` caret_type = 0 :ref:`πŸ”—<class_TextEdit_property_caret_type>`

.. rst-class:: classref-property-setget

Set the type of caret to draw.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` context_menu_enabled = true :ref:`πŸ”—<class_TextEdit_property_context_menu_enabled>`

.. rst-class:: classref-property-setget

If true, a right-click displays the context menu.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`String<class_String>` custom_word_separators = "" :ref:`πŸ”—<class_TextEdit_property_custom_word_separators>`

.. rst-class:: classref-property-setget

The characters to consider as word delimiters if :ref:`use_custom_word_separators<class_TextEdit_property_use_custom_word_separators>` is true. The characters should be defined without separation, for example #_!.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` deselect_on_focus_loss_enabled = true :ref:`πŸ”—<class_TextEdit_property_deselect_on_focus_loss_enabled>`

.. rst-class:: classref-property-setget

If true, the selected text will be deselected when focus is lost.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` drag_and_drop_selection_enabled = true :ref:`πŸ”—<class_TextEdit_property_drag_and_drop_selection_enabled>`

.. rst-class:: classref-property-setget

If true, allow drag and drop of selected text. Text can still be dropped from other sources.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` draw_control_chars = false :ref:`πŸ”—<class_TextEdit_property_draw_control_chars>`

.. rst-class:: classref-property-setget

If true, control characters are displayed.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` draw_spaces = false :ref:`πŸ”—<class_TextEdit_property_draw_spaces>`

.. rst-class:: classref-property-setget

If true, the "space" character will have a visible representation.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` draw_tabs = false :ref:`πŸ”—<class_TextEdit_property_draw_tabs>`

.. rst-class:: classref-property-setget

If true, the "tab" character will have a visible representation.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` editable = true :ref:`πŸ”—<class_TextEdit_property_editable>`

.. rst-class:: classref-property-setget

If false, existing text cannot be modified and new text cannot be added.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` highlight_all_occurrences = false :ref:`πŸ”—<class_TextEdit_property_highlight_all_occurrences>`

.. rst-class:: classref-property-setget

If true, all occurrences of the selected text will be highlighted.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` highlight_current_line = false :ref:`πŸ”—<class_TextEdit_property_highlight_current_line>`

.. rst-class:: classref-property-setget

If true, the line containing the cursor is highlighted.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` indent_wrapped_lines = false :ref:`πŸ”—<class_TextEdit_property_indent_wrapped_lines>`

.. rst-class:: classref-property-setget

If true, all wrapped lines are indented to the same amount as the unwrapped line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`String<class_String>` language = "" :ref:`πŸ”—<class_TextEdit_property_language>`

.. rst-class:: classref-property-setget

Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` middle_mouse_paste_enabled = true :ref:`πŸ”—<class_TextEdit_property_middle_mouse_paste_enabled>`

.. rst-class:: classref-property-setget

If false, using middle mouse button to paste clipboard will be disabled.

Note: This method is only implemented on Linux.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` minimap_draw = false :ref:`πŸ”—<class_TextEdit_property_minimap_draw>`

.. rst-class:: classref-property-setget

If true, a minimap is shown, providing an outline of your source code. The minimap uses a fixed-width text size.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`int<class_int>` minimap_width = 80 :ref:`πŸ”—<class_TextEdit_property_minimap_width>`

.. rst-class:: classref-property-setget

The width, in pixels, of the minimap.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`String<class_String>` placeholder_text = "" :ref:`πŸ”—<class_TextEdit_property_placeholder_text>`

.. rst-class:: classref-property-setget

Text shown when the TextEdit is empty. It is not the TextEdit's default value (see :ref:`text<class_TextEdit_property_text>`).

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` scroll_fit_content_height = false :ref:`πŸ”—<class_TextEdit_property_scroll_fit_content_height>`

.. rst-class:: classref-property-setget

If true, TextEdit will disable vertical scroll and fit minimum height to the number of visible lines. When both this property and :ref:`scroll_fit_content_width<class_TextEdit_property_scroll_fit_content_width>` are true, no scrollbars will be displayed.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` scroll_fit_content_width = false :ref:`πŸ”—<class_TextEdit_property_scroll_fit_content_width>`

.. rst-class:: classref-property-setget

If true, TextEdit will disable horizontal scroll and fit minimum width to the widest line in the text. When both this property and :ref:`scroll_fit_content_height<class_TextEdit_property_scroll_fit_content_height>` are true, no scrollbars will be displayed.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`int<class_int>` scroll_horizontal = 0 :ref:`πŸ”—<class_TextEdit_property_scroll_horizontal>`

.. rst-class:: classref-property-setget

If there is a horizontal scrollbar, this determines the current horizontal scroll value in pixels.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` scroll_past_end_of_file = false :ref:`πŸ”—<class_TextEdit_property_scroll_past_end_of_file>`

.. rst-class:: classref-property-setget

Allow scrolling past the last line into "virtual" space.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` scroll_smooth = false :ref:`πŸ”—<class_TextEdit_property_scroll_smooth>`

.. rst-class:: classref-property-setget

Scroll smoothly over the text rather than jumping to the next location.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` scroll_v_scroll_speed = 80.0 :ref:`πŸ”—<class_TextEdit_property_scroll_v_scroll_speed>`

.. rst-class:: classref-property-setget

Sets the scroll speed with the minimap or when :ref:`scroll_smooth<class_TextEdit_property_scroll_smooth>` is enabled.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`float<class_float>` scroll_vertical = 0.0 :ref:`πŸ”—<class_TextEdit_property_scroll_vertical>`

.. rst-class:: classref-property-setget

If there is a vertical scrollbar, this determines the current vertical scroll value in line numbers, starting at 0 for the top line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` selecting_enabled = true :ref:`πŸ”—<class_TextEdit_property_selecting_enabled>`

.. rst-class:: classref-property-setget

If true, text can be selected.

If false, text can not be selected by the user or by the :ref:`select<class_TextEdit_method_select>` or :ref:`select_all<class_TextEdit_method_select_all>` methods.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` shortcut_keys_enabled = true :ref:`πŸ”—<class_TextEdit_property_shortcut_keys_enabled>`

.. rst-class:: classref-property-setget

If true, shortcut keys for context menu items are enabled, even if the context menu is disabled.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`StructuredTextParser<enum_TextServer_StructuredTextParser>` structured_text_bidi_override = 0 :ref:`πŸ”—<class_TextEdit_property_structured_text_bidi_override>`

.. rst-class:: classref-property-setget

Set BiDi algorithm override for the structured text.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`Array<class_Array>` structured_text_bidi_override_options = [] :ref:`πŸ”—<class_TextEdit_property_structured_text_bidi_override_options>`

.. rst-class:: classref-property-setget

Set additional options for BiDi override.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`SyntaxHighlighter<class_SyntaxHighlighter>` syntax_highlighter :ref:`πŸ”—<class_TextEdit_property_syntax_highlighter>`

.. rst-class:: classref-property-setget

Sets the :ref:`SyntaxHighlighter<class_SyntaxHighlighter>` to use.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`String<class_String>` text = "" :ref:`πŸ”—<class_TextEdit_property_text>`

.. rst-class:: classref-property-setget

String value of the TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`TextDirection<enum_Control_TextDirection>` text_direction = 0 :ref:`πŸ”—<class_TextEdit_property_text_direction>`

.. rst-class:: classref-property-setget

Base text writing direction.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` use_custom_word_separators = false :ref:`πŸ”—<class_TextEdit_property_use_custom_word_separators>`

.. rst-class:: classref-property-setget

If false, using Ctrl + Left or Ctrl + Right (Cmd + Left or Cmd + Right on macOS) bindings will use the behavior of :ref:`use_default_word_separators<class_TextEdit_property_use_default_word_separators>`. If true, it will also stop the caret if a character within :ref:`custom_word_separators<class_TextEdit_property_custom_word_separators>` is detected. Useful for subword moving. This behavior also will be applied to the behavior of text selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` use_default_word_separators = true :ref:`πŸ”—<class_TextEdit_property_use_default_word_separators>`

.. rst-class:: classref-property-setget

If false, using Ctrl + Left or Ctrl + Right (Cmd + Left or Cmd + Right on macOS) bindings will stop moving caret only if a space or punctuation is detected. If true, it will also stop the caret if a character is part of !"#$%&'()*+,-./:;<=>?@[\]^`{|}~, the Unicode General Punctuation table, or the Unicode CJK Punctuation table. Useful for subword moving. This behavior also will be applied to the behavior of text selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`bool<class_bool>` virtual_keyboard_enabled = true :ref:`πŸ”—<class_TextEdit_property_virtual_keyboard_enabled>`

.. rst-class:: classref-property-setget

If true, the native virtual keyboard is shown when focused on platforms that support it.

.. rst-class:: classref-item-separator


.. rst-class:: classref-property

:ref:`LineWrappingMode<enum_TextEdit_LineWrappingMode>` wrap_mode = 0 :ref:`πŸ”—<class_TextEdit_property_wrap_mode>`

.. rst-class:: classref-property-setget

Sets the line wrapping mode to use.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Method Descriptions

.. rst-class:: classref-method

|void| _backspace(caret_index: :ref:`int<class_int>`) |virtual| :ref:`πŸ”—<class_TextEdit_private_method__backspace>`

Override this method to define what happens when the user presses the backspace key.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| _copy(caret_index: :ref:`int<class_int>`) |virtual| :ref:`πŸ”—<class_TextEdit_private_method__copy>`

Override this method to define what happens when the user performs a copy operation.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| _cut(caret_index: :ref:`int<class_int>`) |virtual| :ref:`πŸ”—<class_TextEdit_private_method__cut>`

Override this method to define what happens when the user performs a cut operation.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| _handle_unicode_input(unicode_char: :ref:`int<class_int>`, caret_index: :ref:`int<class_int>`) |virtual| :ref:`πŸ”—<class_TextEdit_private_method__handle_unicode_input>`

Override this method to define what happens when the user types in the provided key unicode_char.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| _paste(caret_index: :ref:`int<class_int>`) |virtual| :ref:`πŸ”—<class_TextEdit_private_method__paste>`

Override this method to define what happens when the user performs a paste operation.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| _paste_primary_clipboard(caret_index: :ref:`int<class_int>`) |virtual| :ref:`πŸ”—<class_TextEdit_private_method__paste_primary_clipboard>`

Override this method to define what happens when the user performs a paste operation with middle mouse button.

Note: This method is only implemented on Linux.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` add_caret(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_add_caret>`

Adds a new caret at the given location. Returns the index of the new caret, or -1 if the location is invalid.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| add_caret_at_carets(below: :ref:`bool<class_bool>`) :ref:`πŸ”—<class_TextEdit_method_add_caret_at_carets>`

Adds an additional caret above or below every caret. If below is true the new caret will be added below and above otherwise.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| add_gutter(at: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_add_gutter>`

Register a new gutter to this TextEdit. Use at to have a specific gutter order. A value of -1 appends the gutter to the right.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| add_selection_for_next_occurrence() :ref:`πŸ”—<class_TextEdit_method_add_selection_for_next_occurrence>`

Adds a selection and a caret for the next occurrence of the current selection. If there is no active selection, selects word under caret.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| adjust_carets_after_edit(caret: :ref:`int<class_int>`, from_line: :ref:`int<class_int>`, from_col: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`, to_col: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_adjust_carets_after_edit>`

Deprecated: No longer necessary since methods now adjust carets themselves.

This method does nothing.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| adjust_viewport_to_caret(caret_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_adjust_viewport_to_caret>`

Adjust the viewport so the caret is visible.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| apply_ime() :ref:`πŸ”—<class_TextEdit_method_apply_ime>`

Applies text from the Input Method Editor (IME) to each caret and closes the IME if it is open.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| backspace(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_backspace>`

Called when the user presses the backspace key. Can be overridden with :ref:`_backspace<class_TextEdit_private_method__backspace>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| begin_complex_operation() :ref:`πŸ”—<class_TextEdit_method_begin_complex_operation>`

Starts a multipart edit. All edits will be treated as one action until :ref:`end_complex_operation<class_TextEdit_method_end_complex_operation>` is called.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| begin_multicaret_edit() :ref:`πŸ”—<class_TextEdit_method_begin_multicaret_edit>`

Starts an edit for multiple carets. The edit must be ended with :ref:`end_multicaret_edit<class_TextEdit_method_end_multicaret_edit>`. Multicaret edits can be used to edit text at multiple carets and delay merging the carets until the end, so the caret indexes aren't affected immediately. :ref:`begin_multicaret_edit<class_TextEdit_method_begin_multicaret_edit>` and :ref:`end_multicaret_edit<class_TextEdit_method_end_multicaret_edit>` can be nested, and the merge will happen at the last :ref:`end_multicaret_edit<class_TextEdit_method_end_multicaret_edit>`.

Example usage:

begin_complex_operation()
begin_multicaret_edit()
for i in range(get_caret_count()):
    if multicaret_edit_ignore_caret(i):
        continue
    # Logic here.
end_multicaret_edit()
end_complex_operation()
.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| cancel_ime() :ref:`πŸ”—<class_TextEdit_method_cancel_ime>`

Closes the Input Method Editor (IME) if it is open. Any text in the IME will be lost.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| center_viewport_to_caret(caret_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_center_viewport_to_caret>`

Centers the viewport on the line the editing caret is at. This also resets the :ref:`scroll_horizontal<class_TextEdit_property_scroll_horizontal>` value to 0.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| clear() :ref:`πŸ”—<class_TextEdit_method_clear>`

Performs a full reset of TextEdit, including undo history.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| clear_undo_history() :ref:`πŸ”—<class_TextEdit_method_clear_undo_history>`

Clears the undo history.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| collapse_carets(from_line: :ref:`int<class_int>`, from_column: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`, to_column: :ref:`int<class_int>`, inclusive: :ref:`bool<class_bool>` = false) :ref:`πŸ”—<class_TextEdit_method_collapse_carets>`

Collapse all carets in the given range to the from_line and from_column position.

inclusive applies to both ends.

If :ref:`is_in_mulitcaret_edit<class_TextEdit_method_is_in_mulitcaret_edit>` is true, carets that are collapsed will be true for :ref:`multicaret_edit_ignore_caret<class_TextEdit_method_multicaret_edit_ignore_caret>`.

:ref:`merge_overlapping_carets<class_TextEdit_method_merge_overlapping_carets>` will be called if any carets were collapsed.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| copy(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_copy>`

Copies the current text selection. Can be overridden with :ref:`_copy<class_TextEdit_private_method__copy>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| cut(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_cut>`

Cut's the current selection. Can be overridden with :ref:`_cut<class_TextEdit_private_method__cut>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| delete_selection(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_delete_selection>`

Deletes the selected text.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| deselect(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_deselect>`

Deselects the current selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| end_action() :ref:`πŸ”—<class_TextEdit_method_end_action>`

Marks the end of steps in the current action started with :ref:`start_action<class_TextEdit_method_start_action>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| end_complex_operation() :ref:`πŸ”—<class_TextEdit_method_end_complex_operation>`

Ends a multipart edit, started with :ref:`begin_complex_operation<class_TextEdit_method_begin_complex_operation>`. If called outside a complex operation, the current operation is pushed onto the undo/redo stack.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| end_multicaret_edit() :ref:`πŸ”—<class_TextEdit_method_end_multicaret_edit>`

Ends an edit for multiple carets, that was started with :ref:`begin_multicaret_edit<class_TextEdit_method_begin_multicaret_edit>`. If this was the last :ref:`end_multicaret_edit<class_TextEdit_method_end_multicaret_edit>` and :ref:`merge_overlapping_carets<class_TextEdit_method_merge_overlapping_carets>` was called, carets will be merged.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_caret_column(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_caret_column>`

Returns the column the editing caret is at.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_caret_count() |const| :ref:`πŸ”—<class_TextEdit_method_get_caret_count>`

Returns the number of carets in this TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Vector2<class_Vector2>` get_caret_draw_pos(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_caret_draw_pos>`

Returns the caret pixel draw position.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`PackedInt32Array<class_PackedInt32Array>` get_caret_index_edit_order() :ref:`πŸ”—<class_TextEdit_method_get_caret_index_edit_order>`

Deprecated: Carets no longer need to be edited in any specific order. If the carets need to be sorted, use :ref:`get_sorted_carets<class_TextEdit_method_get_sorted_carets>` instead.

Returns a list of caret indexes in their edit order, this done from bottom to top. Edit order refers to the way actions such as :ref:`insert_text_at_caret<class_TextEdit_method_insert_text_at_caret>` are applied.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_caret_line(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_caret_line>`

Returns the line the editing caret is on.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_caret_wrap_index(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_caret_wrap_index>`

Returns the wrap index the editing caret is on.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_first_non_whitespace_column(line: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_first_non_whitespace_column>`

Returns the first column containing a non-whitespace character.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_first_visible_line() |const| :ref:`πŸ”—<class_TextEdit_method_get_first_visible_line>`

Returns the first visible line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_gutter_count() |const| :ref:`πŸ”—<class_TextEdit_method_get_gutter_count>`

Returns the number of gutters registered.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`String<class_String>` get_gutter_name(gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_gutter_name>`

Returns the name of the gutter at the given index.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`GutterType<enum_TextEdit_GutterType>` get_gutter_type(gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_gutter_type>`

Returns the type of the gutter at the given index. Gutters can contain icons, text, or custom visuals. See :ref:`GutterType<enum_TextEdit_GutterType>` for options.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_gutter_width(gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_gutter_width>`

Returns the width of the gutter at the given index.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`HScrollBar<class_HScrollBar>` get_h_scroll_bar() |const| :ref:`πŸ”—<class_TextEdit_method_get_h_scroll_bar>`

Returns the :ref:`HScrollBar<class_HScrollBar>` used by TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_indent_level(line: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_indent_level>`

Returns the number of spaces and tab * tab_size before the first char.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_last_full_visible_line() |const| :ref:`πŸ”—<class_TextEdit_method_get_last_full_visible_line>`

Returns the last visible line. Use :ref:`get_last_full_visible_line_wrap_index<class_TextEdit_method_get_last_full_visible_line_wrap_index>` for the wrap index.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_last_full_visible_line_wrap_index() |const| :ref:`πŸ”—<class_TextEdit_method_get_last_full_visible_line_wrap_index>`

Returns the last visible wrap index of the last visible line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_last_unhidden_line() |const| :ref:`πŸ”—<class_TextEdit_method_get_last_unhidden_line>`

Returns the last unhidden line in the entire TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`String<class_String>` get_line(line: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line>`

Returns the text of a specific line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Color<class_Color>` get_line_background_color(line: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_background_color>`

Returns the current background color of the line. Color(0, 0, 0, 0) is returned if no color is set.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Vector2i<class_Vector2i>` get_line_column_at_pos(position: :ref:`Vector2i<class_Vector2i>`, allow_out_of_bounds: :ref:`bool<class_bool>` = true) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_column_at_pos>`

Returns the line and column at the given position. In the returned vector, x is the column, y is the line. If allow_out_of_bounds is false and the position is not over the text, both vector values will be set to -1.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_line_count() |const| :ref:`πŸ”—<class_TextEdit_method_get_line_count>`

Returns the number of lines in the text.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Texture2D<class_Texture2D>` get_line_gutter_icon(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_gutter_icon>`

Returns the icon currently in gutter at line. This only works when the gutter type is :ref:`GUTTER_TYPE_ICON<class_TextEdit_constant_GUTTER_TYPE_ICON>` (see :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Color<class_Color>` get_line_gutter_item_color(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_gutter_item_color>`

Returns the color currently in gutter at line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Variant<class_Variant>` get_line_gutter_metadata(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_gutter_metadata>`

Returns the metadata currently in gutter at line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`String<class_String>` get_line_gutter_text(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_gutter_text>`

Returns the text currently in gutter at line. This only works when the gutter type is :ref:`GUTTER_TYPE_STRING<class_TextEdit_constant_GUTTER_TYPE_STRING>` (see :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_line_height() |const| :ref:`πŸ”—<class_TextEdit_method_get_line_height>`

Returns the maximum value of the line height among all lines.

Note: The return value is influenced by :ref:`line_spacing<class_TextEdit_theme_constant_line_spacing>` and :ref:`font_size<class_TextEdit_theme_font_size_font_size>`. And it will not be less than 1.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Array<class_Array>`[:ref:`Vector2i<class_Vector2i>`] get_line_ranges_from_carets(only_selections: :ref:`bool<class_bool>` = false, merge_adjacent: :ref:`bool<class_bool>` = true) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_ranges_from_carets>`

Returns an :ref:`Array<class_Array>` of line ranges where x is the first line and y is the last line. All lines within these ranges will have a caret on them or be part of a selection. Each line will only be part of one line range, even if it has multiple carets on it.

If a selection's end column (:ref:`get_selection_to_column<class_TextEdit_method_get_selection_to_column>`) is at column 0, that line will not be included. If a selection begins on the line after another selection ends and merge_adjacent is true, or they begin and end on the same line, one line range will include both selections.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_line_width(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = -1) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_width>`

Returns the width in pixels of the wrap_index on line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_line_wrap_count(line: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_wrap_count>`

Returns the number of times the given line is wrapped.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_line_wrap_index_at_column(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_wrap_index_at_column>`

Returns the wrap index of the given line column.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`PackedStringArray<class_PackedStringArray>` get_line_wrapped_text(line: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_line_wrapped_text>`

Returns an array of :ref:`String<class_String>`s representing each wrapped index.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Vector2<class_Vector2>` get_local_mouse_pos() |const| :ref:`πŸ”—<class_TextEdit_method_get_local_mouse_pos>`

Returns the local mouse position adjusted for the text direction.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`PopupMenu<class_PopupMenu>` get_menu() |const| :ref:`πŸ”—<class_TextEdit_method_get_menu>`

Returns the :ref:`PopupMenu<class_PopupMenu>` of this TextEdit. By default, this menu is displayed when right-clicking on the TextEdit.

You can add custom menu items or remove standard ones. Make sure your IDs don't conflict with the standard ones (see :ref:`MenuItems<enum_TextEdit_MenuItems>`). For example:

.. tabs::

 .. code-tab:: gdscript

    func _ready():
        var menu = get_menu()
        # Remove all items after "Redo".
        menu.item_count = menu.get_item_index(MENU_REDO) + 1
        # Add custom items.
        menu.add_separator()
        menu.add_item("Insert Date", MENU_MAX + 1)
        # Connect callback.
        menu.id_pressed.connect(_on_item_pressed)

    func _on_item_pressed(id):
        if id == MENU_MAX + 1:
            insert_text_at_caret(Time.get_date_string_from_system())

 .. code-tab:: csharp

    public override void _Ready()
    {
        var menu = GetMenu();
        // Remove all items after "Redo".
        menu.ItemCount = menu.GetItemIndex(TextEdit.MenuItems.Redo) + 1;
        // Add custom items.
        menu.AddSeparator();
        menu.AddItem("Insert Date", TextEdit.MenuItems.Max + 1);
        // Add event handler.
        menu.IdPressed += OnItemPressed;
    }

    public void OnItemPressed(int id)
    {
        if (id == TextEdit.MenuItems.Max + 1)
        {
            InsertTextAtCaret(Time.GetDateStringFromSystem());
        }
    }



Warning: This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`Window.visible<class_Window_property_visible>` property.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_minimap_line_at_pos(position: :ref:`Vector2i<class_Vector2i>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_minimap_line_at_pos>`

Returns the equivalent minimap line at position.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_minimap_visible_lines() |const| :ref:`πŸ”—<class_TextEdit_method_get_minimap_visible_lines>`

Returns the number of lines that may be drawn on the minimap.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Vector2i<class_Vector2i>` get_next_visible_line_index_offset_from(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>`, visible_amount: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_next_visible_line_index_offset_from>`

Similar to :ref:`get_next_visible_line_offset_from<class_TextEdit_method_get_next_visible_line_offset_from>`, but takes into account the line wrap indexes. In the returned vector, x is the line, y is the wrap index.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_next_visible_line_offset_from(line: :ref:`int<class_int>`, visible_amount: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_next_visible_line_offset_from>`

Returns the count to the next visible line from line to line + visible_amount. Can also count backwards. For example if a TextEdit has 5 lines with lines 2 and 3 hidden, calling this with line = 1, visible_amount = 1 would return 3.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Vector2i<class_Vector2i>` get_pos_at_line_column(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_pos_at_line_column>`

Returns the local position for the given line and column. If x or y of the returned vector equal -1, the position is outside of the viewable area of the control.

Note: The Y position corresponds to the bottom side of the line. Use :ref:`get_rect_at_line_column<class_TextEdit_method_get_rect_at_line_column>` to get the top side position.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Rect2i<class_Rect2i>` get_rect_at_line_column(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_rect_at_line_column>`

Returns the local position and size for the grapheme at the given line and column. If x or y position of the returned rect equal -1, the position is outside of the viewable area of the control.

Note: The Y position of the returned rect corresponds to the top side of the line, unlike :ref:`get_pos_at_line_column<class_TextEdit_method_get_pos_at_line_column>` which returns the bottom side.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_saved_version() |const| :ref:`πŸ”—<class_TextEdit_method_get_saved_version>`

Returns the last tagged saved version from :ref:`tag_saved_version<class_TextEdit_method_tag_saved_version>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`float<class_float>` get_scroll_pos_for_line(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_scroll_pos_for_line>`

Returns the scroll position for wrap_index of line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`String<class_String>` get_selected_text(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_get_selected_text>`

Returns the text inside the selection of a caret, or all the carets if caret_index is its default value -1.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_at_line_column(line: :ref:`int<class_int>`, column: :ref:`int<class_int>`, include_edges: :ref:`bool<class_bool>` = true, only_selections: :ref:`bool<class_bool>` = true) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_at_line_column>`

Returns the caret index of the selection at the given line and column, or -1 if there is none.

If include_edges is false, the position must be inside the selection and not at either end. If only_selections is false, carets without a selection will also be considered.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_column(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_column>`

Deprecated: Use :ref:`get_selection_origin_column<class_TextEdit_method_get_selection_origin_column>` instead.

Returns the original start column of the selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_from_column(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_from_column>`

Returns the selection begin column. Returns the caret column if there is no selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_from_line(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_from_line>`

Returns the selection begin line. Returns the caret line if there is no selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_line(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_line>`

Deprecated: Use :ref:`get_selection_origin_line<class_TextEdit_method_get_selection_origin_line>` instead.

Returns the original start line of the selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`SelectionMode<enum_TextEdit_SelectionMode>` get_selection_mode() |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_mode>`

Returns the current selection mode.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_origin_column(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_origin_column>`

Returns the origin column of the selection. This is the opposite end from the caret.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_origin_line(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_origin_line>`

Returns the origin line of the selection. This is the opposite end from the caret.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_to_column(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_to_column>`

Returns the selection end column. Returns the caret column if there is no selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_selection_to_line(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_get_selection_to_line>`

Returns the selection end line. Returns the caret line if there is no selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`PackedInt32Array<class_PackedInt32Array>` get_sorted_carets(include_ignored_carets: :ref:`bool<class_bool>` = false) |const| :ref:`πŸ”—<class_TextEdit_method_get_sorted_carets>`

Returns the carets sorted by selection beginning from lowest line and column to highest (from top to bottom of text).

If include_ignored_carets is false, carets from :ref:`multicaret_edit_ignore_caret<class_TextEdit_method_multicaret_edit_ignore_caret>` will be ignored.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_tab_size() |const| :ref:`πŸ”—<class_TextEdit_method_get_tab_size>`

Returns the TextEdit's' tab size.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_total_gutter_width() |const| :ref:`πŸ”—<class_TextEdit_method_get_total_gutter_width>`

Returns the total width of all gutters and internal padding.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_total_visible_line_count() |const| :ref:`πŸ”—<class_TextEdit_method_get_total_visible_line_count>`

Returns the number of lines that may be drawn.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`VScrollBar<class_VScrollBar>` get_v_scroll_bar() |const| :ref:`πŸ”—<class_TextEdit_method_get_v_scroll_bar>`

Returns the :ref:`VScrollBar<class_VScrollBar>` of the TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_version() |const| :ref:`πŸ”—<class_TextEdit_method_get_version>`

Returns the current version of the TextEdit. The version is a count of recorded operations by the undo/redo history.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_visible_line_count() |const| :ref:`πŸ”—<class_TextEdit_method_get_visible_line_count>`

Returns the number of visible lines, including wrapped text.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`int<class_int>` get_visible_line_count_in_range(from_line: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_visible_line_count_in_range>`

Returns the total number of visible + wrapped lines between the two lines.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`String<class_String>` get_word_at_pos(position: :ref:`Vector2<class_Vector2>`) |const| :ref:`πŸ”—<class_TextEdit_method_get_word_at_pos>`

Returns the word at position.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`String<class_String>` get_word_under_caret(caret_index: :ref:`int<class_int>` = -1) |const| :ref:`πŸ”—<class_TextEdit_method_get_word_under_caret>`

Returns a :ref:`String<class_String>` text with the word under the caret's location.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` has_ime_text() |const| :ref:`πŸ”—<class_TextEdit_method_has_ime_text>`

Returns true if the user has text in the Input Method Editor (IME).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` has_redo() |const| :ref:`πŸ”—<class_TextEdit_method_has_redo>`

Returns true if a "redo" action is available.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` has_selection(caret_index: :ref:`int<class_int>` = -1) |const| :ref:`πŸ”—<class_TextEdit_method_has_selection>`

Returns true if the user has selected text.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` has_undo() |const| :ref:`πŸ”—<class_TextEdit_method_has_undo>`

Returns true if an "undo" action is available.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| insert_line_at(line: :ref:`int<class_int>`, text: :ref:`String<class_String>`) :ref:`πŸ”—<class_TextEdit_method_insert_line_at>`

Inserts a new line with text at line.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| insert_text(text: :ref:`String<class_String>`, line: :ref:`int<class_int>`, column: :ref:`int<class_int>`, before_selection_begin: :ref:`bool<class_bool>` = true, before_selection_end: :ref:`bool<class_bool>` = false) :ref:`πŸ”—<class_TextEdit_method_insert_text>`

Inserts the text at line and column.

If before_selection_begin is true, carets and selections that begin at line and column will moved to the end of the inserted text, along with all carets after it.

If before_selection_end is true, selections that end at line and column will be extended to the end of the inserted text. These parameters can be used to insert text inside of or outside of selections.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| insert_text_at_caret(text: :ref:`String<class_String>`, caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_insert_text_at_caret>`

Insert the specified text at the caret position.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_caret_after_selection_origin(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_is_caret_after_selection_origin>`

Returns true if the caret of the selection is after the selection origin. This can be used to determine the direction of the selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_caret_visible(caret_index: :ref:`int<class_int>` = 0) |const| :ref:`πŸ”—<class_TextEdit_method_is_caret_visible>`

Returns true if the caret is visible on the screen.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_dragging_cursor() |const| :ref:`πŸ”—<class_TextEdit_method_is_dragging_cursor>`

Returns true if the user is dragging their mouse for scrolling, selecting, or text dragging.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_gutter_clickable(gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_is_gutter_clickable>`

Returns whether the gutter is clickable.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_gutter_drawn(gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_is_gutter_drawn>`

Returns whether the gutter is currently drawn.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_gutter_overwritable(gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_is_gutter_overwritable>`

Returns whether the gutter is overwritable.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_in_mulitcaret_edit() |const| :ref:`πŸ”—<class_TextEdit_method_is_in_mulitcaret_edit>`

Returns true if a :ref:`begin_multicaret_edit<class_TextEdit_method_begin_multicaret_edit>` has been called and :ref:`end_multicaret_edit<class_TextEdit_method_end_multicaret_edit>` has not yet been called.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_line_gutter_clickable(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_is_line_gutter_clickable>`

Returns whether the gutter on the given line is clickable.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_line_wrapped(line: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_is_line_wrapped>`

Returns if the given line is wrapped.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_menu_visible() |const| :ref:`πŸ”—<class_TextEdit_method_is_menu_visible>`

Returns whether the menu is visible. Use this instead of get_menu().visible to improve performance (so the creation of the menu is avoided).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_mouse_over_selection(edges: :ref:`bool<class_bool>`, caret_index: :ref:`int<class_int>` = -1) |const| :ref:`πŸ”—<class_TextEdit_method_is_mouse_over_selection>`

Returns whether the mouse is over selection. If edges is true, the edges are considered part of the selection.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` is_overtype_mode_enabled() |const| :ref:`πŸ”—<class_TextEdit_method_is_overtype_mode_enabled>`

Returns whether the user is in overtype mode.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| menu_option(option: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_menu_option>`

Executes a given action as defined in the :ref:`MenuItems<enum_TextEdit_MenuItems>` enum.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| merge_gutters(from_line: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_merge_gutters>`

Merge the gutters from from_line into to_line. Only overwritable gutters will be copied.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| merge_overlapping_carets() :ref:`πŸ”—<class_TextEdit_method_merge_overlapping_carets>`

Merges any overlapping carets. Will favor the newest caret, or the caret with a selection.

If :ref:`is_in_mulitcaret_edit<class_TextEdit_method_is_in_mulitcaret_edit>` is true, the merge will be queued to happen at the end of the multicaret edit. See :ref:`begin_multicaret_edit<class_TextEdit_method_begin_multicaret_edit>` and :ref:`end_multicaret_edit<class_TextEdit_method_end_multicaret_edit>`.

Note: This is not called when a caret changes position but after certain actions, so it is possible to get into a state where carets overlap.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`bool<class_bool>` multicaret_edit_ignore_caret(caret_index: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_multicaret_edit_ignore_caret>`

Returns true if the given caret_index should be ignored as part of a multicaret edit. See :ref:`begin_multicaret_edit<class_TextEdit_method_begin_multicaret_edit>` and :ref:`end_multicaret_edit<class_TextEdit_method_end_multicaret_edit>`. Carets that should be ignored are ones that were part of removed text and will likely be merged at the end of the edit, or carets that were added during the edit.

It is recommended to continue within a loop iterating on multiple carets if a caret should be ignored.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| paste(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_paste>`

Paste at the current location. Can be overridden with :ref:`_paste<class_TextEdit_private_method__paste>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| paste_primary_clipboard(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_paste_primary_clipboard>`

Pastes the primary clipboard.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| redo() :ref:`πŸ”—<class_TextEdit_method_redo>`

Perform redo operation.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| remove_caret(caret: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_remove_caret>`

Removes the given caret index.

Note: This can result in adjustment of all other caret indices.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| remove_gutter(gutter: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_remove_gutter>`

Removes the gutter from this TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| remove_line_at(line: :ref:`int<class_int>`, move_carets_down: :ref:`bool<class_bool>` = true) :ref:`πŸ”—<class_TextEdit_method_remove_line_at>`

Removes the line of text at line. Carets on this line will attempt to match their previous visual x position.

If move_carets_down is true carets will move to the next line down, otherwise carets will move up.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| remove_secondary_carets() :ref:`πŸ”—<class_TextEdit_method_remove_secondary_carets>`

Removes all additional carets.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| remove_text(from_line: :ref:`int<class_int>`, from_column: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`, to_column: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_remove_text>`

Removes text between the given positions.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

:ref:`Vector2i<class_Vector2i>` search(text: :ref:`String<class_String>`, flags: :ref:`int<class_int>`, from_line: :ref:`int<class_int>`, from_column: :ref:`int<class_int>`) |const| :ref:`πŸ”—<class_TextEdit_method_search>`

Perform a search inside the text. Search flags can be specified in the :ref:`SearchFlags<enum_TextEdit_SearchFlags>` enum.

In the returned vector, x is the column, y is the line. If no results are found, both are equal to -1.

.. tabs::

 .. code-tab:: gdscript

    var result = search("print", SEARCH_WHOLE_WORDS, 0, 0)
    if result.x != -1:
        # Result found.
        var line_number = result.y
        var column_number = result.x

 .. code-tab:: csharp

    Vector2I result = Search("print", (uint)TextEdit.SearchFlags.WholeWords, 0, 0);
    if (result.X != -1)
    {
        // Result found.
        int lineNumber = result.Y;
        int columnNumber = result.X;
    }



.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| select(origin_line: :ref:`int<class_int>`, origin_column: :ref:`int<class_int>`, caret_line: :ref:`int<class_int>`, caret_column: :ref:`int<class_int>`, caret_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_select>`

Selects text from origin_line and origin_column to caret_line and caret_column for the given caret_index. This moves the selection origin and the caret. If the positions are the same, the selection will be deselected.

If :ref:`selecting_enabled<class_TextEdit_property_selecting_enabled>` is false, no selection will occur.

Note: If supporting multiple carets this will not check for any overlap. See :ref:`merge_overlapping_carets<class_TextEdit_method_merge_overlapping_carets>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| select_all() :ref:`πŸ”—<class_TextEdit_method_select_all>`

Select all the text.

If :ref:`selecting_enabled<class_TextEdit_property_selecting_enabled>` is false, no selection will occur.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| select_word_under_caret(caret_index: :ref:`int<class_int>` = -1) :ref:`πŸ”—<class_TextEdit_method_select_word_under_caret>`

Selects the word under the caret.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_caret_column(column: :ref:`int<class_int>`, adjust_viewport: :ref:`bool<class_bool>` = true, caret_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_set_caret_column>`

Moves the caret to the specified column index.

If adjust_viewport is true, the viewport will center at the caret position after the move occurs.

Note: If supporting multiple carets this will not check for any overlap. See :ref:`merge_overlapping_carets<class_TextEdit_method_merge_overlapping_carets>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_caret_line(line: :ref:`int<class_int>`, adjust_viewport: :ref:`bool<class_bool>` = true, can_be_hidden: :ref:`bool<class_bool>` = true, wrap_index: :ref:`int<class_int>` = 0, caret_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_set_caret_line>`

Moves the caret to the specified line index. The caret column will be moved to the same visual position it was at the last time :ref:`set_caret_column<class_TextEdit_method_set_caret_column>` was called, or clamped to the end of the line.

If adjust_viewport is true, the viewport will center at the caret position after the move occurs.

If can_be_hidden is true, the specified line can be hidden.

If wrap_index is -1, the caret column will be clamped to the line's length. If wrap_index is greater than -1, the column will be moved to attempt to match the visual x position on the line's wrap_index to the position from the last time :ref:`set_caret_column<class_TextEdit_method_set_caret_column>` was called.

Note: If supporting multiple carets this will not check for any overlap. See :ref:`merge_overlapping_carets<class_TextEdit_method_merge_overlapping_carets>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_gutter_clickable(gutter: :ref:`int<class_int>`, clickable: :ref:`bool<class_bool>`) :ref:`πŸ”—<class_TextEdit_method_set_gutter_clickable>`

Sets the gutter as clickable. This will change the mouse cursor to a pointing hand when hovering over the gutter.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_gutter_custom_draw(column: :ref:`int<class_int>`, draw_callback: :ref:`Callable<class_Callable>`) :ref:`πŸ”—<class_TextEdit_method_set_gutter_custom_draw>`

Set a custom draw method for the gutter. The callback method must take the following args: line: int, gutter: int, Area: Rect2. This only works when the gutter type is :ref:`GUTTER_TYPE_CUSTOM<class_TextEdit_constant_GUTTER_TYPE_CUSTOM>` (see :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_gutter_draw(gutter: :ref:`int<class_int>`, draw: :ref:`bool<class_bool>`) :ref:`πŸ”—<class_TextEdit_method_set_gutter_draw>`

Sets whether the gutter should be drawn.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_gutter_name(gutter: :ref:`int<class_int>`, name: :ref:`String<class_String>`) :ref:`πŸ”—<class_TextEdit_method_set_gutter_name>`

Sets the name of the gutter.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_gutter_overwritable(gutter: :ref:`int<class_int>`, overwritable: :ref:`bool<class_bool>`) :ref:`πŸ”—<class_TextEdit_method_set_gutter_overwritable>`

Sets the gutter to overwritable. See :ref:`merge_gutters<class_TextEdit_method_merge_gutters>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_gutter_type(gutter: :ref:`int<class_int>`, type: :ref:`GutterType<enum_TextEdit_GutterType>`) :ref:`πŸ”—<class_TextEdit_method_set_gutter_type>`

Sets the type of gutter. Gutters can contain icons, text, or custom visuals. See :ref:`GutterType<enum_TextEdit_GutterType>` for options.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_gutter_width(gutter: :ref:`int<class_int>`, width: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_set_gutter_width>`

Set the width of the gutter.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line(line: :ref:`int<class_int>`, new_text: :ref:`String<class_String>`) :ref:`πŸ”—<class_TextEdit_method_set_line>`

Sets the text for a specific line.

Carets on the line will attempt to keep their visual x position.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_as_center_visible(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_set_line_as_center_visible>`

Positions the wrap_index of line at the center of the viewport.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_as_first_visible(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_set_line_as_first_visible>`

Positions the wrap_index of line at the top of the viewport.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_as_last_visible(line: :ref:`int<class_int>`, wrap_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_set_line_as_last_visible>`

Positions the wrap_index of line at the bottom of the viewport.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_background_color(line: :ref:`int<class_int>`, color: :ref:`Color<class_Color>`) :ref:`πŸ”—<class_TextEdit_method_set_line_background_color>`

Sets the current background color of the line. Set to Color(0, 0, 0, 0) for no color.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_gutter_clickable(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, clickable: :ref:`bool<class_bool>`) :ref:`πŸ”—<class_TextEdit_method_set_line_gutter_clickable>`

If clickable is true, makes the gutter on line clickable. See :ref:`gutter_clicked<class_TextEdit_signal_gutter_clicked>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_gutter_icon(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, icon: :ref:`Texture2D<class_Texture2D>`) :ref:`πŸ”—<class_TextEdit_method_set_line_gutter_icon>`

Sets the icon for gutter on line to icon. This only works when the gutter type is :ref:`GUTTER_TYPE_ICON<class_TextEdit_constant_GUTTER_TYPE_ICON>` (see :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_gutter_item_color(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, color: :ref:`Color<class_Color>`) :ref:`πŸ”—<class_TextEdit_method_set_line_gutter_item_color>`

Sets the color for gutter on line to color.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_gutter_metadata(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, metadata: :ref:`Variant<class_Variant>`) :ref:`πŸ”—<class_TextEdit_method_set_line_gutter_metadata>`

Sets the metadata for gutter on line to metadata.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_line_gutter_text(line: :ref:`int<class_int>`, gutter: :ref:`int<class_int>`, text: :ref:`String<class_String>`) :ref:`πŸ”—<class_TextEdit_method_set_line_gutter_text>`

Sets the text for gutter on line to text. This only works when the gutter type is :ref:`GUTTER_TYPE_STRING<class_TextEdit_constant_GUTTER_TYPE_STRING>` (see :ref:`set_gutter_type<class_TextEdit_method_set_gutter_type>`).

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_overtype_mode_enabled(enabled: :ref:`bool<class_bool>`) :ref:`πŸ”—<class_TextEdit_method_set_overtype_mode_enabled>`

If true, sets the user into overtype mode. When the user types in this mode, it will override existing text.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_search_flags(flags: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_set_search_flags>`

Sets the search flags. This is used with :ref:`set_search_text<class_TextEdit_method_set_search_text>` to highlight occurrences of the searched text. Search flags can be specified from the :ref:`SearchFlags<enum_TextEdit_SearchFlags>` enum.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_search_text(search_text: :ref:`String<class_String>`) :ref:`πŸ”—<class_TextEdit_method_set_search_text>`

Sets the search text. See :ref:`set_search_flags<class_TextEdit_method_set_search_flags>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_selection_mode(mode: :ref:`SelectionMode<enum_TextEdit_SelectionMode>`) :ref:`πŸ”—<class_TextEdit_method_set_selection_mode>`

Sets the current selection mode.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_selection_origin_column(column: :ref:`int<class_int>`, caret_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_set_selection_origin_column>`

Sets the selection origin column to the column for the given caret_index. If the selection origin is moved to the caret position, the selection will deselect.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_selection_origin_line(line: :ref:`int<class_int>`, can_be_hidden: :ref:`bool<class_bool>` = true, wrap_index: :ref:`int<class_int>` = -1, caret_index: :ref:`int<class_int>` = 0) :ref:`πŸ”—<class_TextEdit_method_set_selection_origin_line>`

Sets the selection origin line to the line for the given caret_index. If the selection origin is moved to the caret position, the selection will deselect.

If can_be_hidden is false, The line will be set to the nearest unhidden line below or above.

If wrap_index is -1, the selection origin column will be clamped to the line's length. If wrap_index is greater than -1, the column will be moved to attempt to match the visual x position on the line's wrap_index to the position from the last time :ref:`set_selection_origin_column<class_TextEdit_method_set_selection_origin_column>` or :ref:`select<class_TextEdit_method_select>` was called.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_tab_size(size: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_set_tab_size>`

Sets the tab size for the TextEdit to use.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| set_tooltip_request_func(callback: :ref:`Callable<class_Callable>`) :ref:`πŸ”—<class_TextEdit_method_set_tooltip_request_func>`

Provide custom tooltip text. The callback method must take the following args: hovered_word: String.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| skip_selection_for_next_occurrence() :ref:`πŸ”—<class_TextEdit_method_skip_selection_for_next_occurrence>`

Moves a selection and a caret for the next occurrence of the current selection. If there is no active selection, moves to the next occurrence of the word under caret.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| start_action(action: :ref:`EditAction<enum_TextEdit_EditAction>`) :ref:`πŸ”—<class_TextEdit_method_start_action>`

Starts an action, will end the current action if action is different.

An action will also end after a call to :ref:`end_action<class_TextEdit_method_end_action>`, after :ref:`ProjectSettings.gui/timers/text_edit_idle_detect_sec<class_ProjectSettings_property_gui/timers/text_edit_idle_detect_sec>` is triggered or a new undoable step outside the :ref:`start_action<class_TextEdit_method_start_action>` and :ref:`end_action<class_TextEdit_method_end_action>` calls.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| swap_lines(from_line: :ref:`int<class_int>`, to_line: :ref:`int<class_int>`) :ref:`πŸ”—<class_TextEdit_method_swap_lines>`

Swaps the two lines. Carets will be swapped with the lines.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| tag_saved_version() :ref:`πŸ”—<class_TextEdit_method_tag_saved_version>`

Tag the current version as saved.

.. rst-class:: classref-item-separator


.. rst-class:: classref-method

|void| undo() :ref:`πŸ”—<class_TextEdit_method_undo>`

Perform undo operation.

.. rst-class:: classref-section-separator


.. rst-class:: classref-descriptions-group

Theme Property Descriptions

.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` background_color = Color(0, 0, 0, 0) :ref:`πŸ”—<class_TextEdit_theme_color_background_color>`

Sets the background :ref:`Color<class_Color>` of this TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` caret_background_color = Color(0, 0, 0, 1) :ref:`πŸ”—<class_TextEdit_theme_color_caret_background_color>`

:ref:`Color<class_Color>` of the text behind the caret when using a block caret.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` caret_color = Color(0.875, 0.875, 0.875, 1) :ref:`πŸ”—<class_TextEdit_theme_color_caret_color>`

:ref:`Color<class_Color>` of the caret. This can be set to a fully transparent color to hide the caret entirely.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` current_line_color = Color(0.25, 0.25, 0.26, 0.8) :ref:`πŸ”—<class_TextEdit_theme_color_current_line_color>`

Background :ref:`Color<class_Color>` of the line containing the caret.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` font_color = Color(0.875, 0.875, 0.875, 1) :ref:`πŸ”—<class_TextEdit_theme_color_font_color>`

Sets the font :ref:`Color<class_Color>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` font_outline_color = Color(0, 0, 0, 1) :ref:`πŸ”—<class_TextEdit_theme_color_font_outline_color>`

The tint of text outline of the TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` font_placeholder_color = Color(0.875, 0.875, 0.875, 0.6) :ref:`πŸ”—<class_TextEdit_theme_color_font_placeholder_color>`

Font color for :ref:`placeholder_text<class_TextEdit_property_placeholder_text>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` font_readonly_color = Color(0.875, 0.875, 0.875, 0.5) :ref:`πŸ”—<class_TextEdit_theme_color_font_readonly_color>`

Sets the font :ref:`Color<class_Color>` when :ref:`editable<class_TextEdit_property_editable>` is disabled.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` font_selected_color = Color(0, 0, 0, 0) :ref:`πŸ”—<class_TextEdit_theme_color_font_selected_color>`

Sets the :ref:`Color<class_Color>` of the selected text. If equal to Color(0, 0, 0, 0), it will be ignored.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` search_result_border_color = Color(0.3, 0.3, 0.3, 0.4) :ref:`πŸ”—<class_TextEdit_theme_color_search_result_border_color>`

:ref:`Color<class_Color>` of the border around text that matches the search query.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` search_result_color = Color(0.3, 0.3, 0.3, 1) :ref:`πŸ”—<class_TextEdit_theme_color_search_result_color>`

:ref:`Color<class_Color>` behind the text that matches the search query.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` selection_color = Color(0.5, 0.5, 0.5, 1) :ref:`πŸ”—<class_TextEdit_theme_color_selection_color>`

Sets the highlight :ref:`Color<class_Color>` of text selections.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Color<class_Color>` word_highlighted_color = Color(0.5, 0.5, 0.5, 0.25) :ref:`πŸ”—<class_TextEdit_theme_color_word_highlighted_color>`

Sets the highlight :ref:`Color<class_Color>` of multiple occurrences. :ref:`highlight_all_occurrences<class_TextEdit_property_highlight_all_occurrences>` has to be enabled.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`int<class_int>` caret_width = 1 :ref:`πŸ”—<class_TextEdit_theme_constant_caret_width>`

The caret's width in pixels. Greater values can be used to improve accessibility by ensuring the caret is easily visible, or to ensure consistency with a large font size. If set to 0 or lower, the caret width is automatically set to 1 pixel and multiplied by the display scaling factor.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`int<class_int>` line_spacing = 4 :ref:`πŸ”—<class_TextEdit_theme_constant_line_spacing>`

Sets the spacing between the lines.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`int<class_int>` outline_size = 0 :ref:`πŸ”—<class_TextEdit_theme_constant_outline_size>`

The size of the text outline.

Note: If using a font with :ref:`FontFile.multichannel_signed_distance_field<class_FontFile_property_multichannel_signed_distance_field>` enabled, its :ref:`FontFile.msdf_pixel_range<class_FontFile_property_msdf_pixel_range>` must be set to at least twice the value of :ref:`outline_size<class_TextEdit_theme_constant_outline_size>` for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Font<class_Font>` font :ref:`πŸ”—<class_TextEdit_theme_font_font>`

Sets the default :ref:`Font<class_Font>`.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`int<class_int>` font_size :ref:`πŸ”—<class_TextEdit_theme_font_size_font_size>`

Sets default font size.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Texture2D<class_Texture2D>` space :ref:`πŸ”—<class_TextEdit_theme_icon_space>`

Sets a custom :ref:`Texture2D<class_Texture2D>` for space text characters.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`Texture2D<class_Texture2D>` tab :ref:`πŸ”—<class_TextEdit_theme_icon_tab>`

Sets a custom :ref:`Texture2D<class_Texture2D>` for tab text characters.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`StyleBox<class_StyleBox>` focus :ref:`πŸ”—<class_TextEdit_theme_style_focus>`

Sets the :ref:`StyleBox<class_StyleBox>` when in focus. The :ref:`focus<class_TextEdit_theme_style_focus>` :ref:`StyleBox<class_StyleBox>` is displayed over the base :ref:`StyleBox<class_StyleBox>`, so a partially transparent :ref:`StyleBox<class_StyleBox>` should be used to ensure the base :ref:`StyleBox<class_StyleBox>` remains visible. A :ref:`StyleBox<class_StyleBox>` that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a :ref:`StyleBoxEmpty<class_StyleBoxEmpty>` resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`StyleBox<class_StyleBox>` normal :ref:`πŸ”—<class_TextEdit_theme_style_normal>`

Sets the :ref:`StyleBox<class_StyleBox>` of this TextEdit.

.. rst-class:: classref-item-separator


.. rst-class:: classref-themeproperty

:ref:`StyleBox<class_StyleBox>` read_only :ref:`πŸ”—<class_TextEdit_theme_style_read_only>`

Sets the :ref:`StyleBox<class_StyleBox>` of this TextEdit when :ref:`editable<class_TextEdit_property_editable>` is disabled.