CodeEdit ​
Inherits: TextEdit < Control < CanvasItem < Node < Object
A multiline text editor designed for editing code.
Description
CodeEdit is a specialized TextEdit designed for editing plain text code files. It has many features commonly found in code editors such as line numbers, line folding, code completion, indent management, and string/comment management.
Note: Regardless of locale, CodeEdit will by default always use left-to-right text direction to correctly display source code.
Properties
false | ||
false | ||
{ "\"": "\"", "'": "'", "(": ")", "[": "]", "{": "}" } | ||
false | ||
[] | ||
[] | ||
["' '", "\" \""] | ||
false | ||
false | ||
false | ||
false | ||
false | ||
false | ||
false | ||
[":", "{", "[", "("] | ||
4 | ||
false | ||
layout_direction | 2 (overrides Control) | |
false | ||
[] | ||
false | ||
text_direction | 1 (overrides TextEdit) |
Methods
Theme Properties
Color(0.5, 0.64, 1, 0.8) | ||
Color(1, 0.2, 0.2, 1) | ||
Color(0.9, 0.29, 0.3, 1) | ||
Color(0.8, 0.8, 0.8, 0.8) | ||
Color(0.17, 0.16, 0.2, 1) | ||
Color(0.87, 0.87, 0.87, 0.13) | ||
Color(1, 1, 1, 0.29) | ||
Color(1, 1, 1, 0.4) | ||
Color(0.26, 0.26, 0.27, 1) | ||
Color(0.98, 0.89, 0.27, 1) | ||
Color(0.68, 0.46, 0.77, 0.2) | ||
Color(0.3, 0.5, 0.8, 0.1) | ||
Color(0.67, 0.67, 0.67, 0.4) | ||
7 | ||
50 | ||
6 | ||
Signals
breakpoint_toggled(line: int) 🔗
Emitted when a breakpoint is added or removed from a line. If the line is moved via backspace a removed is emitted at the old line.
code_completion_requested() 🔗
Emitted when the user requests code completion.
symbol_lookup(symbol: String, line: int, column: int) 🔗
Emitted when the user has clicked on a valid symbol.
symbol_validate(symbol: String) 🔗
Emitted when the user hovers over a symbol. The symbol should be validated and responded to, by calling set_symbol_lookup_word_as_valid.
Enumerations
enum CodeCompletionKind: 🔗
CodeCompletionKind KIND_CLASS = 0
Marks the option as a class.
CodeCompletionKind KIND_FUNCTION = 1
Marks the option as a function.
CodeCompletionKind KIND_SIGNAL = 2
Marks the option as a Godot signal.
CodeCompletionKind KIND_VARIABLE = 3
Marks the option as a variable.
CodeCompletionKind KIND_MEMBER = 4
Marks the option as a member.
CodeCompletionKind KIND_ENUM = 5
Marks the option as an enum entry.
CodeCompletionKind KIND_CONSTANT = 6
Marks the option as a constant.
CodeCompletionKind KIND_NODE_PATH = 7
Marks the option as a Godot node path.
CodeCompletionKind KIND_FILE_PATH = 8
Marks the option as a file path.
CodeCompletionKind KIND_PLAIN_TEXT = 9
Marks the option as unclassified or plain text.
enum CodeCompletionLocation: 🔗
CodeCompletionLocation LOCATION_LOCAL = 0
The option is local to the location of the code completion query - e.g. a local variable. Subsequent value of location represent options from the outer class, the exact value represent how far they are (in terms of inner classes).
CodeCompletionLocation LOCATION_PARENT_MASK = 256
The option is from the containing class or a parent class, relative to the location of the code completion query. Perform a bitwise OR with the class depth (e.g. 0
for the local class, 1
for the parent, 2
for the grandparent, etc.) to store the depth of an option in the class or a parent class.
CodeCompletionLocation LOCATION_OTHER_USER_CODE = 512
The option is from user code which is not local and not in a derived class (e.g. Autoload Singletons).
CodeCompletionLocation LOCATION_OTHER = 1024
The option is from other engine code, not covered by the other enum constants - e.g. built-in classes.
Property Descriptions
bool auto_brace_completion_enabled = false 🔗
Sets whether brace pairs should be autocompleted.
bool auto_brace_completion_highlight_matching = false 🔗
Highlight mismatching brace pairs.
Dictionary auto_brace_completion_pairs = { "\"": "\"", "'": "'", "(": ")", "[": "]", "{": "}" } 🔗
void set_auto_brace_completion_pairs(value: Dictionary)
Dictionary get_auto_brace_completion_pairs()
Sets the brace pairs to be autocompleted.
bool code_completion_enabled = false 🔗
Sets whether code completion is allowed.
Array[String] code_completion_prefixes = [] 🔗
Sets prefixes that will trigger code completion.
Array[String] delimiter_comments = [] 🔗
Sets the comment delimiters. All existing comment delimiters will be removed.
Array[String] delimiter_strings = ["' '", "\" \""] 🔗
Sets the string delimiters. All existing string delimiters will be removed.
bool gutters_draw_bookmarks = false 🔗
Sets if bookmarked should be drawn in the gutter. This gutter is shared with breakpoints and executing lines.
bool gutters_draw_breakpoints_gutter = false 🔗
Sets if breakpoints should be drawn in the gutter. This gutter is shared with bookmarks and executing lines.
bool gutters_draw_executing_lines = false 🔗
Sets if executing lines should be marked in the gutter. This gutter is shared with breakpoints and bookmarks lines.
bool gutters_draw_fold_gutter = false 🔗
Sets if foldable lines icons should be drawn in the gutter.
bool gutters_draw_line_numbers = false 🔗
Sets if line numbers should be drawn in the gutter.
bool gutters_zero_pad_line_numbers = false 🔗
Sets if line numbers drawn in the gutter are zero padded.
bool indent_automatic = false 🔗
Sets whether automatic indent are enabled, this will add an extra indent if a prefix or brace is found.
Array[String] indent_automatic_prefixes = [":", "{", "[", "("] 🔗
Prefixes to trigger an automatic indent.
Size of the tabulation indent (one Tab
press) in characters. If indent_use_spaces is enabled the number of spaces to use.
bool indent_use_spaces = false 🔗
Use spaces instead of tabs for indentation.
bool line_folding = false 🔗
Sets whether line folding is allowed.
Array[int] line_length_guidelines = [] 🔗
Draws vertical lines at the provided columns. The first entry is considered a main hard guideline and is draw more prominently.
bool symbol_lookup_on_click = false 🔗
Set when a validated word from symbol_validate is clicked, the symbol_lookup should be emitted.
Method Descriptions
void _confirm_code_completion(replace: bool) virtual 🔗
Override this method to define how the selected entry should be inserted. If replace
is true
, any existing text should be replaced.
Array[Dictionary] _filter_code_completion_candidates(candidates: Array[Dictionary]) virtual const 🔗
Override this method to define what items in candidates
should be displayed.
Both candidates
and the return is a Array of Dictionary, see get_code_completion_option for Dictionary content.
void _request_code_completion(force: bool) virtual 🔗
Override this method to define what happens when the user requests code completion. If force
is true
, any checks should be bypassed.
void add_auto_brace_completion_pair(start_key: String, end_key: String) 🔗
Adds a brace pair.
Both the start and end keys must be symbols. Only the start key has to be unique.
void add_code_completion_option(type: CodeCompletionKind, display_text: String, insert_text: String, text_color: Color = Color(1, 1, 1, 1), icon: Resource = null, value: Variant = null, location: int = 1024) 🔗
Submits an item to the queue of potential candidates for the autocomplete menu. Call update_code_completion_options to update the list.
location
indicates location of the option relative to the location of the code completion query. See CodeCompletionLocation for how to set this value.
Note: This list will replace all current candidates.
void add_comment_delimiter(start_key: String, end_key: String, line_only: bool = false) 🔗
Adds a comment delimiter from start_key
to end_key
. Both keys should be symbols, and start_key
must not be shared with other delimiters.
If line_only
is true
or end_key
is an empty String, the region does not carry over to the next line.
void add_string_delimiter(start_key: String, end_key: String, line_only: bool = false) 🔗
Defines a string delimiter from start_key
to end_key
. Both keys should be symbols, and start_key
must not be shared with other delimiters.
If line_only
is true
or end_key
is an empty String, the region does not carry over to the next line.
bool can_fold_line(line: int) const 🔗
Returns if the given line is foldable, that is, it has indented lines right below it or a comment / string block.
void cancel_code_completion() 🔗
Cancels the autocomplete menu.
void clear_bookmarked_lines() 🔗
Clears all bookmarked lines.
void clear_breakpointed_lines() 🔗
Clears all breakpointed lines.
void clear_comment_delimiters() 🔗
Removes all comment delimiters.
void clear_executing_lines() 🔗
Clears all executed lines.
void clear_string_delimiters() 🔗
Removes all string delimiters.
void confirm_code_completion(replace: bool = false) 🔗
Inserts the selected entry into the text. If replace
is true
, any existing text is replaced rather than merged.
void convert_indent(from_line: int = -1, to_line: int = -1) 🔗
Converts the indents of lines between from_line
and to_line
to tabs or spaces as set by indent_use_spaces.
Values of -1
convert the entire text.
void create_code_region() 🔗
Creates a new code region with the selection. At least one single line comment delimiter have to be defined (see add_comment_delimiter).
A code region is a part of code that is highlighted when folded and can help organize your script.
Code region start and end tags can be customized (see set_code_region_tags).
Code regions are delimited using start and end tags (respectively region
and endregion
by default) preceded by one line comment delimiter. (eg. #region
and #endregion
)
void delete_lines() 🔗
Deletes all lines that are selected or have a caret on them.
void do_indent() 🔗
Perform an indent as if the user activated the "ui_text_indent" action.
void duplicate_lines() 🔗
Duplicates all lines currently selected with any caret. Duplicates the entire line beneath the current one no matter where the caret is within the line.
void duplicate_selection() 🔗
Duplicates all selected text and duplicates all lines with a caret on them.
void fold_all_lines() 🔗
Folds all lines that are possible to be folded (see can_fold_line).
void fold_line(line: int) 🔗
Folds the given line, if possible (see can_fold_line).
String get_auto_brace_completion_close_key(open_key: String) const 🔗
Gets the matching auto brace close key for open_key
.
PackedInt32Array get_bookmarked_lines() const 🔗
Gets all bookmarked lines.
PackedInt32Array get_breakpointed_lines() const 🔗
Gets all breakpointed lines.
Dictionary get_code_completion_option(index: int) const 🔗
Gets the completion option at index
. The return Dictionary has the following key-values:
kind
: CodeCompletionKind
display_text
: Text that is shown on the autocomplete menu.
insert_text
: Text that is to be inserted when this item is selected.
font_color
: Color of the text on the autocomplete menu.
icon
: Icon to draw on the autocomplete menu.
default_value
: Value of the symbol.
Array[Dictionary] get_code_completion_options() const 🔗
Gets all completion options, see get_code_completion_option for return content.
int get_code_completion_selected_index() const 🔗
Gets the index of the current selected completion option.
String get_code_region_end_tag() const 🔗
Returns the code region end tag (without comment delimiter).
String get_code_region_start_tag() const 🔗
Returns the code region start tag (without comment delimiter).
String get_delimiter_end_key(delimiter_index: int) const 🔗
Gets the end key for a string or comment region index.
Vector2 get_delimiter_end_position(line: int, column: int) const 🔗
If line
column
is in a string or comment, returns the end position of the region. If not or no end could be found, both Vector2 values will be -1
.
String get_delimiter_start_key(delimiter_index: int) const 🔗
Gets the start key for a string or comment region index.
Vector2 get_delimiter_start_position(line: int, column: int) const 🔗
If line
column
is in a string or comment, returns the start position of the region. If not or no start could be found, both Vector2 values will be -1
.
PackedInt32Array get_executing_lines() const 🔗
Gets all executing lines.
Array[int] get_folded_lines() const 🔗
Returns all lines that are current folded.
String get_text_for_code_completion() const 🔗
Returns the full text with char 0xFFFF
at the caret location.
String get_text_for_symbol_lookup() const 🔗
Returns the full text with char 0xFFFF
at the cursor location.
String get_text_with_cursor_char(line: int, column: int) const 🔗
Returns the full text with char 0xFFFF
at the specified location.
bool has_auto_brace_completion_close_key(close_key: String) const 🔗
Returns true
if close key close_key
exists.
bool has_auto_brace_completion_open_key(open_key: String) const 🔗
Returns true
if open key open_key
exists.
bool has_comment_delimiter(start_key: String) const 🔗
Returns true
if comment start_key
exists.
bool has_string_delimiter(start_key: String) const 🔗
Returns true
if string start_key
exists.
void indent_lines() 🔗
Indents selected lines, or in the case of no selection the caret line by one.
int is_in_comment(line: int, column: int = -1) const 🔗
Returns delimiter index if line
column
is in a comment. If column
is not provided, will return delimiter index if the entire line
is a comment. Otherwise -1
.
int is_in_string(line: int, column: int = -1) const 🔗
Returns the delimiter index if line
column
is in a string. If column
is not provided, will return the delimiter index if the entire line
is a string. Otherwise -1
.
bool is_line_bookmarked(line: int) const 🔗
Returns whether the line at the specified index is bookmarked or not.
bool is_line_breakpointed(line: int) const 🔗
Returns whether the line at the specified index is breakpointed or not.
bool is_line_code_region_end(line: int) const 🔗
Returns whether the line at the specified index is a code region end.
bool is_line_code_region_start(line: int) const 🔗
Returns whether the line at the specified index is a code region start.
bool is_line_executing(line: int) const 🔗
Returns whether the line at the specified index is marked as executing or not.
bool is_line_folded(line: int) const 🔗
Returns whether the line at the specified index is folded or not.
void move_lines_down() 🔗
Moves all lines down that are selected or have a caret on them.
void move_lines_up() 🔗
Moves all lines up that are selected or have a caret on them.
void remove_comment_delimiter(start_key: String) 🔗
Removes the comment delimiter with start_key
.
void remove_string_delimiter(start_key: String) 🔗
Removes the string delimiter with start_key
.
void request_code_completion(force: bool = false) 🔗
Emits code_completion_requested, if force
is true
will bypass all checks. Otherwise will check that the caret is in a word or in front of a prefix. Will ignore the request if all current options are of type file path, node path, or signal.
void set_code_completion_selected_index(index: int) 🔗
Sets the current selected completion option.
void set_code_hint(code_hint: String) 🔗
Sets the code hint text. Pass an empty string to clear.
void set_code_hint_draw_below(draw_below: bool) 🔗
Sets if the code hint should draw below the text.
Sets the code region start and end tags (without comment delimiter).
void set_line_as_bookmarked(line: int, bookmarked: bool) 🔗
Sets the line as bookmarked.
void set_line_as_breakpoint(line: int, breakpointed: bool) 🔗
Sets the line as breakpointed.
void set_line_as_executing(line: int, executing: bool) 🔗
Sets the line as executing.
void set_symbol_lookup_word_as_valid(valid: bool) 🔗
Sets the symbol emitted by symbol_validate as a valid lookup.
void toggle_foldable_line(line: int) 🔗
Toggle the folding of the code block at the given line.
void toggle_foldable_lines_at_carets() 🔗
Toggle the folding of the code block on all lines with a caret on them.
void unfold_all_lines() 🔗
Unfolds all lines, folded or not.
void unfold_line(line: int) 🔗
Unfolds all lines that were previously folded.
void unindent_lines() 🔗
Unindents selected lines, or in the case of no selection the caret line by one. Same as performing "ui_text_unindent" action.
void update_code_completion_options(force: bool) 🔗
Submits all completion options added with add_code_completion_option. Will try to force the autocomplete menu to popup, if force
is true
.
Note: This will replace all current candidates.
Theme Property Descriptions
Color bookmark_color = Color(0.5, 0.64, 1, 0.8) 🔗
Color of the bookmark icon for bookmarked lines.
Color brace_mismatch_color = Color(1, 0.2, 0.2, 1) 🔗
Color of the text to highlight mismatched braces.
Color breakpoint_color = Color(0.9, 0.29, 0.3, 1) 🔗
Color of the breakpoint icon for bookmarked lines.
Color code_folding_color = Color(0.8, 0.8, 0.8, 0.8) 🔗
Color for all icons related to line folding.
Color completion_background_color = Color(0.17, 0.16, 0.2, 1) 🔗
Sets the background Color for the code completion popup.
Color completion_existing_color = Color(0.87, 0.87, 0.87, 0.13) 🔗
Background highlight Color for matching text in code completion options.
Color completion_scroll_color = Color(1, 1, 1, 0.29) 🔗
Color of the scrollbar in the code completion popup.
Color completion_scroll_hovered_color = Color(1, 1, 1, 0.4) 🔗
Color of the scrollbar in the code completion popup when hovered.
Color completion_selected_color = Color(0.26, 0.26, 0.27, 1) 🔗
Background highlight Color for the current selected option item in the code completion popup.
Color executing_line_color = Color(0.98, 0.89, 0.27, 1) 🔗
Color of the executing icon for executing lines.
Color folded_code_region_color = Color(0.68, 0.46, 0.77, 0.2) 🔗
Color of background line highlight for folded code region.
Color line_length_guideline_color = Color(0.3, 0.5, 0.8, 0.1) 🔗
Color of the main line length guideline, secondary guidelines will have 50% alpha applied.
Color line_number_color = Color(0.67, 0.67, 0.67, 0.4) 🔗
Sets the Color of line numbers.
Max number of options to display in the code completion popup at any one time.
int completion_max_width = 50 🔗
Max width of options in the code completion popup. Options longer than this will be cut off.
int completion_scroll_width = 6 🔗
Width of the scrollbar in the code completion popup.
Sets a custom Texture2D to draw in the bookmark gutter for bookmarked lines.
Sets a custom Texture2D to draw in the breakpoint gutter for breakpointed lines.
Sets a custom Texture2D to draw in the line folding gutter when a line can be folded.
Texture2D can_fold_code_region 🔗
Sets a custom Texture2D to draw in the line folding gutter when a code region can be folded.
Icon to draw in the executing gutter for executing lines.
Sets a custom Texture2D to draw in the line folding gutter when a line is folded and can be unfolded.
Texture2D folded_code_region 🔗
Sets a custom Texture2D to draw in the line folding gutter when a code region is folded and can be unfolded.
Texture2D folded_eol_icon 🔗
Sets a custom Texture2D to draw at the end of a folded line.
StyleBox for the code completion popup.