From c14eea69e7fec2a3b240eefddd4bdf7b6f1471a1 Mon Sep 17 00:00:00 2001 From: Remy Oukaour Date: Sun, 30 Aug 2015 22:12:14 -0400 Subject: [PATCH] Add Rust syntax highlighting --- build/makefile.deps.mak | 1 + build/makefile.mak | 1 + lexlink.js | 1 + scintilla/Scintilla.vcxproj | 1 + scintilla/Scintilla.vcxproj.filters | 3 +++ scintilla/src/Catalogue.cxx | 2 +- src/Notepad2.c | 5 +++-- src/Styles.c | 24 ++++++++++++++++++++++++ src/Styles.h | 2 +- 9 files changed, 36 insertions(+), 4 deletions(-) diff --git a/build/makefile.deps.mak b/build/makefile.deps.mak index 94337832..be073a30 100644 --- a/build/makefile.deps.mak +++ b/build/makefile.deps.mak @@ -56,6 +56,7 @@ $(SCI_LEX_OBJDIR)\LexPowerShell.obj: $(SCI_LEX)\LexPowerShell.cxx $(LEX_HEADERS) $(SCI_LEX_OBJDIR)\LexProps.obj: $(SCI_LEX)\LexProps.cxx $(LEX_HEADERS) $(SCI_LEX_OBJDIR)\LexPython.obj: $(SCI_LEX)\LexPython.cxx $(LEX_HEADERS) $(SCI_LEX_OBJDIR)\LexRuby.obj: $(SCI_LEX)\LexRuby.cxx $(LEX_HEADERS) +$(SCI_LEX_OBJDIR)\LexRust.obj: $(SCI_LEX)\LexRust.cxx $(LEX_HEADERS) $(SCI_LEX_OBJDIR)\LexSQL.obj: $(SCI_LEX)\LexSQL.cxx $(LEX_HEADERS) $(SCI_LIB)\OptionSet.h $(SCI_LEX_OBJDIR)\LexTCL.obj: $(SCI_LEX)\LexTCL.cxx $(LEX_HEADERS) $(SCI_LEX_OBJDIR)\LexVB.obj: $(SCI_LEX)\LexVB.cxx $(LEX_HEADERS) diff --git a/build/makefile.mak b/build/makefile.mak index eea9f037..9c2ac174 100644 --- a/build/makefile.mak +++ b/build/makefile.mak @@ -150,6 +150,7 @@ SCI_LEX_OBJ = \ $(SCI_LEX_OBJDIR)\LexProps.obj \ $(SCI_LEX_OBJDIR)\LexPython.obj \ $(SCI_LEX_OBJDIR)\LexRuby.obj \ + $(SCI_LEX_OBJDIR)\LexRust.obj \ $(SCI_LEX_OBJDIR)\LexSQL.obj \ $(SCI_LEX_OBJDIR)\LexTCL.obj \ $(SCI_LEX_OBJDIR)\LexVB.obj \ diff --git a/lexlink.js b/lexlink.js index 20aa5d0a..fcc504a3 100644 --- a/lexlink.js +++ b/lexlink.js @@ -30,6 +30,7 @@ "lmProps", "lmPython", "lmRuby", + "lmRust", "lmSQL", "lmTCL", "lmVB", diff --git a/scintilla/Scintilla.vcxproj b/scintilla/Scintilla.vcxproj index 5f359f47..6d820e08 100644 --- a/scintilla/Scintilla.vcxproj +++ b/scintilla/Scintilla.vcxproj @@ -185,6 +185,7 @@ + diff --git a/scintilla/Scintilla.vcxproj.filters b/scintilla/Scintilla.vcxproj.filters index 99ead612..2cb342ab 100644 --- a/scintilla/Scintilla.vcxproj.filters +++ b/scintilla/Scintilla.vcxproj.filters @@ -99,6 +99,9 @@ lexers + + lexers + lexers diff --git a/scintilla/src/Catalogue.cxx b/scintilla/src/Catalogue.cxx index 5eedabc3..0eb54244 100644 --- a/scintilla/src/Catalogue.cxx +++ b/scintilla/src/Catalogue.cxx @@ -169,7 +169,7 @@ int Scintilla_LinkLexers() { //LINK_LEXER(lmREBOL); //LINK_LEXER(lmRegistry); LINK_LEXER(lmRuby); - //LINK_LEXER(lmRust); + LINK_LEXER(lmRust); //LINK_LEXER(lmScriptol); //LINK_LEXER(lmSmalltalk); //LINK_LEXER(lmSML); diff --git a/src/Notepad2.c b/src/Notepad2.c index 8f2dc84c..fc7f0e2a 100644 --- a/src/Notepad2.c +++ b/src/Notepad2.c @@ -3388,6 +3388,7 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case SCLEX_XML: case SCLEX_CPP: case SCLEX_PASCAL: + case SCLEX_RUST: BeginWaitCursor(); EditToggleLineComments(hwndEdit,L"//",FALSE); EndWaitCursor(); @@ -6248,7 +6249,7 @@ void ParseCommandLine() LocalFree(lpSchemeArg); lpSchemeArg = NULL; } - iInitialLexer = 34; + iInitialLexer = 35; flagLexerSpecified = 1; break; @@ -6257,7 +6258,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 174dbc07..d4974fec 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -1274,6 +1274,29 @@ EDITLEXER lexRUBY = { SCLEX_RUBY, 63304, L"Ruby Script", L"rb; ruby; rbw; rake; { -1, 00000, L"", L"", L"" } } }; +KEYWORDLIST KeyWords_RUST = { +"as break crate else enum extern false fn for if impl in let loop match mod move mut " +"pub ref return static self Self struct super true trait type unsafe use virtual " +"while continue box const where proc alignof become offsetof priv pure sizeof " +"typeof unsized yield do abstract final override macro", +"", "", "", "", "", "", "", "" }; + +EDITLEXER lexRUST = { SCLEX_RUST, 63363, L"Rust Source Code", L"rs", L"", &KeyWords_RUST, { + { STYLE_DEFAULT, 63126, L"Default", L"", L"" }, + //{ SCE_P_DEFAULT, L"Default", L"", L"" }, + { MULTI_STYLE(SCE_RUST_COMMENTLINE,SCE_RUST_COMMENTBLOCK,SCE_P_COMMENTLINE,SCE_P_COMMENTBLOCK), 63127, L"Comment", L"fore:#008000", L"" }, + { MULTI_STYLE(SCE_RUST_COMMENTLINEDOC,SCE_RUST_COMMENTBLOCKDOC,0,0), 63223, L"Doc Comment", L"fore:#008000", L"" }, + { SCE_RUST_WORD, 63128, L"Keyword", L"fore:#00007F", L"" }, + { SCE_RUST_IDENTIFIER, 63129, L"Identifier", L"", L"" }, + { SCE_RUST_NUMBER, 63130, L"Number", L"fore:#008080", L"" }, + { SCE_RUST_OPERATOR, 63132, L"Operator", L"", L"" }, + { MULTI_STYLE(SCE_RUST_STRING,SCE_RUST_STRINGR,SCE_RUST_BYTESTRING,SCE_RUST_BYTESTRINGR), 63131, L"String", L"fore:#FF8000", L"" }, + { MULTI_STYLE(SCE_RUST_CHARACTER,SCE_RUST_BYTECHARACTER,0,0), 63135, L"Character", L"fore:#FF8000", L"" }, + { SCE_RUST_LIFETIME, 63316, L"Lifetime", L"fore:#C0A030", L"" }, + { SCE_RUST_MACRO, 63133, L"Macro", L"fore:#0000FF", L"" }, + { -1, 00000, L"", L"", L"" } } }; + + KEYWORDLIST KeyWords_LUA = { "and break do else elseif end false for function goto if " "in local nil not or repeat return then true until while", @@ -2485,6 +2508,7 @@ PEDITLEXER pLexArray[NUMLEXERS] = &lexPY, &lexRC, &lexRUBY, + &lexRUST, &lexBASH, &lexSQL, &lexTCL, diff --git a/src/Styles.h b/src/Styles.h index d5e1e90b..718bf446 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();