diff options
Diffstat (limited to 'src/LexPascal.cxx')
-rw-r--r-- | src/LexPascal.cxx | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/LexPascal.cxx b/src/LexPascal.cxx index ee568c77f..458640767 100644 --- a/src/LexPascal.cxx +++ b/src/LexPascal.cxx @@ -42,7 +42,6 @@ static int classifyWordPascal(unsigned int start, unsigned int end, WordList &ke static void ColourisePascalDoc(unsigned int startPos, int length, int initStyle, WordList *keywordlists[], Accessor &styler) { - WordList &keywords = *keywordlists[0]; styler.StartAt(startPos); @@ -97,10 +96,15 @@ static void ColourisePascalDoc(unsigned int startPos, int length, int initStyle, if (state == SCE_C_DEFAULT) { if (iswordstart(ch) || (ch == '@')) { styler.ColourTo(i-1, state); - state = SCE_C_IDENTIFIER; + state = SCE_C_IDENTIFIER; } else if (ch == '{' && chNext != '$' && chNext != '&') { styler.ColourTo(i-1, state); - state = SCE_C_COMMENT; + state = SCE_C_COMMENT; + } else if (ch == '(' && chNext == '*' + && styler.SafeGetCharAt(i + 2) != '$' + && styler.SafeGetCharAt(i + 2) != '&') { + styler.ColourTo(i-1, state); + state = SCE_C_COMMENTDOC; } else if (ch == '/' && chNext == '/') { styler.ColourTo(i-1, state); state = SCE_C_COMMENTLINE; @@ -125,6 +129,11 @@ static void ColourisePascalDoc(unsigned int startPos, int length, int initStyle, chNext = styler.SafeGetCharAt(i + 1); if (ch == '{' && chNext != '$' && chNext != '&') { state = SCE_C_COMMENT; + } else if (ch == '(' && chNext == '*' + && styler.SafeGetCharAt(i + 2) != '$' + && styler.SafeGetCharAt(i + 2) != '&') { + styler.ColourTo(i-1, state); + state = SCE_C_COMMENTDOC; } else if (ch == '/' && chNext == '/') { state = SCE_C_COMMENTLINE; } else if (ch == '\"') { @@ -149,11 +158,16 @@ static void ColourisePascalDoc(unsigned int startPos, int length, int initStyle, } } else if (state == SCE_C_COMMENT) { if (ch == '}' ) { + styler.ColourTo(i, state); + state = SCE_C_DEFAULT; + } + } else if (state == SCE_C_COMMENTDOC) { + if (ch == ')' && chPrev == '*') { if (((i > styler.GetStartSegment() + 2) || ( - (initStyle == SCE_C_COMMENT) && + (initStyle == SCE_C_COMMENTDOC) && (styler.GetStartSegment() == static_cast<unsigned int>(startPos))))) { - styler.ColourTo(i, state); - state = SCE_C_DEFAULT; + styler.ColourTo(i, state); + state = SCE_C_DEFAULT; } } } else if (state == SCE_C_COMMENTLINE) { |