CodeEdit¶
继承: TextEdit < Control < CanvasItem < Item < Object
为编辑代码而设计的多行文本编辑器。
描述¶
CodeEdit是专为编辑纯文本代码文件而设计的专用TextEdit,它具有代码编辑器中常见的许多功能,例如行号、行折叠、代码完成、缩进管理和字符串/注释管理。
注意:无论语言环境如何,CodeEdit默认情况下总是使用从左到右的文本方向来正确显示源代码。
属性¶
方法¶
主题属性¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
信号¶
breakpoint_toggled(line: int) 🔗
在行中添加或删除断点时发出。如果该行通过退格符移动,则在旧行上发出已删除的断点。
code_completion_requested() 🔗
当用户请求代码完成时发出。如果_request_code_completion()被覆盖或code_completion_enabled为假,则不会发送此信号。
symbol_hovered(symbol: String, line: int, column: int) 🔗
当用户将鼠标悬停在符号上时发出。与Control.mouse_entered不同,此信号不会立即发出,而是当光标在符号上停留ProjectSettings.gui/timers/tooltip_delay_sec秒时发出。
注意:symbol_tooltip_on_hover必须为true才能发出此信号。
symbol_lookup(symbol: String, line: int, column: int) 🔗
当用户单击有效符号时发出。
symbol_validate(symbol: String) 🔗
当用户将鼠标悬停在符号上时发出。应该通过调用set_symbol_lookup_word_as_valid()来验证和响应该符号。
注意:symbol_lookup_on_click必须为true才能发出此信号。
枚举¶
enum CodeCompletionKind: 🔗
CodeCompletionKind KIND_CLASS = 0
将选项标记为类。
CodeCompletionKind KIND_FUNCTION = 1
将选项标记为函数。
CodeCompletionKind KIND_SIGNAL = 2
将选项标记为i3D信号。
CodeCompletionKind KIND_VARIABLE = 3
将选项标记为变量。
CodeCompletionKind KIND_MEMBER = 4
将选项标记为成员。
CodeCompletionKind KIND_ENUM = 5
将选项标记为枚举条目。
CodeCompletionKind KIND_CONSTANT = 6
将选项标记为常量。
CodeCompletionKind KIND_NODE_PATH = 7
将选项标记为i3D节点路径。
CodeCompletionKind KIND_FILE_PATH = 8
将选项标记为文件路径。
CodeCompletionKind KIND_PLAIN_TEXT = 9
将选项标记为未分类或纯文本。
enum CodeCompletionLocation: 🔗
CodeCompletionLocation LOCATION_LOCAL = 0
该选项是代码完成查询位置的本地选项——例如局部变量。位置的后续值表示来自外部类的选项,确切值表示它们的距离(就内部类而言)。
CodeCompletionLocation LOCATION_PARENT_MASK = 256
选项来自包含类或父类,相对于代码完成查询的位置。使用类深度执行按位或(例如,本地类的0,父类的1,祖父类的2等)来存储类或父类中选项的深度。
CodeCompletionLocation LOCATION_OTHER_USER_CODE = 512
该选项来自非本地且不在派生类中的用户代码(例如Autoload Singletons)。
CodeCompletionLocation LOCATION_OTHER = 1024
该选项来自其他引擎代码,其他枚举常量未涵盖-例如内置类。
属性说明¶
bool auto_brace_completion_enabled = false 🔗
如果true,则在通过键入或自动完成插入大括号时,使用auto_brace_completion_pairs自动插入右大括号。在左大括号上使用退格时也会自动删除右大括号。
bool auto_brace_completion_highlight_matching = false 🔗
如果true,则在插入符号位于任一插入符号上时使用auto_brace_completion_pairs突出显示大括号对。如果匹配,则对加下划线。如果大括号不匹配,则用brace_mismatch_color着色。
Dictionary auto_brace_completion_pairs = { "\"": "\"", "'": "'", "(": ")", "[": "]", "{": "}" } 🔗
void set_auto_brace_completion_pairs(value: Dictionary)
Dictionary get_auto_brace_completion_pairs()
将大括号对设置为自动完成。对于字典中的每个条目,键是开始大括号,值是与之匹配的结束大括号。大括号是由符号组成的String。请参阅auto_brace_completion_enabled和auto_brace_completion_highlight_matching。
bool code_completion_enabled = false 🔗
如果true,则ProjectSettings.input/ui_text_completion_query操作请求代码完成。要处理它,请参阅_request_code_completion()或code_completion_requested。
Array[String] code_completion_prefixes = [] 🔗
设置将触发代码完成的前缀。
Array[String] delimiter_comments = [] 🔗
设置注释分隔符。所有现有的注释分隔符都将被删除。
Array[String] delimiter_strings = ["' '", "\" \""] 🔗
设置字符串分隔符。所有现有的字符串分隔符都将被删除。
bool gutters_draw_bookmarks = false 🔗
如果true,则在gutter中绘制书签。此gutter与断点和执行行共享。请参阅set_line_as_bookmarked()。
bool gutters_draw_breakpoints_gutter = false 🔗
如果true,则在排水沟中绘制断点。此排水沟与书签和执行行共享。单击排水沟将切换该行的断点,请参阅set_line_as_breakpoint()。
bool gutters_draw_executing_lines = false 🔗
如果true,则在排水沟中标记执行行。此排水沟与断点和书签共享。请参阅set_line_as_executing()。
bool gutters_draw_fold_gutter = false 🔗
如果true,则绘制折叠排水沟。在此排水沟中,为每条可折叠线绘制can_fold_code_region图标(参见can_fold_line()),为每条可折叠线绘制folded_code_region图标(参见is_line_folded())。点击这些图标可以切换折叠状态,参见toggle_foldable_line()。line_folding必须是true才能显示图标。
bool gutters_draw_line_numbers = false 🔗
如果true,则绘制行号槽。行号从1开始,并为每行文本递增。单击并拖动行号槽将选择整行文本。
bool gutters_zero_pad_line_numbers = false 🔗
如果true,则在排水沟中绘制的行号根据总行数进行零填充。需要将gutters_draw_line_numbers设置为true。
bool indent_automatic = false 🔗
如果true,则在添加新行并找到indent_automatic_prefixes中的前缀时自动插入额外的缩进。如果找到大括号对打开键,则匹配的右大括号将移动到另一个新行(参见auto_brace_completion_pairs)。
Array[String] indent_automatic_prefixes = [":", "{", "[", "("] 🔗
触发自动缩进的前缀。当indent_automatic设置为true时使用。
以字符为单位的制表缩进大小(oneTabpress)。如果启用了indent_use_spaces,则为要使用的空格数。
bool indent_use_spaces = false 🔗
使用空格而不是制表符进行缩进。
如果true,则可以折叠行。否则,像fold_line()这样的行折叠方法将不起作用,can_fold_line()将始终返回false。参见gutters_draw_fold_gutter。
Array[int] line_length_guidelines = [] 🔗
在提供的列上绘制垂直线。第一个条目被认为是主要的硬指南,并且绘制得更突出。
bool symbol_lookup_on_click = false 🔗
设置当单击symbol_validate中的验证单词时,应发出symbol_lookup。
bool symbol_tooltip_on_hover = false 🔗
设置当一个单词悬停时,应该发出symbol_hovered。
方法说明¶
void _confirm_code_completion(replace: bool) virtual 🔗
重写此方法以定义应如何插入所选条目。如果replace为true,则应替换任何现有文本。
Array[Dictionary] _filter_code_completion_candidates(candidates: Array[Dictionary]) virtual const 🔗
重写此方法以定义应显示candidates中的哪些项目。
candidates和返回都是Dictionary的Array,Dictionary内容见get_code_completion_option()。
void _request_code_completion(force: bool) virtual 🔗
重写此方法以定义用户请求代码完成时会发生什么。如果force是true,则应绕过任何检查。
void add_auto_brace_completion_pair(start_key: String, end_key: String) 🔗
添加一对括号。
开始键和结束键都必须是符号。只有开始键必须是唯一的。
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) 🔗
将项目提交到自动完成菜单的潜在候选队列。调用update_code_completion_options()更新列表。
location表示选项相对于代码完成查询的位置。有关如何设置此值,请参阅CodeCompletionLocation。
注意:此列表将替换所有当前候选人。
void add_comment_delimiter(start_key: String, end_key: String, line_only: bool = false) 🔗
将注释分隔符从start_key添加到end_key。两个键都应该是符号,并且start_key不得与其他分隔符共享。
如果line_only为true或end_key为空String,则该区域不会延续到下一行。
void add_string_delimiter(start_key: String, end_key: String, line_only: bool = false) 🔗
定义从start_key到end_key的字符串分隔符。两个键都应该是符号,并且start_key不得与其他分隔符共享。
如果line_only为true或end_key为空String,则该区域不会延续到下一行。
bool can_fold_line(line: int) const 🔗
如果给定的行是可折叠的,则返回true。如果行是有效代码区域的开始(参见get_code_region_start_tag()),如果它是注释或字符串块的开始,或者如果下一个非空行缩进更多(参见TextEdit.get_indent_level()),则该行是可折叠的。
void cancel_code_completion() 🔗
取消自动完成菜单。
void clear_bookmarked_lines() 🔗
清除所有书签行。
void clear_breakpointed_lines() 🔗
清除所有断点线。
void clear_comment_delimiters() 🔗
删除所有注释分隔符。
void clear_executing_lines() 🔗
清除所有执行的行。
void clear_string_delimiters() 🔗
删除所有字符串分隔符。
void confirm_code_completion(replace: bool = false) 🔗
将选定的条目插入文本。如果replace为true,则替换而不是合并任何现有文本。
void convert_indent(from_line: int = -1, to_line: int = -1) 🔗
将from_line和to_line之间的行缩进转换为indent_use_spaces设置的制表符或空格。
-1的值转换整个文本。
void create_code_region() 🔗
使用选择创建一个新的代码区域。必须至少定义一个单行注释分隔符(参见add_comment_delimiter())。
代码区域是折叠时突出显示的代码的一部分,可以帮助组织脚本。
可以自定义代码区域开始和结束标记(参见set_code_region_tags())。
代码区域使用开始和结束标记(默认情况下分别为区域和结束区域)以一行注释分隔符开头进行分隔。(例如#区域和#结束区域)
void delete_lines() 🔗
删除所有选中或带有插入符号的行。
void do_indent() 🔗
如果没有选择,则在插入符号处插入缩进。否则,所选行将像indent_lines()一样缩进。相当于ProjectSettings.input/ui_text_indent操作。使用的缩进字符取决于indent_use_spaces和indent_size。
void duplicate_lines() 🔗
使用任何插入符号复制当前选定的所有行。无论插入符号在行内的哪个位置,都会复制当前行下方的整行。
void duplicate_selection() 🔗
复制所有选定的文本并复制带有插入符号的所有行。
void fold_all_lines() 🔗
折叠所有可能折叠的线(参见can_fold_line())。
如果可能,折叠给定的行(参见can_fold_line())。
String get_auto_brace_completion_close_key(open_key: String) const 🔗
获取open_key的匹配自动大括号关闭键。
PackedInt32Array get_bookmarked_lines() const 🔗
获取所有带书签的行。
PackedInt32Array get_breakpointed_lines() const 🔗
获取所有断点线。
Dictionary get_code_completion_option(index: int) const 🔗
获取index处的完成选项。返回Dictionary具有以下键值:
display_text:自动完成菜单上显示的文本。
insert_text:选择此项时要插入的文本。
font_color:自动完成菜单上文本的颜色。
icon:在自动完成菜单上绘制的图标。
default_value:符号的值。
Array[Dictionary] get_code_completion_options() const 🔗
获取所有完成选项,返回内容参见get_code_completion_option()。
int get_code_completion_selected_index() const 🔗
获取当前选定完成选项的索引。
String get_code_region_end_tag() const 🔗
返回代码区域结束标记(不带注释分隔符)。
String get_code_region_start_tag() const 🔗
返回代码区域开始标记(不带注释分隔符)。
String get_delimiter_end_key(delimiter_index: int) const 🔗
获取字符串或注释区域索引的结束键。
Vector2 get_delimiter_end_position(line: int, column: int) const 🔗
如果linecolumn在字符串或注释中,则返回区域的结束位置。如果没有或找不到结束,则两个Vector2值都将是-1。
String get_delimiter_start_key(delimiter_index: int) const 🔗
获取字符串或注释区域索引的开始键。
Vector2 get_delimiter_start_position(line: int, column: int) const 🔗
如果linecolumn在字符串或注释中,则返回区域的开始位置。如果没有或找不到开始,则两个Vector2值都将是-1。
PackedInt32Array get_executing_lines() const 🔗
获取所有执行行。
Array[int] get_folded_lines() const 🔗
返回当前折叠的所有行。
String get_text_for_code_completion() const 🔗
在插入符号位置返回带有char0xFFFF的全文。
String get_text_for_symbol_lookup() const 🔗
返回光标位置带有char0xFFFF的全文。
String get_text_with_cursor_char(line: int, column: int) const 🔗
返回指定位置带有char0xFFFF的全文。
bool has_auto_brace_completion_close_key(close_key: String) const 🔗
如果关闭键close_key存在,则返回true。
bool has_auto_brace_completion_open_key(open_key: String) const 🔗
如果open keyopen_key存在,则返回true。
bool has_comment_delimiter(start_key: String) const 🔗
如果注释start_key存在,则返回true。
bool has_string_delimiter(start_key: String) const 🔗
如果字符串start_key存在,则返回true。
void indent_lines() 🔗
缩进选中的或带有插入符号的所有行。根据indent_use_spaces使用空格或制表符。请参阅unindent_lines()。
int is_in_comment(line: int, column: int = -1) const 🔗
如果linecolumn在注释中,则返回分隔符索引。如果未提供column,如果整个line是注释,则返回分隔符索引。否则-1。
int is_in_string(line: int, column: int = -1) const 🔗
如果linecolumn在字符串中,则返回分隔符索引。如果未提供column,如果整个line是字符串,则返回分隔符索引。否则-1。
bool is_line_bookmarked(line: int) const 🔗
如果给定行已添加书签,则返回true。请参见set_line_as_bookmarked()。
bool is_line_breakpointed(line: int) const 🔗
如果给定的行断点,则返回true。参见set_line_as_breakpoint()。
bool is_line_code_region_end(line: int) const 🔗
如果给定行是代码区域结束,则返回true。参见set_code_region_tags()。
bool is_line_code_region_start(line: int) const 🔗
如果给定的行是代码区域start,则返回true。参见set_code_region_tags()。
bool is_line_executing(line: int) const 🔗
如果给定行被标记为正在执行,则返回true。参见set_line_as_executing()。
bool is_line_folded(line: int) const 🔗
如果给定的行被折叠,则返回true。参见fold_line()。
void move_lines_down() 🔗
将选中或带有插入符号的所有行向下移动。
void move_lines_up() 🔗
将选中或带有插入符号的所有行向上移动。
void remove_comment_delimiter(start_key: String) 🔗
删除带有start_key的注释分隔符。
void remove_string_delimiter(start_key: String) 🔗
删除带有start_key的字符串分隔符。
void request_code_completion(force: bool = false) 🔗
发出code_completion_requested,如果force为true将绕过所有检查。否则将检查插入符号是否在单词中或前缀前面。如果所有当前选项都是文件路径、节点路径或信号类型,将忽略请求。
void set_code_completion_selected_index(index: int) 🔗
设置当前选定的完成选项。
void set_code_hint(code_hint: String) 🔗
设置代码提示文本。传递一个空字符串以清除。
void set_code_hint_draw_below(draw_below: bool) 🔗
如果true,则代码提示将绘制在主插入符号下方。如果false,则代码提示将绘制在主插入符号上方。参见set_code_hint()。
void set_code_region_tags(start: String = "region", end: String = "endregion") 🔗
设置代码区域开始和结束标记(不带注释分隔符)。
void set_line_as_bookmarked(line: int, bookmarked: bool) 🔗
将给定的行设置为书签。如果true并且gutters_draw_bookmarks是true,则在此行的排水沟中绘制bookmark图标。请参阅get_bookmarked_lines()和is_line_bookmarked()。
void set_line_as_breakpoint(line: int, breakpointed: bool) 🔗
将给定的行设置为断点。如果true和gutters_draw_breakpoints_gutter是true,则在此行的排水沟中绘制breakpoint图标。请参阅get_breakpointed_lines()和is_line_breakpointed()。
void set_line_as_executing(line: int, executing: bool) 🔗
将给定行设置为正在执行。如果true并且gutters_draw_executing_lines是true,则在此行的排水沟中绘制executing_line图标。请参阅get_executing_lines()和is_line_executing()。
void set_symbol_lookup_word_as_valid(valid: bool) 🔗
将symbol_validate发出的符号设置为有效查找。
void toggle_foldable_line(line: int) 🔗
切换给定行处代码块的折叠。
void toggle_foldable_lines_at_carets() 🔗
用插入符号切换所有行上代码块的折叠。
void unfold_all_lines() 🔗
展开所有折叠的线。
展开已折叠或隐藏在折叠线下的给定线。
void unindent_lines() 🔗
取消缩进选中的所有行或带有插入符号的行。根据indent_use_spaces使用空格或制表符。相当于ProjectSettings.input/ui_text_dedent操作。请参阅indent_lines()。
void update_code_completion_options(force: bool) 🔗
提交所有添加了add_code_completion_option()的完成选项。如果force为true,将尝试强制弹出自动完成菜单。
注意:这将取代所有现有候选人。
主题属性说明¶
Color bookmark_color = Color(0.5, 0.64, 1, 0.8) 🔗
书签行的书签图标的Color。
Color brace_mismatch_color = Color(1, 0.2, 0.2, 1) 🔗
Color文本以突出显示不匹配的大括号。
Color breakpoint_color = Color(0.9, 0.29, 0.3, 1) 🔗
书签行的断点图标的Color。
Color code_folding_color = Color(0.8, 0.8, 0.8, 0.8) 🔗
Color用于与线条折叠相关的所有图标。
Color completion_background_color = Color(0.17, 0.16, 0.2, 1) 🔗
设置代码完成弹出窗口的背景Color。
Color completion_existing_color = Color(0.87, 0.87, 0.87, 0.13) 🔗
背景高亮Color用于在代码完成选项中匹配文本。
Color completion_scroll_color = Color(1, 1, 1, 0.29) 🔗
代码完成弹出窗口中滚动条的Color。
Color completion_scroll_hovered_color = Color(1, 1, 1, 0.4) 🔗
悬停时代码完成弹出窗口中滚动条的Color。
Color completion_selected_color = Color(0.26, 0.26, 0.27, 1) 🔗
代码完成弹出窗口中当前选定选项项的背景高亮Color。
Color executing_line_color = Color(0.98, 0.89, 0.27, 1) 🔗
用于执行行的执行图标的Color。
Color folded_code_region_color = Color(0.68, 0.46, 0.77, 0.2) 🔗
折叠代码区域背景线高亮的Color。
Color line_length_guideline_color = Color(0.3, 0.5, 0.8, 0.1) 🔗
Color主线长度指南,次要指南将应用50%alpha。
Color line_number_color = Color(0.67, 0.67, 0.67, 0.4) 🔗
设置行号的Color。
任何时候在代码完成弹出窗口中显示的最大选项数。
int completion_max_width = 50 🔗
代码完成弹出窗口中选项的最大宽度。长于此的选项将被切断。
int completion_scroll_width = 6 🔗
代码完成弹出窗口中滚动条的宽度。
设置自定义Texture2D以在书签槽中绘制带书签的行。
设置自定义Texture2D以在断点槽中绘制断点线。
设置自定义Texture2D以在可以折叠线条时在线条折叠排水沟中绘制。
Texture2D can_fold_code_region 🔗
设置自定义Texture2D以在可以折叠代码区域时在线条折叠排水沟中绘制。
Texture2D completion_color_bg 🔗
自动完成中颜色预览框的背景面板(颜色半透明时可见)。
在执行线的执行槽中绘制的图标。
设置自定义Texture2D以在线条折叠并且可以展开时在线条折叠排水沟中绘制。
Texture2D folded_code_region 🔗
设置自定义Texture2D以在代码区域折叠且可以展开时在线条折叠排水沟中绘制。
将自定义Texture2D设置为在折叠线的末尾绘制。
StyleBox用于代码完成弹出窗口。