Merge pull request #72751 from dalexeev/doc-comment-color
Highlight doc comments in a different color
This commit is contained in:
@ -951,6 +951,8 @@ void CodeTextEditor::_complete_request() {
|
||||
font_color = get_theme_color(e.theme_color_name, SNAME("Editor"));
|
||||
} else if (e.insert_text.begins_with("\"") || e.insert_text.begins_with("\'")) {
|
||||
font_color = completion_string_color;
|
||||
} else if (e.insert_text.begins_with("##") || e.insert_text.begins_with("///")) {
|
||||
font_color = completion_doc_comment_color;
|
||||
} else if (e.insert_text.begins_with("#") || e.insert_text.begins_with("//")) {
|
||||
font_color = completion_comment_color;
|
||||
}
|
||||
@ -1026,6 +1028,7 @@ void CodeTextEditor::update_editor_settings() {
|
||||
completion_font_color = EDITOR_GET("text_editor/theme/highlighting/completion_font_color");
|
||||
completion_string_color = EDITOR_GET("text_editor/theme/highlighting/string_color");
|
||||
completion_comment_color = EDITOR_GET("text_editor/theme/highlighting/comment_color");
|
||||
completion_doc_comment_color = EDITOR_GET("text_editor/theme/highlighting/doc_comment_color");
|
||||
|
||||
// Appearance: Caret
|
||||
text_editor->set_caret_type((TextEdit::CaretType)EDITOR_GET("text_editor/appearance/caret/type").operator int());
|
||||
|
||||
@ -188,6 +188,7 @@ class CodeTextEditor : public VBoxContainer {
|
||||
Color completion_font_color;
|
||||
Color completion_string_color;
|
||||
Color completion_comment_color;
|
||||
Color completion_doc_comment_color;
|
||||
CodeTextEditorCodeCompleteFunc code_complete_func;
|
||||
void *code_complete_ud = nullptr;
|
||||
|
||||
|
||||
@ -821,6 +821,7 @@ void EditorSettings::_load_godot2_text_editor_theme() {
|
||||
_initial_set("text_editor/theme/highlighting/engine_type_color", Color(0.51, 0.83, 1.0));
|
||||
_initial_set("text_editor/theme/highlighting/user_type_color", Color(0.42, 0.67, 0.93));
|
||||
_initial_set("text_editor/theme/highlighting/comment_color", Color(0.4, 0.4, 0.4));
|
||||
_initial_set("text_editor/theme/highlighting/doc_comment_color", Color(0.5, 0.6, 0.7));
|
||||
_initial_set("text_editor/theme/highlighting/string_color", Color(0.94, 0.43, 0.75));
|
||||
_initial_set("text_editor/theme/highlighting/background_color", Color(0.13, 0.12, 0.15));
|
||||
_initial_set("text_editor/theme/highlighting/completion_background_color", Color(0.17, 0.16, 0.2));
|
||||
|
||||
@ -2215,7 +2215,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
||||
|
||||
// adaptive script theme constants
|
||||
// for comments and elements with lower relevance
|
||||
const Color dim_color = Color(font_color.r, font_color.g, font_color.b, 0.5);
|
||||
const Color dim_color = Color(font_color, 0.5);
|
||||
|
||||
const float mono_value = mono_color.r;
|
||||
const Color alpha1 = Color(mono_value, mono_value, mono_value, 0.07);
|
||||
@ -2229,6 +2229,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
||||
const Color engine_type_color = dark_theme ? Color(0.56, 1, 0.86) : Color(0.11, 0.55, 0.4);
|
||||
const Color user_type_color = dark_theme ? Color(0.78, 1, 0.93) : Color(0.18, 0.45, 0.4);
|
||||
const Color comment_color = dark_theme ? dim_color : Color(0.08, 0.08, 0.08, 0.5);
|
||||
const Color doc_comment_color = dark_theme ? Color(0.6, 0.7, 0.8, 0.8) : Color(0.15, 0.15, 0.4, 0.7);
|
||||
const Color string_color = dark_theme ? Color(1, 0.93, 0.63) : Color(0.6, 0.42, 0);
|
||||
|
||||
// Use the brightest background color on a light theme (which generally uses a negative contrast rate).
|
||||
@ -2272,6 +2273,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
||||
setting->set_initial_value("text_editor/theme/highlighting/engine_type_color", engine_type_color, true);
|
||||
setting->set_initial_value("text_editor/theme/highlighting/user_type_color", user_type_color, true);
|
||||
setting->set_initial_value("text_editor/theme/highlighting/comment_color", comment_color, true);
|
||||
setting->set_initial_value("text_editor/theme/highlighting/doc_comment_color", doc_comment_color, true);
|
||||
setting->set_initial_value("text_editor/theme/highlighting/string_color", string_color, true);
|
||||
setting->set_initial_value("text_editor/theme/highlighting/background_color", te_background_color, true);
|
||||
setting->set_initial_value("text_editor/theme/highlighting/completion_background_color", completion_background_color, true);
|
||||
|
||||
@ -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