summaryrefslogtreecommitdiff
path: root/context
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2018-08-16 10:45:39 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2018-08-16 10:45:39 +0200
commit0fcb576f359edfdd50c2b13615a03b966a9073df (patch)
tree5dcac6c5002e1552c1770facfbd27611fe54ba0f /context
parentd6850b00fa0f937514389e8d090db87b0163a703 (diff)
downloadcontext-0fcb576f359edfdd50c2b13615a03b966a9073df.tar.gz
2018-08-16 10:24:00
Diffstat (limited to 'context')
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-json.lua100
-rw-r--r--context/data/scite/context/scite-context-external.properties5
-rw-r--r--context/data/scite/context/scite-ctx.properties22
-rw-r--r--context/data/scite/context/scite-pragma.properties6
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||