diff options
author | Hans Hagen <pragma@wxs.nl> | 2018-08-16 10:45:39 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2018-08-16 10:45:39 +0200 |
commit | 0fcb576f359edfdd50c2b13615a03b966a9073df (patch) | |
tree | 5dcac6c5002e1552c1770facfbd27611fe54ba0f /context | |
parent | d6850b00fa0f937514389e8d090db87b0163a703 (diff) | |
download | context-0fcb576f359edfdd50c2b13615a03b966a9073df.tar.gz |
2018-08-16 10:24:00
Diffstat (limited to 'context')
4 files changed, 132 insertions, 1 deletions
diff --git a/context/data/scite/context/lexers/scite-context-lexer-json.lua b/context/data/scite/context/lexers/scite-context-lexer-json.lua new file mode 100644 index 000000000..20a2d1d12 --- /dev/null +++ b/context/data/scite/context/lexers/scite-context-lexer-json.lua @@ -0,0 +1,100 @@ +local info = { + version = 1.002, + comment = "scintilla lpeg lexer for json", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files", +} + +local global, string, table, lpeg = _G, string, table, lpeg +local P, R, S, V = lpeg.P, lpeg.R, lpeg.S, lpeg.V +local type = type + +local lexer = require("scite-context-lexer") +local context = lexer.context +local patterns = context.patterns + +local token = lexer.token +local exact_match = lexer.exact_match + +local jsonlexer = lexer.new("json","scite-context-lexer-json") +local whitespace = jsonlexer.whitespace + +local anything = patterns.anything +local comma = P(",") +local colon = P(":") +local escape = P("\\") +----- single = P("'") +local double = P('"') +local openarray = P('[') +local closearray = P(']') +local openhash = P('{') +local closehash = P('}') +----- lineending = S("\n\r") +local space = S(" \t\n\r\f") +local spaces = space^1 +local operator = S(':,{}[]') +local fence = openarray + closearray + openhash + closehash + +local escape_un = P("\\u") / "0x" * S("09","AF","af") +local escape_bs = P([[\]]) * P(1) +local content = (escape_un + escape_bs + (1-double))^0 + +local reserved = P("true") + + P("false") + + P("null") + +local integer = P("-")^-1 * (patterns.hexadecimal + patterns.decimal) +local float = patterns.float + +local t_number = token("number", float + integer) + * (token("error",R("AZ","az","__")^1))^0 + +local t_spacing = token(whitespace, space^1) +local t_optionalws = token("default", space^1)^0 + +local t_operator = token("special", operator) + +local t_string = token("operator",double) + * token("string",content) + * token("operator",double) + +local t_key = token("operator",double) + * token("text",content) + * token("operator",double) + * t_optionalws + * token("operator",colon) + +local t_fences = token("operator",fence) -- grouping + +local t_reserved = token("primitive",reserved) + +local t_rest = token("default",anything) + +jsonlexer._rules = { + { "whitespace", t_spacing }, + { "reserved", t_reserved }, + { "key", t_key }, + { "number", t_number }, + { "string", t_string }, + { "fences", t_fences }, + { "operator", t_operator }, + { "rest", t_rest }, +} + +jsonlexer._tokenstyles = context.styleset + +jsonlexer._foldpattern = fence + +jsonlexer._foldsymbols = { + _patterns = { + "{", "}", + "[", "]", + }, + ["grouping"] = { + ["{"] = 1, ["}"] = -1, + ["["] = 1, ["]"] = -1, + }, +} + +return jsonlexer diff --git a/context/data/scite/context/scite-context-external.properties b/context/data/scite/context/scite-context-external.properties index 5df60b99b..e9d5f58ba 100644 --- a/context/data/scite/context/scite-context-external.properties +++ b/context/data/scite/context/scite-context-external.properties @@ -41,6 +41,7 @@ lexer.*.lpeg=lpeg file.patterns.cweb=*.w;*.ww; file.patterns.cpp=*.h;*.c;*.hh;*.cc;*.hpp;*.cpp;*.hxx;*.cxx; file.patterns.bib=*.bib +file.patterns.json=*.json file.patterns.sql=*.sql lexer.$(file.patterns.metapost)=lpeg_scite-context-lexer-mps @@ -54,6 +55,7 @@ lexer.$(file.patterns.cweb)=lpeg_scite-context-lexer-web lexer.$(file.patterns.cpp)=lpeg_scite-context-lexer-cpp lexer.$(file.patterns.bib)=lpeg_scite-context-lexer-bibtex lexer.$(file.patterns.sql)=lpeg_scite-context-lexer-sql +lexer.$(file.patterns.json)=lpeg_scite-context-lexer-json lexer.$(file.patterns.tex)=lpeg_scite-context-lexer-tex lexer.$(file.patterns.xml)=lpeg_scite-context-lexer-xml @@ -85,6 +87,9 @@ comment.block.at.line.start.lpeg_scite-context-lexer-cld=1 comment.block.lpeg_scite-context-lexer-bibtex=% comment.block.at.line.start.lpeg_scite-context-lexer-bibtex=1 +comment.block.lpeg_scite-context-lexer-json=% +comment.block.at.line.start.lpeg_scite-context-lexer-json=1 + comment.block.lpeg_props=# comment.block.at.line.start.lpeg_props=1 diff --git a/context/data/scite/context/scite-ctx.properties b/context/data/scite/context/scite-ctx.properties index bcd939594..1a040c2dc 100644 --- a/context/data/scite/context/scite-ctx.properties +++ b/context/data/scite/context/scite-ctx.properties @@ -66,6 +66,14 @@ ctx.menulist.lua=\ wrap=wrap_text|\ sort=sort_text +ctx.menulist.bibtex=\ + wrap=wrap_text|\ + sort=sort_text + +ctx.menulist.json=\ + wrap=wrap_text|\ + sort=sort_text + ctx.wraptext.length=80 ctx.spellcheck.language=auto @@ -129,6 +137,20 @@ command.groupundo.21.$(file.patterns.lua)=yes command.save.before.21.$(file.patterns.lua)=2 command.shortcut.21.$(file.patterns.lua)=Shift+F11 +command.name.21.$(file.patterns.bibtex)=BibTeX Action List +command.subsystem.21.$(file.patterns.bibtex)=3 +command.21.$(file.patterns.bibtex)=show_menu $(ctx.menulist.bibtex) +command.groupundo.21.$(file.patterns.bibtex)=yes +command.save.before.21.$(file.patterns.bibtex)=2 +command.shortcut.21.$(file.patterns.bibtex)=Shift+F11 + +command.name.21.$(file.patterns.json)=JSON Action List +command.subsystem.21.$(file.patterns.json)=3 +command.21.$(file.patterns.json)=show_menu $(ctx.menulist.json) +command.groupundo.21.$(file.patterns.json)=yes +command.save.before.21.$(file.patterns.json)=2 +command.shortcut.21.$(file.patterns.json)=Shift+F11 + #~ command.name.21.*=CTX Action List #~ command.subsystem.21.*=3 #~ command.21.*=show_menu $(ctx.menulist.default) diff --git a/context/data/scite/context/scite-pragma.properties b/context/data/scite/context/scite-pragma.properties index 2dea18bad..109b02230 100644 --- a/context/data/scite/context/scite-pragma.properties +++ b/context/data/scite/context/scite-pragma.properties @@ -27,6 +27,8 @@ $(filter.lua)\ $(filter.text)\ $(filter.pdf)\ $(filter.cweb)\ +$(filter.bibtex)\ +$(filter.json)\ $(filter.txt) # Editor: menus @@ -38,4 +40,6 @@ XML|xml||\ Lua|lua||\ Text|txt||\ PDF|pdf||\ -CWeb|cweb|| +CWeb|cweb||\ +BibTeX|bibtex||\ +JSON|json|| |