From 7998ecd990e61a9efa5cb594c14b7569baf5f1f9 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Sun, 25 Jan 2009 04:45:57 -0700 Subject: Fixed single line comment highlighting --- ChangeLog.txt | 3 +++ linden/indra/llui/llkeywords.cpp | 40 +++++++++++++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 6f6cd91..2f9f8ee 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -22,6 +22,9 @@ * linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml: Ditto. + * linden/indra/llui/llkeywords.cpp: + Fixed single line comment highlighting. + 2009-01-22 McCabe Maxsted diff --git a/linden/indra/llui/llkeywords.cpp b/linden/indra/llui/llkeywords.cpp index 8cd33a2..cd58d70 100644 --- a/linden/indra/llui/llkeywords.cpp +++ b/linden/indra/llui/llkeywords.cpp @@ -412,6 +412,22 @@ void LLKeywords::findSegments(std::vector* seg_list, const LLWS break; } } + else if (cur_delimiter->isHead(cur)) + { + // Is there was an odd number of backslashes, then this delimiter + // does not end the sequence. + if (num_backslashes % 2 == 1) + { + between_delimiters++; + cur++; + } + else + { + // This is an end delimiter. + break; + } + } + } else { @@ -423,9 +439,25 @@ void LLKeywords::findSegments(std::vector* seg_list, const LLWS if( *cur ) { cur += cur_delimiter->getLength(); - seg_end = seg_start + between_delimiters - + cur_delimiter->getLength() - + cur_delimiter->getLength2(); + if (cur_delimiter->getType() == LLKeywordToken::TWO_SIDED_DELIMITER) + { + seg_end = seg_start + between_delimiters + 2 * cur_delimiter->getLength(); + } + else if (cur_delimiter->getType() == LLKeywordToken::ONE_SIDED_DELIMITER) + { + while( *cur && ('\n' != *cur) ) + { + between_delimiters++; + cur++; + } + seg_end = seg_start + between_delimiters + 2 + cur_delimiter->getLength(); + } + else + { + seg_end = seg_start + between_delimiters + + cur_delimiter->getLength() + + cur_delimiter->getLength2(); + } } else { @@ -435,7 +467,6 @@ void LLKeywords::findSegments(std::vector* seg_list, const LLWS } else { - llassert( cur_delimiter->getType() == LLKeywordToken::ONE_SIDED_DELIMITER ); // Left side is the delimiter. Right side is eol or eof. while( *cur && ('\n' != *cur) ) { @@ -445,7 +476,6 @@ void LLKeywords::findSegments(std::vector* seg_list, const LLWS seg_end = seg_start + between_delimiters + cur_delimiter->getLength(); } - LLTextSegment* text_segment = new LLTextSegment( cur_delimiter->getColor(), seg_start, seg_end ); text_segment->setToken( cur_delimiter ); insertSegment( seg_list, text_segment, text_len, defaultColor); -- cgit v1.1