diff --git a/language/common_res.h b/language/common_res.h index 2f7691843..b13138757 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -1243,6 +1243,7 @@ #define IDS_LEX_STR_63376 63376 #define IDS_LEX_STR_63377 63377 #define IDS_LEX_STR_63378 63378 +#define IDS_LEX_STR_63379 63379 #define IDS_LEX_CSV_COL_0 63400 #define IDS_LEX_CSV_COL_1 63401 diff --git a/language/np3_de_de/lexer_de_de.rc b/language/np3_de_de/lexer_de_de.rc index d4f01e83b..f5601d38e 100644 --- a/language/np3_de_de/lexer_de_de.rc +++ b/language/np3_de_de/lexer_de_de.rc @@ -484,6 +484,7 @@ BEGIN IDS_LEX_STR_63376 "Continuation" IDS_LEX_STR_63377 "Special" IDS_LEX_STR_63378 "Syntax Operator" + IDS_LEX_STR_63379 "Unclosed String" END STRINGTABLE diff --git a/language/np3_en_us/lexer_en_us.rc b/language/np3_en_us/lexer_en_us.rc index 467e6550a..4397763bf 100644 --- a/language/np3_en_us/lexer_en_us.rc +++ b/language/np3_en_us/lexer_en_us.rc @@ -484,6 +484,7 @@ BEGIN IDS_LEX_STR_63376 "Continuation" IDS_LEX_STR_63377 "Special" IDS_LEX_STR_63378 "Syntax Operator" + IDS_LEX_STR_63379 "Unclosed String" END STRINGTABLE diff --git a/lexilla/lexers_x/LexJSON.cxx b/lexilla/lexers_x/LexJSON.cxx index 5aa315e23..15285c6f1 100644 --- a/lexilla/lexers_x/LexJSON.cxx +++ b/lexilla/lexers_x/LexJSON.cxx @@ -537,7 +537,7 @@ void SCI_METHOD LexerJSON::Lex(Sci_PositionU startPos, context.SetState(SCE_JSON_PROPERTYNAME); } } - else if (!IsASpace(context.ch)) { + else if (context.state == SCE_JSON_DEFAULT && !IsASpace(context.ch)) { context.SetState(SCE_JSON_ERROR); } } diff --git a/src/StyleLexers/styleLexJSON.c b/src/StyleLexers/styleLexJSON.c index c1d56b603..4e15b9d31 100644 --- a/src/StyleLexers/styleLexJSON.c +++ b/src/StyleLexers/styleLexJSON.c @@ -4,10 +4,14 @@ KEYWORDLIST KeyWords_JSON = { + // JSON Keywords "+Infinity -Infinity Infinity NaN false null true", + + // JSON-LD Keywords "@base @container @context @direction @graph @id @import @included @index @json @language @list @nest @none " "@prefix @propagate @protected @reverse @set @type @value @version @vocab", - NULL, + + NULL }; @@ -20,40 +24,16 @@ EDITLEXER lexJSON = { {MULTI_STYLE(SCE_JSON_LINECOMMENT,SCE_JSON_BLOCKCOMMENT,0,0)}, IDS_LEX_STR_63127, L"Comment", L"fore:#646464", L"" }, { {SCE_JSON_KEYWORD}, IDS_LEX_STR_63128, L"Keyword", L"bold; fore:#957000", L"" }, { {SCE_JSON_LDKEYWORD}, IDS_LEX_STR_63365, L"LD Keyword", L"bold; fore:#A61D04", L"" }, - { {MULTI_STYLE(SCE_JSON_STRING,SCE_JSON_STRINGEOL,0,0)}, IDS_LEX_STR_63131, L"String", L"fore:#008000", L"" }, - //{ {SCE_C_REGEX}, IDS_LEX_STR_63135, L"Regex", L"fore:#006633; back:#FFF1A8", L"" }, + { {SCE_JSON_STRING}, IDS_LEX_STR_63131, L"String", L"fore:#008000", L"" }, + { {SCE_JSON_STRINGEOL}, IDS_LEX_STR_63379, L"Unclosed String", L"fore:#FFFFFF; back:#FF8040; eolfilled", L"" }, { {SCE_JSON_NUMBER}, IDS_LEX_STR_63130, L"Number", L"fore:#FF0000", L"" }, { {SCE_JSON_OPERATOR}, IDS_LEX_STR_63132, L"Operator", L"fore:#B000B0", L"" }, { {SCE_JSON_PROPERTYNAME}, IDS_LEX_STR_63364, L"Property Name", L"fore:#002697", L"" }, { {SCE_JSON_ESCAPESEQUENCE}, IDS_LEX_STR_63366, L"ESC Sequence", L"fore:#0B982E", L"" }, - { {SCE_JSON_ERROR}, IDS_LEX_STR_63252, L"Parsing Error", L"fore:#FFFF00; back:#A00000; eolfilled", L"" }, + //{ {SCE_JSON_URI}, IDS_LEX_STR_63252, L"URL/IRI", L"fore:#0000FF", L"" }, + //{ {SCE_JSON_COMPACTIRI}, IDS_LEX_STR_63252, L"JSON-LD compact IRI", L"fore:#D137C1", L"" }, + { {SCE_JSON_ERROR}, IDS_LEX_STR_63252, L"Parsing Error", L"fore:#FFFF00; back:#A02020; eolfilled", L"" }, EDITLEXER_SENTINEL } }; -/* -# String -style.json.2=fore:#7F0000 -# Unclosed string SCE_JSON_STRINGEOL -style.json.3=fore:#FFFFFF,back:#FF0000,eolfilled -# Property name SCE_JSON_PROPERTYNAME -style.json.4=fore:#880AE8 -# Escape sequence SCE_JSON_ESCAPESEQUENCE -style.json.5=fore:#0B982E -# Line comment SCE_JSON_LINECOMMENT -style.json.6=fore:#05BBAE,italic -# Block comment SCE_JSON_BLOCKCOMMENT -style.json.7=$(style.json.6) -# Operator SCE_JSON_OPERATOR -style.json.8=fore:#18644A -# URL/IRI SCE_JSON_URI -style.json.9=fore:#0000FF -# JSON-LD compact IRI SCE_JSON_COMPACTIRI -style.json.10=fore:#D137C1 -# JSON keyword SCE_JSON_KEYWORD -style.json.11=fore:#0BCEA7,bold -# JSON-LD keyword SCE_JSON_LDKEYWORD -style.json.12=fore:#EC2806 -# Parsing error SCE_JSON_ERROR -style.json.13=fore:#FFFFFF,back:#FF0000 -*/