From ae99339e9fc7d090584b7dbb0a3d315908d58a3e Mon Sep 17 00:00:00 2001 From: Michael Alexsander Date: Sun, 2 May 2021 21:48:37 -0300 Subject: [PATCH] Add comment highlighting to script thumbnails (cherry picked from commit 46e0161737d7a701813c9e012f4cc6a9304875f2) --- editor/plugins/editor_preview_plugins.cpp | 54 +++++++++++++++-------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp index 647dd6b6e42..ac8773c667a 100644 --- a/editor/plugins/editor_preview_plugins.cpp +++ b/editor/plugins/editor_preview_plugins.cpp @@ -522,6 +522,7 @@ Ref EditorScriptPreviewPlugin::generate(const RES &p_from, const Size2 Color keyword_color = EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color"); Color text_color = EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"); Color symbol_color = EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"); + Color comment_color = EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color"); img->lock(); @@ -542,6 +543,7 @@ Ref EditorScriptPreviewPlugin::generate(const RES &p_from, const Size2 bool prev_is_text = false; bool in_keyword = false; + bool in_comment = false; for (int i = 0; i < code.length(); i++) { CharType c = code[i]; @@ -549,26 +551,36 @@ Ref EditorScriptPreviewPlugin::generate(const RES &p_from, const Size2 if (col < thumbnail_size) { Color color = text_color; - if (c != '_' && ((c >= '!' && c <= '/') || (c >= ':' && c <= '@') || (c >= '[' && c <= '`') || (c >= '{' && c <= '~') || c == '\t')) { - //make symbol a little visible - color = symbol_color; - in_keyword = false; - } else if (!prev_is_text && _is_text_char(c)) { - int pos = i; - - while (_is_text_char(code[pos])) { - pos++; - } - String word = code.substr(i, pos - i); - if (keywords.has(word)) - in_keyword = true; - - } else if (!_is_text_char(c)) { - in_keyword = false; + if (c == '#') { + in_comment = true; } - if (in_keyword) - color = keyword_color; + if (in_comment) { + color = comment_color; + } else { + if (c != '_' && ((c >= '!' && c <= '/') || (c >= ':' && c <= '@') || (c >= '[' && c <= '`') || (c >= '{' && c <= '~') || c == '\t')) { + //make symbol a little visible + color = symbol_color; + in_keyword = false; + } else if (!prev_is_text && _is_text_char(c)) { + int pos = i; + + while (_is_text_char(code[pos])) { + pos++; + } + String word = code.substr(i, pos - i); + if (keywords.has(word)) { + in_keyword = true; + } + + } else if (!_is_text_char(c)) { + in_keyword = false; + } + + if (in_keyword) { + color = keyword_color; + } + } Color ul = color; ul.a *= 0.5; @@ -577,21 +589,25 @@ Ref EditorScriptPreviewPlugin::generate(const RES &p_from, const Size2 prev_is_text = _is_text_char(c); } + col++; } else { prev_is_text = false; in_keyword = false; if (c == '\n') { + in_comment = false; + col = x0; line++; if (line >= available_height / 2) break; } else if (c == '\t') { col += 3; + } else { + col++; } } - col++; } img->unlock();