From 3d522d2e284939433e948d38257496d321eaf4fb Mon Sep 17 00:00:00 2001 From: Sergey Semushin Date: Sun, 23 Jul 2023 15:41:45 +0200 Subject: [PATCH] Support some more languages from Scintilla (#325) --- deps/npp_extra/SciLexer.h | 153 ++++++++++++++++++++++++++++++- src/npp/ScintillaUtils.cpp | 179 +++++++++++++++++++++++++++++++++++-- 2 files changed, 321 insertions(+), 11 deletions(-) diff --git a/deps/npp_extra/SciLexer.h b/deps/npp_extra/SciLexer.h index 36552d15..eadbf206 100644 --- a/deps/npp_extra/SciLexer.h +++ b/deps/npp_extra/SciLexer.h @@ -142,12 +142,19 @@ #define SCLEX_CIL 127 #define SCLEX_X12 128 #define SCLEX_DATAFLEX 129 +#define SCLEX_HOLLYWOOD 130 +#define SCLEX_RAKU 131 +#define SCLEX_FSHARP 132 +#define SCLEX_JULIA 133 +#define SCLEX_ASCIIDOC 134 +#define SCLEX_GDSCRIPT 135 #define SCLEX_SEARCHRESULT 150 #define SCLEX_OBJC 151 #define SCLEX_USER 152 #define SCLEX_AUTOMATIC 1000 + //For All lexer #define SCE_UNIVERSAL_FOUND_STYLE 31 #define SCE_UNIVERSAL_FOUND_STYLE_SMART 29 @@ -226,7 +233,6 @@ #define SCE_USER_STYLE_IDENTIFIER 24 #define SCE_USER_STYLE_TOTAL_STYLES SCE_USER_STYLE_IDENTIFIER #define SCE_USER_STYLE_MAPPER_TOTAL 17 -#define SCE_STYLE_ARRAY_SIZE 30 // must cover sizes of NppParameters::_lexerStyler and NppParameters::_widgetStyle #define SCE_USER_MASK_NESTING_NONE 0 #define SCE_USER_MASK_NESTING_DELIMITER1 0x1 @@ -257,6 +263,7 @@ #define SCE_USER_MASK_NESTING_OPERATORS2 0x2000000 #define SCE_USER_MASK_NESTING_NUMBERS 0x4000000 + #define SCE_P_DEFAULT 0 #define SCE_P_COMMENTLINE 1 #define SCE_P_NUMBER 2 @@ -277,6 +284,7 @@ #define SCE_P_FCHARACTER 17 #define SCE_P_FTRIPLE 18 #define SCE_P_FTRIPLEDOUBLE 19 +#define SCE_P_ATTRIBUTE 20 #define SCE_C_DEFAULT 0 #define SCE_C_COMMENT 1 #define SCE_C_COMMENTLINE 2 @@ -334,7 +342,7 @@ #define SCE_SEARCHRESULT_FILE_HEADER 2 #define SCE_SEARCHRESULT_LINE_NUMBER 3 #define SCE_SEARCHRESULT_WORD2SEARCH 4 -#define SCE_SEARCHRESULT_HIGHLIGHT_LINE 5 +//#define SCE_SEARCHRESULT_HIGHLIGHT_LINE 5 // (no use anymore) #define SCE_SEARCHRESULT_CURRENT_LINE 6 #define SCE_OBJC_DIRECTIVE 20 #define SCE_OBJC_QUALIFIER 21 @@ -550,7 +558,11 @@ #define SCE_RB_STDIN 30 #define SCE_RB_STDOUT 31 #define SCE_RB_STDERR 40 -#define SCE_RB_UPPER_BOUND 41 +#define SCE_RB_STRING_W 41 +#define SCE_RB_STRING_I 42 +#define SCE_RB_STRING_QI 43 +#define SCE_RB_STRING_QS 44 +#define SCE_RB_UPPER_BOUND 45 #define SCE_B_DEFAULT 0 #define SCE_B_COMMENT 1 #define SCE_B_NUMBER 2 @@ -639,6 +651,7 @@ #define SCE_ERR_GCC_INCLUDED_FROM 22 #define SCE_ERR_ESCSEQ 23 #define SCE_ERR_ESCSEQ_UNKNOWN 24 +#define SCE_ERR_GCC_EXCERPT 25 #define SCE_ERR_ES_BLACK 40 #define SCE_ERR_ES_RED 41 #define SCE_ERR_ES_GREEN 42 @@ -663,6 +676,7 @@ #define SCE_BAT_COMMAND 5 #define SCE_BAT_IDENTIFIER 6 #define SCE_BAT_OPERATOR 7 +#define SCE_BAT_AFTER_LABEL 8 #define SCE_TCMD_DEFAULT 0 #define SCE_TCMD_COMMENT 1 #define SCE_TCMD_WORD 2 @@ -885,7 +899,7 @@ #define SCE_CSS_EXTENDED_IDENTIFIER 19 #define SCE_CSS_EXTENDED_PSEUDOCLASS 20 #define SCE_CSS_EXTENDED_PSEUDOELEMENT 21 -#define SCE_CSS_MEDIA 22 +#define SCE_CSS_GROUP_RULE 22 #define SCE_CSS_VARIABLE 23 #define SCE_POV_DEFAULT 0 #define SCE_POV_COMMENT 1 @@ -1053,6 +1067,28 @@ #define SCE_ERLANG_MODULES 23 #define SCE_ERLANG_MODULES_ATT 24 #define SCE_ERLANG_UNKNOWN 31 +#define SCE_JULIA_DEFAULT 0 +#define SCE_JULIA_COMMENT 1 +#define SCE_JULIA_NUMBER 2 +#define SCE_JULIA_KEYWORD1 3 +#define SCE_JULIA_KEYWORD2 4 +#define SCE_JULIA_KEYWORD3 5 +#define SCE_JULIA_CHAR 6 +#define SCE_JULIA_OPERATOR 7 +#define SCE_JULIA_BRACKET 8 +#define SCE_JULIA_IDENTIFIER 9 +#define SCE_JULIA_STRING 10 +#define SCE_JULIA_SYMBOL 11 +#define SCE_JULIA_MACRO 12 +#define SCE_JULIA_STRINGINTERP 13 +#define SCE_JULIA_DOCSTRING 14 +#define SCE_JULIA_STRINGLITERAL 15 +#define SCE_JULIA_COMMAND 16 +#define SCE_JULIA_COMMANDLITERAL 17 +#define SCE_JULIA_TYPEANNOT 18 +#define SCE_JULIA_LEXERROR 19 +#define SCE_JULIA_KEYWORD4 20 +#define SCE_JULIA_TYPEOPERATOR 21 #define SCE_MSSQL_DEFAULT 0 #define SCE_MSSQL_COMMENT 1 #define SCE_MSSQL_LINE_COMMENT 2 @@ -1491,6 +1527,10 @@ #define SCE_R_IDENTIFIER 9 #define SCE_R_INFIX 10 #define SCE_R_INFIXEOL 11 +#define SCE_R_BACKTICKS 12 +#define SCE_R_RAWSTRING 13 +#define SCE_R_RAWSTRING2 14 +#define SCE_R_ESCAPESEQUENCE 15 #define SCE_MAGIK_DEFAULT 0 #define SCE_MAGIK_COMMENT 1 #define SCE_MAGIK_HYPER_COMMENT 16 @@ -2036,6 +2076,111 @@ #define SCE_DF_SCOPEWORD 12 #define SCE_DF_OPERATOR 13 #define SCE_DF_ICODE 14 +#define SCE_HOLLYWOOD_DEFAULT 0 +#define SCE_HOLLYWOOD_COMMENT 1 +#define SCE_HOLLYWOOD_COMMENTBLOCK 2 +#define SCE_HOLLYWOOD_NUMBER 3 +#define SCE_HOLLYWOOD_KEYWORD 4 +#define SCE_HOLLYWOOD_STDAPI 5 +#define SCE_HOLLYWOOD_PLUGINAPI 6 +#define SCE_HOLLYWOOD_PLUGINMETHOD 7 +#define SCE_HOLLYWOOD_STRING 8 +#define SCE_HOLLYWOOD_STRINGBLOCK 9 +#define SCE_HOLLYWOOD_PREPROCESSOR 10 +#define SCE_HOLLYWOOD_OPERATOR 11 +#define SCE_HOLLYWOOD_IDENTIFIER 12 +#define SCE_HOLLYWOOD_CONSTANT 13 +#define SCE_HOLLYWOOD_HEXNUMBER 14 +#define SCE_RAKU_DEFAULT 0 +#define SCE_RAKU_ERROR 1 +#define SCE_RAKU_COMMENTLINE 2 +#define SCE_RAKU_COMMENTEMBED 3 +#define SCE_RAKU_POD 4 +#define SCE_RAKU_CHARACTER 5 +#define SCE_RAKU_HEREDOC_Q 6 +#define SCE_RAKU_HEREDOC_QQ 7 +#define SCE_RAKU_STRING 8 +#define SCE_RAKU_STRING_Q 9 +#define SCE_RAKU_STRING_QQ 10 +#define SCE_RAKU_STRING_Q_LANG 11 +#define SCE_RAKU_STRING_VAR 12 +#define SCE_RAKU_REGEX 13 +#define SCE_RAKU_REGEX_VAR 14 +#define SCE_RAKU_ADVERB 15 +#define SCE_RAKU_NUMBER 16 +#define SCE_RAKU_PREPROCESSOR 17 +#define SCE_RAKU_OPERATOR 18 +#define SCE_RAKU_WORD 19 +#define SCE_RAKU_FUNCTION 20 +#define SCE_RAKU_IDENTIFIER 21 +#define SCE_RAKU_TYPEDEF 22 +#define SCE_RAKU_MU 23 +#define SCE_RAKU_POSITIONAL 24 +#define SCE_RAKU_ASSOCIATIVE 25 +#define SCE_RAKU_CALLABLE 26 +#define SCE_RAKU_GRAMMAR 27 +#define SCE_RAKU_CLASS 28 +#define SCE_FSHARP_DEFAULT 0 +#define SCE_FSHARP_KEYWORD 1 +#define SCE_FSHARP_KEYWORD2 2 +#define SCE_FSHARP_KEYWORD3 3 +#define SCE_FSHARP_KEYWORD4 4 +#define SCE_FSHARP_KEYWORD5 5 +#define SCE_FSHARP_IDENTIFIER 6 +#define SCE_FSHARP_QUOT_IDENTIFIER 7 +#define SCE_FSHARP_COMMENT 8 +#define SCE_FSHARP_COMMENTLINE 9 +#define SCE_FSHARP_PREPROCESSOR 10 +#define SCE_FSHARP_LINENUM 11 +#define SCE_FSHARP_OPERATOR 12 +#define SCE_FSHARP_NUMBER 13 +#define SCE_FSHARP_CHARACTER 14 +#define SCE_FSHARP_STRING 15 +#define SCE_FSHARP_VERBATIM 16 +#define SCE_FSHARP_QUOTATION 17 +#define SCE_FSHARP_ATTRIBUTE 18 +#define SCE_FSHARP_FORMAT_SPEC 19 +#define SCE_ASCIIDOC_DEFAULT 0 +#define SCE_ASCIIDOC_STRONG1 1 +#define SCE_ASCIIDOC_STRONG2 2 +#define SCE_ASCIIDOC_EM1 3 +#define SCE_ASCIIDOC_EM2 4 +#define SCE_ASCIIDOC_HEADER1 5 +#define SCE_ASCIIDOC_HEADER2 6 +#define SCE_ASCIIDOC_HEADER3 7 +#define SCE_ASCIIDOC_HEADER4 8 +#define SCE_ASCIIDOC_HEADER5 9 +#define SCE_ASCIIDOC_HEADER6 10 +#define SCE_ASCIIDOC_ULIST_ITEM 11 +#define SCE_ASCIIDOC_OLIST_ITEM 12 +#define SCE_ASCIIDOC_BLOCKQUOTE 13 +#define SCE_ASCIIDOC_LINK 14 +#define SCE_ASCIIDOC_CODEBK 15 +#define SCE_ASCIIDOC_PASSBK 16 +#define SCE_ASCIIDOC_COMMENT 17 +#define SCE_ASCIIDOC_COMMENTBK 18 +#define SCE_ASCIIDOC_LITERAL 19 +#define SCE_ASCIIDOC_LITERALBK 20 +#define SCE_ASCIIDOC_ATTRIB 21 +#define SCE_ASCIIDOC_ATTRIBVAL 22 +#define SCE_ASCIIDOC_MACRO 23 +#define SCE_GD_DEFAULT 0 +#define SCE_GD_COMMENTLINE 1 +#define SCE_GD_NUMBER 2 +#define SCE_GD_STRING 3 +#define SCE_GD_CHARACTER 4 +#define SCE_GD_WORD 5 +#define SCE_GD_TRIPLE 6 +#define SCE_GD_TRIPLEDOUBLE 7 +#define SCE_GD_CLASSNAME 8 +#define SCE_GD_FUNCNAME 9 +#define SCE_GD_OPERATOR 10 +#define SCE_GD_IDENTIFIER 11 +#define SCE_GD_COMMENTBLOCK 12 +#define SCE_GD_STRINGEOL 13 +#define SCE_GD_WORD2 14 +#define SCE_GD_ANNOTATION 15 +#define SCE_GD_NODEPATH 16 /* --Autogenerated -- end of section automatically generated from Scintilla.iface */ #endif diff --git a/src/npp/ScintillaUtils.cpp b/src/npp/ScintillaUtils.cpp index 28bf599d..ea686c2f 100644 --- a/src/npp/ScintillaUtils.cpp +++ b/src/npp/ScintillaUtils.cpp @@ -24,7 +24,7 @@ StyleCategory get_style_category(LRESULT lexer, LRESULT style, const Settings &s case SCLEX_CONTAINER: case SCLEX_NULL: return s::text; - // Meaning unclear: + // Meaning unclear: case SCLEX_AS: case SCLEX_SREC: case SCLEX_IHEX: @@ -50,7 +50,7 @@ StyleCategory get_style_category(LRESULT lexer, LRESULT style, const Settings &s return settings.data.check_default_udl_style ? s::text : s::identifier; default: return s::unknown; - }; + } case SCLEX_PYTHON: switch (style) { case SCE_P_COMMENTLINE: @@ -65,7 +65,7 @@ StyleCategory get_style_category(LRESULT lexer, LRESULT style, const Settings &s return s::identifier; default: return s::unknown; - }; + } case SCLEX_CPP: case SCLEX_OBJC: case SCLEX_BULLANT: @@ -85,7 +85,7 @@ StyleCategory get_style_category(LRESULT lexer, LRESULT style, const Settings &s return s::identifier; default: return s::unknown; - }; + } case SCLEX_HTML: case SCLEX_XML: switch (style) { @@ -145,7 +145,7 @@ StyleCategory get_style_category(LRESULT lexer, LRESULT style, const Settings &s return s::identifier; default: return s::unknown; - }; + } case SCLEX_SQL: switch (style) { case SCE_SQL_STRING: @@ -310,7 +310,7 @@ StyleCategory get_style_category(LRESULT lexer, LRESULT style, const Settings &s return s::identifier; default: return s::unknown; - }; + } case SCLEX_TCL: switch (style) { case SCE_TCL_COMMENT: @@ -1234,7 +1234,172 @@ StyleCategory get_style_category(LRESULT lexer, LRESULT style, const Settings &s default: return s::unknown; } - }; + } + case SCLEX_EDIFACT: + case SCLEX_INDENT: + return s::unknown; + case SCLEX_MAXIMA: { + switch (style) { + case SCE_MAXIMA_COMMENT: + return s::comment; + case SCE_MAXIMA_STRING: + return s::string; + case SCE_MAXIMA_VARIABLE: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_STATA: { + switch (style) { + case SCE_STATA_COMMENT: + case SCE_STATA_COMMENTBLOCK: + case SCE_STATA_COMMENTLINE: + return s::comment; + case SCE_STATA_STRING: + return s::string; + case SCE_STATA_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_SAS: { + switch (style) { + case SCE_SAS_COMMENT: + case SCE_SAS_COMMENTBLOCK: + case SCE_SAS_COMMENTLINE: + return s::comment; + case SCE_SAS_STRING: + return s::string; + case SCE_SAS_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_NIM: { + switch (style) { + case SCE_NIM_COMMENT: + case SCE_NIM_COMMENTDOC: + case SCE_NIM_COMMENTLINE: + case SCE_NIM_COMMENTLINEDOC: + return s::comment; + case SCE_NIM_STRING: + case SCE_NIM_STRINGEOL: + return s::string; + case SCE_NIM_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_CIL: { + switch (style) { + case SCE_CIL_COMMENT: + case SCE_CIL_COMMENTLINE: + return s::comment; + case SCE_CIL_STRING: + case SCE_CIL_STRINGEOL: + return s::string; + case SCE_CIL_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_X12: + return s::unknown; + case SCLEX_DATAFLEX: { + switch (style) { + case SCE_DF_COMMENTLINE: + return s::comment; + case SCE_DF_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_HOLLYWOOD: { + switch (style) { + case SCE_HOLLYWOOD_COMMENT: + case SCE_HOLLYWOOD_COMMENTBLOCK: + return s::comment; + case SCE_HOLLYWOOD_STRING: + case SCE_HOLLYWOOD_STRINGBLOCK: + return s::string; + case SCE_HOLLYWOOD_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_RAKU: { + switch (style) { + case SCE_RAKU_COMMENTLINE: + case SCE_RAKU_COMMENTEMBED: + return s::comment; + case SCE_RAKU_STRING: + case SCE_RAKU_STRING_Q: + case SCE_RAKU_STRING_QQ: + case SCE_RAKU_STRING_Q_LANG: + case SCE_RAKU_STRING_VAR: + return s::string; + case SCE_RAKU_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_FSHARP: { + switch (style) { + case SCE_FSHARP_COMMENT: + case SCE_FSHARP_COMMENTLINE: + return s::comment; + case SCE_FSHARP_STRING: + return s::string; + case SCE_FSHARP_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_JULIA: { + switch (style) { + case SCE_JULIA_COMMENT: + return s::comment; + case SCE_JULIA_STRING: + case SCE_JULIA_STRINGINTERP: + case SCE_JULIA_STRINGLITERAL: + return s::string; + case SCE_JULIA_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } + case SCLEX_ASCIIDOC: { + switch (style) { + case SCE_ASCIIDOC_COMMENT: + case SCE_ASCIIDOC_COMMENTBK: + return s::comment; + default: + return s::unknown; + } + } + case SCLEX_GDSCRIPT: { + switch (style) { + case SCE_GD_COMMENTLINE: + case SCE_GD_COMMENTBLOCK: + return s::comment; + case SCE_GD_STRING: + return s::string; + case SCE_GD_IDENTIFIER: + return s::identifier; + default: + return s::unknown; + } + } default: return s::unknown; }