|
@@ -487,10 +487,15 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
|
|
|
List<String> kwors;
|
|
|
scr->get_language()->get_reserved_words(&kwors);
|
|
|
|
|
|
+ Set<String> control_flow_keywords;
|
|
|
Set<String> keywords;
|
|
|
|
|
|
for (List<String>::Element *E = kwors.front(); E; E = E->next()) {
|
|
|
- keywords.insert(E->get());
|
|
|
+ if (scr->get_language()->is_control_flow_keyword(E->get())) {
|
|
|
+ control_flow_keywords.insert(E->get());
|
|
|
+ } else {
|
|
|
+ keywords.insert(E->get());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
int line = 0;
|
|
@@ -502,6 +507,7 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
|
|
|
|
|
|
Color bg_color = EditorSettings::get_singleton()->get("text_editor/highlighting/background_color");
|
|
|
Color keyword_color = EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color");
|
|
|
+ Color control_flow_keyword_color = EditorSettings::get_singleton()->get("text_editor/highlighting/control_flow_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");
|
|
@@ -523,6 +529,7 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
|
|
|
col = x0;
|
|
|
|
|
|
bool prev_is_text = false;
|
|
|
+ bool in_control_flow_keyword = false;
|
|
|
bool in_keyword = false;
|
|
|
bool in_comment = false;
|
|
|
for (int i = 0; i < code.length(); i++) {
|
|
@@ -541,6 +548,7 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
|
|
|
if (c != '_' && ((c >= '!' && c <= '/') || (c >= ':' && c <= '@') || (c >= '[' && c <= '`') || (c >= '{' && c <= '~') || c == '\t')) {
|
|
|
//make symbol a little visible
|
|
|
color = symbol_color;
|
|
|
+ in_control_flow_keyword = false;
|
|
|
in_keyword = false;
|
|
|
} else if (!prev_is_text && _is_text_char(c)) {
|
|
|
int pos = i;
|
|
@@ -549,7 +557,9 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
|
|
|
pos++;
|
|
|
}
|
|
|
String word = code.substr(i, pos - i);
|
|
|
- if (keywords.has(word)) {
|
|
|
+ if (control_flow_keywords.has(word)) {
|
|
|
+ in_control_flow_keyword = true;
|
|
|
+ } else if (keywords.has(word)) {
|
|
|
in_keyword = true;
|
|
|
}
|
|
|
|
|
@@ -557,11 +567,12 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
|
|
|
in_keyword = false;
|
|
|
}
|
|
|
|
|
|
- if (in_keyword) {
|
|
|
+ if (in_control_flow_keyword) {
|
|
|
+ color = control_flow_keyword_color;
|
|
|
+ } else if (in_keyword) {
|
|
|
color = keyword_color;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
Color ul = color;
|
|
|
ul.a *= 0.5;
|
|
|
img->set_pixel(col, y0 + line * 2, bg_color.blend(ul));
|
|
@@ -572,6 +583,7 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
|
|
|
col++;
|
|
|
} else {
|
|
|
prev_is_text = false;
|
|
|
+ in_control_flow_keyword = false;
|
|
|
in_keyword = false;
|
|
|
|
|
|
if (c == '\n') {
|