From 112199545716113a84342f278f8469322c12bd4c Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Fri, 1 Feb 2013 12:51:30 +0200 Subject: [PATCH] Add support for Matlab. --- Readme-mod.txt | 2 +- Readme.md | 2 +- lexlink.js | 1 + scintilla/Scintilla.vcxproj | 1 + scintilla/Scintilla.vcxproj.filters | 3 +++ scintilla/src/Catalogue.cxx | 2 +- src/Notepad2.c | 8 ++++++-- src/Styles.c | 22 ++++++++++++++++++++++ src/Styles.h | 2 +- 9 files changed, 37 insertions(+), 6 deletions(-) diff --git a/Readme-mod.txt b/Readme-mod.txt index 14d9f41f..5af8bdb9 100644 --- a/Readme-mod.txt +++ b/Readme-mod.txt @@ -7,7 +7,7 @@ Notable changes: * Option to mark all occurrences of a word * Word auto-completion * Syntax highlighting support for AutoHotkey, AutoIt3, AviSynth, Bash, - CMake, CoffeeScript, Inno Setup, LaTeX, Lua, Markdown, NSIS, Ruby, Tcl, YAML and VHDL scripts + CMake, CoffeeScript, Inno Setup, LaTeX, Lua, Markdown, MATLAB, NSIS, Ruby, Tcl, YAML and VHDL scripts * Improved support for NFO ANSI art * Support for replacing Windows Notepad using a clean, unintrusive registry-based method * Other various minor changes and tweaks diff --git a/Readme.md b/Readme.md index 7a9ed7fe..ad609bd5 100644 --- a/Readme.md +++ b/Readme.md @@ -12,7 +12,7 @@ * Option to mark all occurrences of a word * Word auto-completion * Syntax highlighting support for AutoHotkey, AutoIt3, AviSynth, Bash, CMake, CoffeeScript, - Inno Setup, LaTeX, Lua, Markdown, NSIS, Ruby, Tcl, YAML and VHDL scripts + Inno Setup, LaTeX, Lua, Markdown, MATLAB, NSIS, Ruby, Tcl, YAML and VHDL scripts * Improved support for NFO ANSI art * Support for replacing Windows Notepad using a clean, unintrusive registry-based method * Other various minor changes and tweaks diff --git a/lexlink.js b/lexlink.js index 20aa5d0a..146f3858 100644 --- a/lexlink.js +++ b/lexlink.js @@ -22,6 +22,7 @@ "lmLua", "lmMake", "lmMarkdown", + "lmMatlab", "lmNsis", "lmNull", "lmPascal", diff --git a/scintilla/Scintilla.vcxproj b/scintilla/Scintilla.vcxproj index 0be3d2b5..6469d22b 100644 --- a/scintilla/Scintilla.vcxproj +++ b/scintilla/Scintilla.vcxproj @@ -153,6 +153,7 @@ + diff --git a/scintilla/Scintilla.vcxproj.filters b/scintilla/Scintilla.vcxproj.filters index e49186e2..2bcc6792 100644 --- a/scintilla/Scintilla.vcxproj.filters +++ b/scintilla/Scintilla.vcxproj.filters @@ -75,6 +75,9 @@ lexers + + lexers + lexers diff --git a/scintilla/src/Catalogue.cxx b/scintilla/src/Catalogue.cxx index 3492ae03..6dd05aa6 100644 --- a/scintilla/src/Catalogue.cxx +++ b/scintilla/src/Catalogue.cxx @@ -136,7 +136,7 @@ int Scintilla_LinkLexers() { //LINK_LEXER(lmMagikSF); LINK_LEXER(lmMake); LINK_LEXER(lmMarkdown); - //LINK_LEXER(lmMatlab); + LINK_LEXER(lmMatlab); //LINK_LEXER(lmMETAPOST); //LINK_LEXER(lmMMIXAL); //LINK_LEXER(lmModula); diff --git a/src/Notepad2.c b/src/Notepad2.c index 4f26aa87..b7e8fdbb 100644 --- a/src/Notepad2.c +++ b/src/Notepad2.c @@ -3437,6 +3437,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) EndWaitCursor(); break; case SCLEX_LATEX: + case SCLEX_MATLAB: BeginWaitCursor(); EditToggleLineComments(hwndEdit,L"%",TRUE); EndWaitCursor(); @@ -3488,6 +3489,9 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) break; case SCLEX_COFFEESCRIPT: EditEncloseSelection(hwndEdit,L"###",L"###"); + break; + case SCLEX_MATLAB: + EditEncloseSelection(hwndEdit,L"%{",L"%}"); } break; @@ -6248,7 +6252,7 @@ void ParseCommandLine() LocalFree(lpSchemeArg); lpSchemeArg = NULL; } - iInitialLexer = 34; + iInitialLexer = 35; flagLexerSpecified = 1; break; @@ -6257,7 +6261,7 @@ void ParseCommandLine() LocalFree(lpSchemeArg); lpSchemeArg = NULL; } - iInitialLexer = 35; + iInitialLexer = 36; flagLexerSpecified = 1; break; diff --git a/src/Styles.c b/src/Styles.c index e2dace29..50dcd817 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -2459,6 +2459,7 @@ EDITLEXER lexYAML = { SCLEX_YAML, 63355, L"YAML", L"yaml; yml", L"", &KeyWords_Y { SCE_YAML_OPERATOR, 63132, L"Operator", L"fore:#333366", L"" }, { -1, 00000, L"", L"", L"" } } }; + KEYWORDLIST KeyWords_VHDL = { "access after alias all architecture array assert attribute begin block body buffer bus case component configuration " "constant disconnect downto else elsif end entity exit file for function generate generic group guarded if impure in " @@ -2515,6 +2516,26 @@ EDITLEXER lexCOFFEESCRIPT = { SCLEX_COFFEESCRIPT, 63362, L"Coffeescript", L"coff { -1, 00000, L"", L"", L"" } } }; +KEYWORDLIST KeyWords_MATLAB = { +"break case catch continue else elseif end for function global if otherwise " +"persistent return switch try while", +"", "", "", "", "", "", "", "" }; + + +EDITLEXER lexMATLAB = { SCLEX_MATLAB, 63360, L"MATLAB", L"matlab", L"", &KeyWords_MATLAB, { + { STYLE_DEFAULT, 63126, L"Default", L"", L"" }, + //{ SCE_MATLAB_DEFAULT, L"Default", L"", L"" }, + { SCE_MATLAB_COMMENT, 63127, L"Comment", L"fore:#008000", L"" }, + { SCE_MATLAB_COMMAND, 63236, L"Command", L"bold", L"" }, + { SCE_MATLAB_NUMBER, 63130, L"Number", L"fore:#FF8000", L"" }, + { SCE_MATLAB_KEYWORD, 63128, L"Keyword", L"fore:#00007F; bold", L"" }, + { MULTI_STYLE(SCE_MATLAB_STRING,SCE_MATLAB_DOUBLEQUOTESTRING,0,0), 63131, L"String", L"fore:#7F007F", L"" }, + { SCE_MATLAB_OPERATOR, 63132, L"Operator", L"", L"" }, + { SCE_MATLAB_IDENTIFIER, 63129, L"Identifier", L"", L"" }, + { -1, 00000, L"", L"", L"" } } }; + + + // This array holds all the lexers... // Don't forget to change the number of the lexer for HTML and XML // in Notepad2.c ParseCommandLine() if you change this array! @@ -2540,6 +2561,7 @@ PEDITLEXER pLexArray[NUMLEXERS] = &lexJS, &lexMAK, &lexMARKDOWN, + &lexMATLAB, &lexLATEX, &lexLUA, &lexNSIS, diff --git a/src/Styles.h b/src/Styles.h index 0347a217..a853ce3a 100644 --- a/src/Styles.h +++ b/src/Styles.h @@ -55,7 +55,7 @@ typedef struct _editlexer // Number of Lexers in pLexArray -#define NUMLEXERS 38 +#define NUMLEXERS 39 void Style_Load();