diff options
-rw-r--r-- | include/SciLexer.h | 2 | ||||
-rw-r--r-- | include/Scintilla.iface | 2 | ||||
-rw-r--r-- | src/LexOthers.cxx | 19 |
3 files changed, 21 insertions, 2 deletions
diff --git a/include/SciLexer.h b/include/SciLexer.h index 2115aae1a..5e4ad6c34 100644 --- a/include/SciLexer.h +++ b/include/SciLexer.h @@ -279,6 +279,8 @@ #define SCE_ERR_DIFF_DELETION 12 #define SCE_ERR_DIFF_MESSAGE 13 #define SCE_ERR_PHP 14 +#define SCE_ERR_ELF 15 +#define SCE_ERR_IFC 16 #define SCE_BAT_DEFAULT 0 #define SCE_BAT_COMMENT 1 #define SCE_BAT_WORD 2 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index f91749a6e..bcd10f9b1 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -1811,6 +1811,8 @@ val SCE_ERR_DIFF_ADDITION=11 val SCE_ERR_DIFF_DELETION=12 val SCE_ERR_DIFF_MESSAGE=13 val SCE_ERR_PHP=14 +val SCE_ERR_ELF=15 +val SCE_ERR_IFC=16 # Lexical states for SCLEX_BATCH lex Batch=SCLEX_BATCH SCE_BAT_ val SCE_BAT_DEFAULT=0 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 |