From 66134ea38166742444720a4fe2f8d95effd8866a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 11 Jun 2010 15:35:11 +0000 Subject: patch [#22570] Text editor syntax coloring update from Jacob F (raccoon) This does two things to the text editor: 1) Adds coloring (same color as numbers) for True and False. 2) Fixes [#22551] Syntax coloring offset does not update when using real tabs and changing tab width --- source/blender/editors/space_text/space_text.c | 4 +--- source/blender/editors/space_text/text_draw.c | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) (limited to 'source/blender/editors/space_text') diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 3a23cd32629..96b38f2e78d 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -118,15 +118,13 @@ static void text_listener(ScrArea *sa, wmNotifier *wmn) /* context changes */ switch(wmn->category) { case NC_TEXT: - if(!wmn->reference || wmn->reference == st->text) { + if(!wmn->reference || wmn->reference == st->text || wmn->data == ND_DISPLAY || wmn->action == NA_EDITED) { ED_area_tag_redraw(sa); if(wmn->action == NA_EDITED) if(st->text) text_update_edited(st->text); } - else if(wmn->data == ND_DISPLAY) - ED_area_tag_redraw(sa); break; case NC_SPACE: diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c index 7ae432e3d6f..3a891a66107 100644 --- a/source/blender/editors/space_text/text_draw.c +++ b/source/blender/editors/space_text/text_draw.c @@ -224,6 +224,21 @@ static int find_specialvar(char *string) return i; } +static int find_bool(char *string) +{ + int i = 0; + /* Check for "False" */ + if(string[0]=='F' && string[1]=='a' && string[2]=='l' && string[3]=='s' && string[4]=='e') + i = 5; + /* Check for "True" */ + else if(string[0]=='T' && string[1]=='r' && string[2]=='u' && string[3]=='e') + i = 4; + /* If next source char is an identifier (eg. 'i' in "definate") no match */ + if(i==0 || text_check_identifier(string[i])) + return -1; + return i; +} + /* Ensures the format string for the given line is long enough, reallocating as needed. Allocation is done here, alone, to ensure consistency. */ int text_check_format_len(TextLine *line, unsigned int len) @@ -335,6 +350,17 @@ static void txt_format_line(SpaceText *st, TextLine *line, int do_next) /* Numbers (digits not part of an identifier and periods followed by digits) */ else if((prev != 'q' && text_check_digit(*str)) || (*str == '.' && text_check_digit(*(str+1)))) *fmt = 'n'; + /* Booleans */ + else if(prev != 'q' && (i=find_bool(str)) != -1) + if(i>0) { + while(i>1) { + *fmt = 'n'; fmt++; str++; + i--; + } + *fmt = 'n'; + } + else + *fmt = 'q'; /* Punctuation */ else if(text_check_delim(*str)) *fmt = '!'; -- cgit v1.2.3