diff options
Diffstat (limited to 'src/LexOthers.cxx')
-rw-r--r-- | src/LexOthers.cxx | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/LexOthers.cxx b/src/LexOthers.cxx index 67457f0ee..54ecb6c9d 100644 --- a/src/LexOthers.cxx +++ b/src/LexOthers.cxx @@ -343,6 +343,10 @@ static void ColouriseMakeDoc(unsigned int startPos, int length, int, WordList *[ } } +static bool strstart(char *haystack, char *needle) { + return strncmp(haystack, needle, strlen(needle)) == 0; +} + static void ColouriseErrorListLine( char *lineBuffer, unsigned int lengthLine, @@ -367,10 +371,17 @@ static void ColouriseErrorListLine( styler.ColourTo(endPos, SCE_ERR_PYTHON); } else if (strstr(lineBuffer, " in ") && strstr(lineBuffer, " on line ")) { styler.ColourTo(endPos, SCE_ERR_PHP); - } else if (0 == strncmp(lineBuffer, "Error ", strlen("Error "))) { + } else if ((strstart(lineBuffer, "Error ") || + strstart(lineBuffer, "Warning ")) && + strstr(lineBuffer, " at (") && + strstr(lineBuffer, ") : ") && + (strstr(lineBuffer, " at (") < strstr(lineBuffer, ") : "))) { + // Intel Fortran Compiler error/warning message + styler.ColourTo(endPos, SCE_ERR_IFC); + } else if (strstart(lineBuffer, "Error ")) { // Borland error message styler.ColourTo(endPos, SCE_ERR_BORLAND); - } else if (0 == strncmp(lineBuffer, "Warning ", strlen("Warning "))) { + } else if (strstart(lineBuffer, "Warning ")) { // Borland warning message styler.ColourTo(endPos, SCE_ERR_BORLAND); } else if (strstr(lineBuffer, "at line " ) && @@ -389,6 +400,10 @@ static void ColouriseErrorListLine( strstr(lineBuffer, ":line ")) { // A .NET traceback styler.ColourTo(endPos, SCE_ERR_NET); + } else if (strstart(lineBuffer, "Line ") && + strstr(lineBuffer, ", file ")) { + // Essential Lahey Fortran error message + styler.ColourTo(endPos, SCE_ERR_ELF); } else { // Look for GCC <filename>:<line>:message // Look for Microsoft <filename>(line)message |