From dcee85455b1bab9ae876d227371199818c063b43 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Thu, 11 Jan 2018 13:06:59 +0100 Subject: [PATCH] + cleanup: NimLexer = NimrodLexer -> rely on Scintilla distribution for Nim(rod) lexer --- scintilla/Scintilla.vcxproj | 2 +- scintilla/Scintilla.vcxproj.filters | 2 +- scintilla/include/SciLexer.h | 1 - scintilla/include/Scintilla.iface | 1 - scintilla/lexers/LexNim.cxx | 431 ---------------------------- scintilla/src/Catalogue.cxx | 2 +- src/Notepad3.c | 6 +- src/Styles.c | 36 +-- 8 files changed, 24 insertions(+), 457 deletions(-) delete mode 100644 scintilla/lexers/LexNim.cxx diff --git a/scintilla/Scintilla.vcxproj b/scintilla/Scintilla.vcxproj index bd769691f..0774548c5 100644 --- a/scintilla/Scintilla.vcxproj +++ b/scintilla/Scintilla.vcxproj @@ -271,7 +271,7 @@ - + diff --git a/scintilla/Scintilla.vcxproj.filters b/scintilla/Scintilla.vcxproj.filters index f51a20f50..458cb2b1d 100644 --- a/scintilla/Scintilla.vcxproj.filters +++ b/scintilla/Scintilla.vcxproj.filters @@ -441,7 +441,7 @@ onigmo - + lexers diff --git a/scintilla/include/SciLexer.h b/scintilla/include/SciLexer.h index 00415438b..b3bf96956 100644 --- a/scintilla/include/SciLexer.h +++ b/scintilla/include/SciLexer.h @@ -136,7 +136,6 @@ #define SCLEX_EDIFACT 121 #define SCLEX_INDENT 122 #define SCLEX_AHK 200 -#define SCLEX_NIM 201 #define SCLEX_AUTOMATIC 1000 #define SCE_P_DEFAULT 0 #define SCE_P_COMMENTLINE 1 diff --git a/scintilla/include/Scintilla.iface b/scintilla/include/Scintilla.iface index 889d3bc8a..4a833edad 100644 --- a/scintilla/include/Scintilla.iface +++ b/scintilla/include/Scintilla.iface @@ -2926,7 +2926,6 @@ val SCLEX_AUTOMATIC=1000 # Lexical states for SCLEX_PYTHON lex Python=SCLEX_PYTHON SCE_P_ lex Nimrod=SCLEX_NIMROD SCE_P_ -lex Nim=SCLEX_NIM SCE_P_ val SCE_P_DEFAULT=0 val SCE_P_COMMENTLINE=1 val SCE_P_NUMBER=2 diff --git a/scintilla/lexers/LexNim.cxx b/scintilla/lexers/LexNim.cxx deleted file mode 100644 index 311b0a26a..000000000 --- a/scintilla/lexers/LexNim.cxx +++ /dev/null @@ -1,431 +0,0 @@ -// Scintilla source code edit control -// Nim lexer -// (c) 2009 Andreas Rumpf -/** @file LexNim.cxx - ** Lexer for Nim. - **/ -// Copyright 1998-2002 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include -#include -#include -#include -#include -#include - -#include "ILexer.h" -#include "Scintilla.h" -#include "SciLexer.h" - -#include "WordList.h" -#include "LexAccessor.h" -#include "Accessor.h" -#include "StyleContext.h" -#include "CharacterSet.h" -#include "LexerModule.h" - -using namespace Scintilla; - -static inline bool IsAWordChar(int ch) { - return (ch >= 0x80) || isalnum(ch) || ch == '_'; -} - -static Sci_Position tillEndOfTripleQuote(Accessor &styler, Sci_Position pos, Sci_Position max) { - /* search for """ */ - for (;;) { - if (styler.SafeGetCharAt(pos, '\0') == '\0') return pos; - if (pos >= max) return pos; - if (styler.Match(pos, "\"\"\"")) { - return pos + 2; - } - pos++; - } -} - -#define CR 13 /* use both because Scite allows changing the line ending */ -#define LF 10 - -static bool inline isNewLine(int ch) { - return ch == CR || ch == LF; -} - -static Sci_Position scanString(Accessor &styler, Sci_Position pos, Sci_Position max, bool rawMode) { - for (;;) { - if (pos >= max) return pos; - char ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == CR || ch == LF || ch == '\0') return pos; - if (ch == '"') return pos; - if (ch == '\\' && !rawMode) { - pos += 2; - } else { - pos++; - } - } -} - -static Sci_Position scanChar(Accessor &styler, Sci_Position pos, Sci_Position max) { - for (;;) { - if (pos >= max) return pos; - char ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == CR || ch == LF || ch == '\0') return pos; - if (ch == '\'' && !isalnum(styler.SafeGetCharAt(pos+1, '\0')) ) - return pos; - if (ch == '\\') { - pos += 2; - } else { - pos++; - } - } -} - -static Sci_Position scanIdent(Accessor &styler, Sci_Position pos, WordList &keywords) { - char buf[100]; /* copy to lowercase and ignore underscores */ - Sci_Position i = 0; - - for (;;) { - char ch = styler.SafeGetCharAt(pos, '\0'); - if (!IsAWordChar(ch)) break; - if (ch != '_' && i < ((int)sizeof(buf))-1) { - buf[i] = static_cast(tolower(ch)); - i++; - } - pos++; - } - buf[i] = '\0'; - /* look for keyword */ - if (keywords.InList(buf)) { - styler.ColourTo(pos-1, SCE_P_WORD); - } else { - styler.ColourTo(pos-1, SCE_P_IDENTIFIER); - } - return pos; -} - -static Sci_Position scanNumber(Accessor &styler, Sci_Position pos) { - char ch, ch2; - ch = styler.SafeGetCharAt(pos, '\0'); - ch2 = styler.SafeGetCharAt(pos+1, '\0'); - if (ch == '0' && (ch2 == 'b' || ch2 == 'B')) { - /* binary number: */ - pos += 2; - for (;;) { - ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == '_' || (ch >= '0' && ch <= '1')) ++pos; - else break; - } - } else if (ch == '0' && - (ch2 == 'o' || ch2 == 'O' || ch2 == 'c' || ch2 == 'C')) { - /* octal number: */ - pos += 2; - for (;;) { - ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == '_' || (ch >= '0' && ch <= '7')) ++pos; - else break; - } - } else if (ch == '0' && (ch2 == 'x' || ch2 == 'X')) { - /* hexadecimal number: */ - pos += 2; - for (;;) { - ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == '_' || (ch >= '0' && ch <= '9') - || (ch >= 'a' && ch <= 'f') - || (ch >= 'A' && ch <= 'F')) ++pos; - else break; - } - } else { - // skip decimal part: - for (;;) { - ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == '_' || (ch >= '0' && ch <= '9')) ++pos; - else break; - } - ch2 = styler.SafeGetCharAt(pos+1, '\0'); - if (ch == '.' && ch2 >= '0' && ch2 <= '9') { - ++pos; // skip '.' - for (;;) { - ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == '_' || (ch >= '0' && ch <= '9')) ++pos; - else break; - } - } - if (ch == 'e' || ch == 'E') { - ++pos; - ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == '-' || ch == '+') ++pos; - for (;;) { - ch = styler.SafeGetCharAt(pos, '\0'); - if (ch == '_' || (ch >= '0' && ch <= '9')) ++pos; - else break; - } - } - } - if (ch == '\'') { - /* a type suffix: */ - pos++; - for (;;) { - ch = styler.SafeGetCharAt(pos); - if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') - || (ch >= 'a' && ch <= 'z') || ch == '_') ++pos; - else break; - } - } - styler.ColourTo(pos-1, SCE_P_NUMBER); - return pos; -} - -/* rewritten from scratch, because I couldn't get rid of the bugs... - (A character based approach sucks!) -*/ -static void ColouriseNimDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, - WordList *keywordlists[], Accessor &styler) { - Sci_Position pos = startPos; - Sci_Position max = startPos + length; - char ch; - WordList &keywords = *keywordlists[0]; - - styler.StartAt(startPos); - styler.StartSegment(startPos); - - switch (initStyle) { - /* check where we are: */ - case SCE_P_TRIPLEDOUBLE: - pos = tillEndOfTripleQuote(styler, pos, max); - styler.ColourTo(pos, SCE_P_TRIPLEDOUBLE); - pos++; - break; - default: /* nothing to do: */ - break; - } - while (pos < max) { - ch = styler.SafeGetCharAt(pos, '\0'); - switch (ch) { - case '\0': return; - case '#': { - bool doccomment = (styler.SafeGetCharAt(pos+1) == '#'); - while (pos < max && !isNewLine(styler.SafeGetCharAt(pos, LF))) pos++; - if (doccomment) - styler.ColourTo(pos, SCE_C_COMMENTLINEDOC); - else - styler.ColourTo(pos, SCE_P_COMMENTLINE); - } break; - case 'r': case 'R': { - if (styler.SafeGetCharAt(pos+1) == '"') { - pos = scanString(styler, pos+2, max, true); - styler.ColourTo(pos, SCE_P_STRING); - pos++; - } else { - pos = scanIdent(styler, pos, keywords); - } - } break; - case '"': - if (styler.Match(pos+1, "\"\"")) { - pos = tillEndOfTripleQuote(styler, pos+3, max); - styler.ColourTo(pos, SCE_P_TRIPLEDOUBLE); - } else { - pos = scanString(styler, pos+1, max, false); - styler.ColourTo(pos, SCE_P_STRING); - } - pos++; - break; - case '\'': - pos = scanChar(styler, pos+1, max); - styler.ColourTo(pos, SCE_P_CHARACTER); - pos++; - break; - default: // identifers, numbers, operators, whitespace - if (ch >= '0' && ch <= '9') { - pos = scanNumber(styler, pos); - } else if (IsAWordChar(ch)) { - pos = scanIdent(styler, pos, keywords); - } else if (ch == '`') { - pos++; - while (pos < max) { - ch = styler.SafeGetCharAt(pos, LF); - if (ch == '`') { - ++pos; - break; - } - if (ch == CR || ch == LF) break; - ++pos; - } - styler.ColourTo(pos, SCE_P_IDENTIFIER); - } else if (strchr("()[]{}:=;-\\/&%$!+<>|^?,.*~@", ch)) { - styler.ColourTo(pos, SCE_P_OPERATOR); - pos++; - } else { - styler.ColourTo(pos, SCE_P_DEFAULT); - pos++; - } - break; - } - } -} - -static bool IsCommentLine(Sci_Position line, Accessor &styler) { - Sci_Position pos = styler.LineStart(line); - Sci_Position eol_pos = styler.LineStart(line + 1) - 1; - for (Sci_Position i = pos; i < eol_pos; i++) { - char ch = styler[i]; - if (ch == '#') - return true; - else if (ch != ' ' && ch != '\t') - return false; - } - return false; -} - -static bool IsQuoteLine(Sci_Position line, Accessor &styler) { - int style = styler.StyleAt(styler.LineStart(line)) & 31; - return ((style == SCE_P_TRIPLE) || (style == SCE_P_TRIPLEDOUBLE)); -} - - -static void FoldNimDoc(Sci_PositionU startPos, Sci_Position length, - int /*initStyle - unused*/, - WordList *[], Accessor &styler) { - const Sci_Position maxPos = startPos + length; - const Sci_Position maxLines = styler.GetLine(maxPos - 1); // Requested last line - const Sci_Position docLines = styler.GetLine(styler.Length() - 1); // Available last line - const bool foldComment = styler.GetPropertyInt("fold.comment.nim") != 0; - const bool foldQuotes = styler.GetPropertyInt("fold.quotes.nim") != 0; - - // Backtrack to previous non-blank line so we can determine indent level - // for any white space lines (needed esp. within triple quoted strings) - // and so we can fix any preceding fold level (which is why we go back - // at least one line in all cases) - int spaceFlags = 0; - Sci_Position lineCurrent = styler.GetLine(startPos); - int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL); - while (lineCurrent > 0) { - lineCurrent--; - indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL); - if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG) && - (!IsCommentLine(lineCurrent, styler)) && - (!IsQuoteLine(lineCurrent, styler))) - break; - } - int indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK; - - // Set up initial loop state - startPos = styler.LineStart(lineCurrent); - int prev_state = SCE_P_DEFAULT & 31; - if (lineCurrent >= 1) - prev_state = styler.StyleAt(startPos - 1) & 31; - int prevQuote = foldQuotes && ((prev_state == SCE_P_TRIPLE) || - (prev_state == SCE_P_TRIPLEDOUBLE)); - int prevComment = 0; - if (lineCurrent >= 1) - prevComment = foldComment && IsCommentLine(lineCurrent - 1, styler); - - // Process all characters to end of requested range or end of any triple quote - // or comment that hangs over the end of the range. Cap processing in all cases - // to end of document (in case of unclosed quote or comment at end). - while ((lineCurrent <= docLines) && ((lineCurrent <= maxLines) || - prevQuote || prevComment)) { - - // Gather info - int lev = indentCurrent; - Sci_Position lineNext = lineCurrent + 1; - int indentNext = indentCurrent; - int quote = false; - if (lineNext <= docLines) { - // Information about next line is only available if not at end of document - indentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL); - int style = styler.StyleAt(styler.LineStart(lineNext)) & 31; - quote = foldQuotes && ((style == SCE_P_TRIPLE) || (style == SCE_P_TRIPLEDOUBLE)); - } - const int quote_start = (quote && !prevQuote); - const int quote_continue = (quote && prevQuote); - const int comment = foldComment && IsCommentLine(lineCurrent, styler); - const int comment_start = (comment && !prevComment && (lineNext <= docLines) && - IsCommentLine(lineNext, styler) && - (lev > SC_FOLDLEVELBASE)); - const int comment_continue = (comment && prevComment); - if ((!quote || !prevQuote) && !comment) - indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK; - if (quote) - indentNext = indentCurrentLevel; - if (indentNext & SC_FOLDLEVELWHITEFLAG) - indentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel; - - if (quote_start) { - // Place fold point at start of triple quoted string - lev |= SC_FOLDLEVELHEADERFLAG; - } else if (quote_continue || prevQuote) { - // Add level to rest of lines in the string - lev = lev + 1; - } else if (comment_start) { - // Place fold point at start of a block of comments - lev |= SC_FOLDLEVELHEADERFLAG; - } else if (comment_continue) { - // Add level to rest of lines in the block - lev = lev + 1; - } - - // Skip past any blank lines for next indent level info; we skip also - // comments (all comments, not just those starting in column 0) - // which effectively folds them into surrounding code rather - // than screwing up folding. - - while (!quote && - (lineNext < docLines) && - ((indentNext & SC_FOLDLEVELWHITEFLAG) || - (lineNext <= docLines && IsCommentLine(lineNext, styler)))) { - - lineNext++; - indentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL); - } - - const int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK; - const int levelBeforeComments = - Maximum(indentCurrentLevel,levelAfterComments); - - // Now set all the indent levels on the lines we skipped - // Do this from end to start. Once we encounter one line - // which is indented more than the line after the end of - // the comment-block, use the level of the block before - - Sci_Position skipLine = lineNext; - int skipLevel = levelAfterComments; - - while (--skipLine > lineCurrent) { - int skipLineIndent = styler.IndentAmount(skipLine, &spaceFlags, NULL); - - if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments) - skipLevel = levelBeforeComments; - - int whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG; - - styler.SetLevel(skipLine, skipLevel | whiteFlag); - } - - // Set fold header on non-quote/non-comment line - if (!quote && !comment && !(indentCurrent & SC_FOLDLEVELWHITEFLAG) ) { - if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < - (indentNext & SC_FOLDLEVELNUMBERMASK)) - lev |= SC_FOLDLEVELHEADERFLAG; - } - - // Keep track of triple quote and block comment state of previous line - prevQuote = quote; - prevComment = comment_start || comment_continue; - - // Set fold level for this line and move to next line - styler.SetLevel(lineCurrent, lev); - indentCurrent = indentNext; - lineCurrent = lineNext; - } - - // NOTE: Cannot set level of last line here because indentCurrent doesn't have - // header flag set; the loop above is crafted to take care of this case! - //styler.SetLevel(lineCurrent, indentCurrent); -} - -static const char * const nimWordListDesc[] = { - "Keywords", - 0 -}; - -LexerModule lmNim(SCLEX_NIM, ColouriseNimDoc, "nim", FoldNimDoc, - nimWordListDesc); diff --git a/scintilla/src/Catalogue.cxx b/scintilla/src/Catalogue.cxx index c6cb2c674..57a34a12b 100644 --- a/scintilla/src/Catalogue.cxx +++ b/scintilla/src/Catalogue.cxx @@ -141,7 +141,7 @@ int Scintilla_LinkLexers() { //LINK_LEXER(lmMSSQL); //LINK_LEXER(lmMySQL); //LINK_LEXER(lmNimrod); - LINK_LEXER(lmNim); + LINK_LEXER(lmNimrod); //LINK_LEXER(lmNncrontab); LINK_LEXER(lmNsis); LINK_LEXER(lmNull); diff --git a/src/Notepad3.c b/src/Notepad3.c index da8a779e8..8e45abc36 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -2360,7 +2360,7 @@ void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam) i == SCLEX_SQL || i == SCLEX_PERL || i == SCLEX_PYTHON || i == SCLEX_PROPERTIES ||i == SCLEX_CONF || i == SCLEX_POWERSHELL || i == SCLEX_BATCH || i == SCLEX_DIFF || i == SCLEX_BASH || i == SCLEX_TCL || i == SCLEX_AU3 || i == SCLEX_LATEX || i == SCLEX_AHK || i == SCLEX_RUBY || i == SCLEX_CMAKE || i == SCLEX_MARKDOWN || - i == SCLEX_YAML || i == SCLEX_REGISTRY || i == SCLEX_NIM)); + i == SCLEX_YAML || i == SCLEX_REGISTRY || i == SCLEX_NIMROD)); EnableCmd(hmenu,IDM_EDIT_INSERT_ENCODING,*mEncoding[Encoding_Current(CPI_GET)].pszParseNames); @@ -3729,7 +3729,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case SCLEX_AVS: case SCLEX_YAML: case SCLEX_COFFEESCRIPT: - case SCLEX_NIM: + case SCLEX_NIMROD: BeginWaitCursor(NULL); EditToggleLineComments(g_hwndEdit,L"#",TRUE); EndWaitCursor(); @@ -3797,7 +3797,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) case SCLEX_YAML: case SCLEX_JSON: case SCLEX_REGISTRY: - case SCLEX_NIM: + case SCLEX_NIMROD: break; case SCLEX_HTML: case SCLEX_XML: diff --git a/src/Styles.c b/src/Styles.c index 88d2ffaf9..10806ecc8 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -2798,7 +2798,7 @@ EDITLEXER lexAwk = { SCLEX_PYTHON, 63024, L"Awk Script", L"awk", L"", &KeyWords -KEYWORDLIST KeyWords_Nim = { +KEYWORDLIST KeyWords_Nimrod = { "addr and as asm atomic bind block break case cast concept const continue converter " "defer discard distinct div do elif else end enum except export finally for from func " "generic if import in include interface is isnot iterator let macro method mixin mod " @@ -2807,21 +2807,21 @@ KEYWORDLIST KeyWords_Nim = { "", "", "", "", "", "", "", "" }; -EDITLEXER lexNim = { SCLEX_NIM, 63044, L"Nim Source Code", L"nim", L"", &KeyWords_Nim,{ - { STYLE_DEFAULT, 63126, L"Default", L"", L"" }, - //{ SCE_P_DEFAULT, 63126, L"Default", L"", L"" }, - { MULTI_STYLE(SCE_P_COMMENTLINE,SCE_P_COMMENTBLOCK,SCE_C_COMMENTLINEDOC,0), 63127, L"Comment", L"fore:#880000", L"" }, - { SCE_P_WORD, 63128, L"Keyword", L" bold; fore:#000088", L"" }, - { SCE_P_IDENTIFIER, 63129, L"Identifier", L"", L"" }, - { MULTI_STYLE(SCE_P_STRING,SCE_P_STRINGEOL,0,0), 63211, L"String double quoted", L"fore:#008800", L"" }, - { SCE_P_CHARACTER, 63212, L"String single quoted", L"fore:#008800", L"" }, - { SCE_P_TRIPLEDOUBLE, 63244, L"String triple double quotes", L"fore:#008800", L"" }, - { SCE_P_TRIPLE, 63245, L"String triple single quotes", L"fore:#008800", L"" }, - { SCE_P_NUMBER, 63130, L"Number", L"fore:#FF4000", L"" }, - { SCE_P_OPERATOR, 63132, L"Operator", L"bold; fore:#666600", L"" }, - //{ SCE_P_DEFNAME, 63247, L"Function name", L"fore:#660066", L"" }, - //{ SCE_P_CLASSNAME, 63246, L"Class name", L"fore:#660066", L"" }, - { -1, 00000, L"", L"", L"" } } }; +EDITLEXER lexNimrod = { SCLEX_NIMROD, 63044, L"Nim Source Code", L"nim; nimrod", L"", &KeyWords_Nimrod,{ + { STYLE_DEFAULT, 63126, L"Default", L"", L"" }, + //{ SCE_P_DEFAULT, 63126, L"Default", L"", L"" }, + { MULTI_STYLE(SCE_P_COMMENTLINE,SCE_P_COMMENTBLOCK,SCE_C_COMMENTLINEDOC,0), 63127, L"Comment", L"fore:#880000", L"" }, + { SCE_P_WORD, 63128, L"Keyword", L" bold; fore:#000088", L"" }, + { SCE_P_IDENTIFIER, 63129, L"Identifier", L"", L"" }, + { MULTI_STYLE(SCE_P_STRING,SCE_P_STRINGEOL,0,0), 63211, L"String double quoted", L"fore:#008800", L"" }, + { SCE_P_CHARACTER, 63212, L"String single quoted", L"fore:#008800", L"" }, + { SCE_P_TRIPLEDOUBLE, 63244, L"String triple double quotes", L"fore:#008800", L"" }, + { SCE_P_TRIPLE, 63245, L"String triple single quotes", L"fore:#008800", L"" }, + { SCE_P_NUMBER, 63130, L"Number", L"fore:#FF4000", L"" }, + { SCE_P_OPERATOR, 63132, L"Operator", L"bold; fore:#666600", L"" }, + //{ SCE_P_DEFNAME, 63247, L"Function name", L"fore:#660066", L"" }, + //{ SCE_P_CLASSNAME, 63246, L"Class name", L"fore:#660066", L"" }, + { -1, 00000, L"", L"", L"" } } }; @@ -2858,7 +2858,7 @@ static PEDITLEXER pLexArray[NUMLEXERS] = &lexMAK, // Makefiles &lexMARKDOWN, // Markdown &lexMATLAB, // MATLAB - &lexNim, // Nim + &lexNimrod, // Nim(rod) &lexNSIS, // NSIS Script &lexPAS, // Pascal Source Code &lexPL, // Perl Script @@ -4282,7 +4282,7 @@ void Style_SetIndentGuides(HWND hwnd,BOOL bShow) if (!flagSimpleIndentGuides) { switch (SendMessage(hwnd, SCI_GETLEXER, 0, 0)) { case SCLEX_PYTHON: - case SCLEX_NIM: + case SCLEX_NIMROD: iIndentView = SC_IV_LOOKFORWARD; break; default: