diff options
-rw-r--r-- | lexers/LexOthers.cxx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lexers/LexOthers.cxx b/lexers/LexOthers.cxx index 720d97930..5f4eaed2d 100644 --- a/lexers/LexOthers.cxx +++ b/lexers/LexOthers.cxx @@ -1015,7 +1015,7 @@ static int RecogniseErrorListLine(const char *lineBuffer, unsigned int lengthLin bool initialTab = (lineBuffer[0] == '\t'); bool initialColonPart = false; enum { stInitial, - stGccStart, stGccDigit, stGcc, + stGccStart, stGccDigit, stGccColumn, stGcc, stMsStart, stMsDigit, stMsBracket, stMsVc, stMsDigitComma, stMsDotNet, stCtagsStart, stCtagsStartString, stCtagsStringDollar, stCtags, stUnrecognized @@ -1047,12 +1047,18 @@ static int RecogniseErrorListLine(const char *lineBuffer, unsigned int lengthLin state = Is1To9(ch) ? stGccDigit : stUnrecognized; } else if (state == stGccDigit) { // <filename>:<line> if (ch == ':') { - state = stGcc; // :9.*: is GCC + state = stGccColumn; // :9.*: is GCC startValue = i + 1; - break; } else if (!Is0To9(ch)) { state = stUnrecognized; } + } else if (state == stGccColumn) { // <filename>:<line>:<column> + if (!Is0To9(ch)) { + state = stGcc; + if (ch == ':') + startValue = i + 1; + break; + } } else if (state == stMsStart) { // <filename>( state = Is0To9(ch) ? stMsDigit : stUnrecognized; } else if (state == stMsDigit) { // <filename>(<line> |