You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-24 15:26:15 +00:00
Merge pull request #72751 from dalexeev/doc-comment-color
Highlight doc comments in a different color
This commit is contained in:
@@ -496,6 +496,7 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const Ref<Resource> &p_from,
|
||||
Color text_color = EDITOR_GET("text_editor/theme/highlighting/text_color");
|
||||
Color symbol_color = EDITOR_GET("text_editor/theme/highlighting/symbol_color");
|
||||
Color comment_color = EDITOR_GET("text_editor/theme/highlighting/comment_color");
|
||||
Color doc_comment_color = EDITOR_GET("text_editor/theme/highlighting/doc_comment_color");
|
||||
|
||||
if (bg_color.a == 0) {
|
||||
bg_color = Color(0, 0, 0, 0);
|
||||
@@ -513,6 +514,7 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const Ref<Resource> &p_from,
|
||||
bool in_control_flow_keyword = false;
|
||||
bool in_keyword = false;
|
||||
bool in_comment = false;
|
||||
bool in_doc_comment = false;
|
||||
for (int i = 0; i < code.length(); i++) {
|
||||
char32_t c = code[i];
|
||||
if (c > 32) {
|
||||
@@ -520,11 +522,17 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const Ref<Resource> &p_from,
|
||||
Color color = text_color;
|
||||
|
||||
if (c == '#') {
|
||||
in_comment = true;
|
||||
if (i < code.length() - 1 && code[i + 1] == '#') {
|
||||
in_doc_comment = true;
|
||||
} else {
|
||||
in_comment = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (in_comment) {
|
||||
color = comment_color;
|
||||
} else if (in_doc_comment) {
|
||||
color = doc_comment_color;
|
||||
} else {
|
||||
if (is_symbol(c)) {
|
||||
//make symbol a little visible
|
||||
@@ -569,6 +577,7 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const Ref<Resource> &p_from,
|
||||
|
||||
if (c == '\n') {
|
||||
in_comment = false;
|
||||
in_doc_comment = false;
|
||||
|
||||
col = x0;
|
||||
line++;
|
||||
|
||||
@@ -191,6 +191,16 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
|
||||
highlighter->add_color_region(beg, end, comment_color, end.is_empty());
|
||||
}
|
||||
|
||||
/* Doc comments */
|
||||
const Color doc_comment_color = EDITOR_GET("text_editor/theme/highlighting/doc_comment_color");
|
||||
List<String> doc_comments;
|
||||
scr->get_language()->get_doc_comment_delimiters(&doc_comments);
|
||||
for (const String &doc_comment : doc_comments) {
|
||||
String beg = doc_comment.get_slice(" ", 0);
|
||||
String end = doc_comment.get_slice_count(" ") > 1 ? doc_comment.get_slice(" ", 1) : String();
|
||||
highlighter->add_color_region(beg, end, doc_comment_color, end.is_empty());
|
||||
}
|
||||
|
||||
/* Strings */
|
||||
const Color string_color = EDITOR_GET("text_editor/theme/highlighting/string_color");
|
||||
List<String> strings;
|
||||
|
||||
@@ -234,9 +234,10 @@ void ScriptTextEditor::_set_theme_for_script() {
|
||||
}
|
||||
}
|
||||
|
||||
text_edit->clear_comment_delimiters();
|
||||
|
||||
List<String> comments;
|
||||
script->get_language()->get_comment_delimiters(&comments);
|
||||
text_edit->clear_comment_delimiters();
|
||||
for (const String &comment : comments) {
|
||||
String beg = comment.get_slice(" ", 0);
|
||||
String end = comment.get_slice_count(" ") > 1 ? comment.get_slice(" ", 1) : String();
|
||||
@@ -246,6 +247,18 @@ void ScriptTextEditor::_set_theme_for_script() {
|
||||
text_edit->add_auto_brace_completion_pair(beg, end);
|
||||
}
|
||||
}
|
||||
|
||||
List<String> doc_comments;
|
||||
script->get_language()->get_doc_comment_delimiters(&doc_comments);
|
||||
for (const String &doc_comment : doc_comments) {
|
||||
String beg = doc_comment.get_slice(" ", 0);
|
||||
String end = doc_comment.get_slice_count(" ") > 1 ? doc_comment.get_slice(" ", 1) : String();
|
||||
text_edit->add_comment_delimiter(beg, end, end.is_empty());
|
||||
|
||||
if (!end.is_empty() && !text_edit->has_auto_brace_completion_open_key(beg)) {
|
||||
text_edit->add_auto_brace_completion_pair(beg, end);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptTextEditor::_show_errors_panel(bool p_show) {
|
||||
|
||||
Reference in New Issue
Block a user