aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--doc/ScintillaHistory.html4
-rw-r--r--include/SciLexer.h1
-rw-r--r--include/Scintilla.iface1
-rw-r--r--lexers/LexCPP.cxx10
4 files changed, 14 insertions, 2 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html
index e2f9aa4d4..6b9098979 100644
--- a/doc/ScintillaHistory.html
+++ b/doc/ScintillaHistory.html
@@ -458,6 +458,10 @@
<a href="http://sourceforge.net/p/scintilla/feature-requests/987/">Feature #987.</a>
</li>
<li>
+ C++ lexer adds style for preprocessor doc comment.
+ <a href="http://sourceforge.net/p/scintilla/feature-requests/990/">Feature #990.</a>
+ </li>
+ <li>
Haskell folder improved.
<a href="http://sourceforge.net/p/scintilla/bugs/1459/">Bug #1459 </a>.
</li>
diff --git a/include/SciLexer.h b/include/SciLexer.h
index ef92c9433..506848a1c 100644
--- a/include/SciLexer.h
+++ b/include/SciLexer.h
@@ -161,6 +161,7 @@
#define SCE_C_TRIPLEVERBATIM 21
#define SCE_C_HASHQUOTEDSTRING 22
#define SCE_C_PREPROCESSORCOMMENT 23
+#define SCE_C_PREPROCESSORCOMMENTDOC 24
#define SCE_D_DEFAULT 0
#define SCE_D_COMMENT 1
#define SCE_D_COMMENTLINE 2
diff --git a/include/Scintilla.iface b/include/Scintilla.iface
index f98cbdff4..a4c8c29f6 100644
--- a/include/Scintilla.iface
+++ b/include/Scintilla.iface
@@ -2628,6 +2628,7 @@ val SCE_C_STRINGRAW=20
val SCE_C_TRIPLEVERBATIM=21
val SCE_C_HASHQUOTEDSTRING=22
val SCE_C_PREPROCESSORCOMMENT=23
+val SCE_C_PREPROCESSORCOMMENTDOC=24
# Lexical states for SCLEX_D
lex D=SCLEX_D SCE_D_
val SCE_D_DEFAULT=0
diff --git a/lexers/LexCPP.cxx b/lexers/LexCPP.cxx
index 9b56641e6..03e8ff990 100644
--- a/lexers/LexCPP.cxx
+++ b/lexers/LexCPP.cxx
@@ -672,7 +672,7 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
sc.SetState(SCE_C_DEFAULT|activitySet);
}
break;
- case SCE_C_PREPROCESSOR:
+ case SCE_C_PREPROCESSOR:
if (options.stylingWithinPreprocessor) {
if (IsASpace(sc.ch)) {
sc.SetState(SCE_C_DEFAULT|activitySet);
@@ -683,7 +683,12 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
if ((isIncludePreprocessor && sc.Match('<')) || sc.Match('\"')) {
isStringInPreprocessor = true;
} else if (sc.Match('/', '*')) {
- sc.SetState(SCE_C_PREPROCESSORCOMMENT|activitySet);
+ if (sc.Match("/**") || sc.Match("/*!")) {
+ sc.SetState(SCE_C_PREPROCESSORCOMMENTDOC|activitySet);
+ sc.Forward();
+ } else {
+ sc.SetState(SCE_C_PREPROCESSORCOMMENT|activitySet);
+ }
sc.Forward(); // Eat the *
} else if (sc.Match('/', '/')) {
sc.SetState(SCE_C_DEFAULT|activitySet);
@@ -691,6 +696,7 @@ void SCI_METHOD LexerCPP::Lex(unsigned int startPos, int length, int initStyle,
}
break;
case SCE_C_PREPROCESSORCOMMENT:
+ case SCE_C_PREPROCESSORCOMMENTDOC:
if (sc.Match('*', '/')) {
sc.Forward();
sc.ForwardSetState(SCE_C_PREPROCESSOR|activitySet);