From 0139cd75aadc19470b2f2754cfa292978997d7e6 Mon Sep 17 00:00:00 2001 From: "shylinux@163.com" Date: Thu, 22 Sep 2022 16:08:40 +0800 Subject: [PATCH] opt code --- frame.js | 1 - plugin/input/keyboard.js | 174 +++++++++++------------------- plugin/local/chat/keyboard.js | 8 +- plugin/local/code/inner.js | 2 +- plugin/local/code/inner/syntax.js | 56 ++++++++++ plugin/local/code/snippet.js | 29 ----- plugin/local/code/vimer.js | 2 +- plugin/state.js | 4 +- proto.js | 2 +- 9 files changed, 128 insertions(+), 150 deletions(-) delete mode 100644 plugin/local/code/snippet.js diff --git a/frame.js b/frame.js index c8ed6435..2d156c6e 100644 --- a/frame.js +++ b/frame.js @@ -122,7 +122,6 @@ Volcanos(chat.ONDAEMON, {help: "推荐引擎", _init: function(can, name) { if ( refresh: function(can, msg, sub) { sub.Update() }, input: function(can, msg, sub, arg) { can.page.Select(can, sub._target, "input:focus", function(target) { - // can.page.Select(can, sub._target, "input", function(target) { target.value += arg[0] }) }, diff --git a/plugin/input/keyboard.js b/plugin/input/keyboard.js index 720d31ee..f63898ba 100644 --- a/plugin/input/keyboard.js +++ b/plugin/input/keyboard.js @@ -8,123 +8,77 @@ Volcanos(chat.ONFIGURE, {help: "控件详情", keyboard: { _make: function(event, can, meta, cb, target, last) { var sub = target._can; if (sub && sub._cbs) { return } cb(function(sub, cbs) { sub._cbs = cbs - can.onfigure.keyboard._show(can, sub, target) - + can.onfigure.keyboard._show(sub, target) }) }, - _show: function(can, sub, target) { - can.require(["/plugin/input/keyboard.css"]) - var msg = can.request({}); can.onfigure.keyboard._normal(can, msg) - var keys = {}; function hold(value, div) { keys[value.name] = div, can.page.ClassList.add(can, div, "hold") } - msg.Table(function(value) { value.type == "head" && can.page.Append(can, can._output, "br") - var t = value.type+" "+value.name+(value.name.indexOf("\n")>-1? " double": value.name.length>1? " special": "") - var div = can.page.Append(can, sub._output, [{view: t, list: [{text: [value.name]}], onclick: function(event) { - switch (value.name) { - case "Ctrl": - can._ctrl = !can._ctrl, hold(value, div) - break - case "Shift": - can._shift = !can._shift, hold(value, div) - break - case "Backspace": + _show: function(can, target) { can.require(["/plugin/input/keyboard.css"]) + var msg = can.request({}); can.onfigure.keyboard._normal(can, msg) + var keys = {}; function hold(value, div) { keys[value.name] = div, can.page.ClassList.add(can, div, "hold") } + msg.Table(function(value) { value.type == "head" && can.page.Append(can, can._output, "br") + var t = value.type+" "+value.name+(value.name.indexOf("\n")>-1? " double": value.name.length>1? " special": "") + var div = can.page.Append(can, can._output, [{view: t, list: [{text: [value.name]}], onclick: function(event) { + switch (value.name) { + case "Esc": + can.page.Remove(can, can._target) + delete(target._can) + break + case "Ctrl": + can._ctrl = !can._ctrl, hold(value, div) + break + case "Shift": + can._shift = !can._shift, hold(value, div) + break + case "Backspace": + if (can.base.isFunc(target)) { + target(value.name) + } else { target.value = target.value.slice(0, -1) - break - case "Enter": - break - case "Esc": - break - default: + } + target.focus(), can.user.toast(can, value.name) + break + case "Enter": + break + case "Esc": + break + default: + function add(value) { if (can.base.isFunc(target)) { - target(value.name) - return - } - can._shift = can._shift||event.shiftKey - if (value.name == "Space") { - target.value += " " - } else if (value.name.indexOf("\n") > -1) { - var ls = can.core.Split(value.name, "\n", "\n", "\n") - target.value += can._shift? ls[0]: ls[1] - } else if (can._shift) { - target.value += value.name.toUpperCase() + target(value) } else { - target.value += value.name + target.value += value + target.focus(), can.user.toast(can, value.name) } - can.core.Item(keys, function(key, div) { - can.page.ClassList.del(can, div, "hold") - }), can._ctrl = false, can._shift = false - } - target.focus(), can.user.toast(can, value.name) - } }]).first - }) + } + + can._shift = can._shift||event.shiftKey + if (value.name == "Tab") { + add("\t") + } else if (value.name == "Space") { + add(" ") + } else if (value.name.indexOf("\n") > -1) { + var ls = can.core.Split(value.name, "\n", "\n", "\n") + add(can._shift? ls[0]: ls[1]) + } else if (can._shift) { + add(value.name.toUpperCase()) + } else { + add(value.name) + } + can.core.Item(keys, function(key, div) { + can.page.ClassList.del(can, div, "hold") + }), can._ctrl = false, can._shift = false + } + } }]).first + }) }, _normal: function(can, msg) { - msg.Push({type: "key head", name: "Esc"}) - - msg.Push({type: "key head", name: "~\n`"}) - msg.Push({type: "key", name: "!\n1"}) - msg.Push({type: "key", name: "@\n2"}) - msg.Push({type: "key", name: "#\n3"}) - msg.Push({type: "key", name: "$\n4"}) - msg.Push({type: "key", name: "%\n5"}) - msg.Push({type: "key", name: "^\n6"}) - msg.Push({type: "key", name: "&\n7"}) - msg.Push({type: "key", name: "*\n8"}) - msg.Push({type: "key", name: "(\n9"}) - msg.Push({type: "key", name: ")\n0"}) - msg.Push({type: "key", name: "_\n-"}) - msg.Push({type: "key", name: "+\n="}) - msg.Push({type: "key", name: "Backspace"}) - - msg.Push({type: "key head", name: "Tab"}) - msg.Push({type: "key", name: "q"}) - msg.Push({type: "key", name: "w"}) - msg.Push({type: "key", name: "e"}) - msg.Push({type: "key", name: "r"}) - msg.Push({type: "key", name: "t"}) - msg.Push({type: "key", name: "y"}) - msg.Push({type: "key", name: "u"}) - msg.Push({type: "key", name: "i"}) - msg.Push({type: "key", name: "o"}) - msg.Push({type: "key", name: "p"}) - msg.Push({type: "key", name: "{\n["}) - msg.Push({type: "key", name: "}\n]"}) - msg.Push({type: "key tail", name: "|\n\\"}) - - // msg.Push({type: "key head", name: "CapsLock"}) - msg.Push({type: "key head", name: "Ctrl"}) - msg.Push({type: "key", name: "a"}) - msg.Push({type: "key", name: "s"}) - msg.Push({type: "key", name: "d"}) - msg.Push({type: "key", name: "f"}) - msg.Push({type: "key", name: "g"}) - msg.Push({type: "key", name: "h"}) - msg.Push({type: "key", name: "j"}) - msg.Push({type: "key", name: "k"}) - msg.Push({type: "key", name: "l"}) - msg.Push({type: "key", name: ":\n;"}) - msg.Push({type: "key", name: "\"\n'"}) - msg.Push({type: "key", name: "Enter"}) - - msg.Push({type: "key head", name: "Shift"}) - msg.Push({type: "key", name: "z"}) - msg.Push({type: "key", name: "x"}) - msg.Push({type: "key", name: "c"}) - msg.Push({type: "key", name: "v"}) - msg.Push({type: "key", name: "b"}) - msg.Push({type: "key", name: "n"}) - msg.Push({type: "key", name: "m"}) - msg.Push({type: "key", name: "<\n,"}) - msg.Push({type: "key", name: ">\n."}) - msg.Push({type: "key", name: "?\n/"}) - msg.Push({type: "key tail", name: "Shift"}) - - msg.Push({type: "key head", name: "Ctrl"}) - msg.Push({type: "key", name: "Win"}) - msg.Push({type: "key", name: "Alt"}) - msg.Push({type: "key", name: "Space"}) - msg.Push({type: "key", name: "Alt"}) - msg.Push({type: "key", name: "Win"}) - msg.Push({type: "key", name: "Ctrl"}) - + can.core.List([["Esc"], + ["~\n`", "!\n1", "@\n2", "#\n3", "$\n4", "%\n5", "^\n6", "&\n7", "*\n8", "(\n9", ")\n0", "_\n-", "+\n=", "Backspace"], + ["Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "{\n[", "}\n]", "|\n\\"], + ["Ctrl", "a", "s", "d", "f", "g", "h", "j", "k", "l", ":\n;", "\"\n'", "Enter"], + ["Shift", "z", "x", "c", "v", "b", "n", "m", "<\n,", ">\n.", "?\n/", "Shift"], + ["Ctrl", "Win", "Alt", "Space", "Alt", "Win", "Ctrl"], + ], function(list) { can.core.List(list, function(item, index) { + msg.Push(can.base.isObject(item)? item: {type: "key"+(index == 0? " head": index == list.length-1? " tail": ""), name: item}) + }) }) } }}) diff --git a/plugin/local/chat/keyboard.js b/plugin/local/chat/keyboard.js index d566e2f1..b917e962 100644 --- a/plugin/local/chat/keyboard.js +++ b/plugin/local/chat/keyboard.js @@ -1,10 +1,8 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { - can.onappend.table(can, msg) - can.onappend.board(can, msg) - var meta = {} - msg.Table(function(value, key) { meta[value.key] = value.value }) + can.onappend.table(can, msg), can.onappend.board(can, msg) + var meta = {}; msg.Table(function(value, key) { meta[value.key] = value.value }) can.require(["/plugin/input/keyboard.js"], function() { - can.onfigure.keyboard._show(can, can, function(value) { + can.onfigure.keyboard._show(can, function(value) { can.runAction(can.request({}, meta, can.Option()), "input", [value]) }) }) diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index e595bcae..c42b9daa 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -197,7 +197,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [], }); return parseInt(can.page.Select(can, line, "td.line")[0].innerText) }, searchLine: function(event, can, value) { - can.runAction(can.request(event, {name: value, text: can.current.text()}, can.Option()), NAVIGATE, [], function(msg) { + can.runAction(can.request(event, {name: value, text: can.current.text()}, can.Option()), code.NAVIGATE, [], function(msg) { msg.Append(nfs.FILE)? can.onimport.tabview(can, msg.Append(nfs.PATH), msg.Append(nfs.FILE), msg.Append(nfs.LINE)): can.user.toast(can, "not found") }) diff --git a/plugin/local/code/inner/syntax.js b/plugin/local/code/inner/syntax.js index 51681abf..d5731c15 100644 --- a/plugin/local/code/inner/syntax.js +++ b/plugin/local/code/inner/syntax.js @@ -13,6 +13,21 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", "endif": code.KEYWORD, }, }, + man: { + prefix: { + "NAME": code.KEYWORD, + "SYNOPSIS": code.KEYWORD, + "DESCRIPTION": code.KEYWORD, + + "AUTHOR": code.KEYWORD, + "COPYRIGHT": code.KEYWORD, + "LIBRARY": code.KEYWORD, + "STANDARDS": code.KEYWORD, + "SEE ALSO": code.KEYWORD, + "HISTORY": code.KEYWORD, + "BUGS": code.KEYWORD, + }, + }, h: { render: {}, link: "c", @@ -134,6 +149,28 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", "rm": code.FUNCTION, }, }, configure: {link: "sh"}, + shy: { + prefix: { + "#": code.COMMENT, + }, + keyword: { + "source": code.KEYWORD, + "return": code.KEYWORD, + "title": code.KEYWORD, + "premenu": code.KEYWORD, + "chapter": code.KEYWORD, + "section": code.KEYWORD, + "refer": code.KEYWORD, + "spark": code.KEYWORD, + "shell": code.KEYWORD, + "field": code.KEYWORD, + "chart": code.KEYWORD, + "label": code.KEYWORD, + "chain": code.KEYWORD, + "image": code.KEYWORD, + "sequence": code.KEYWORD, + }, + }, go: { render: {}, keyword: { @@ -183,6 +220,25 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", "complex": code.FUNCTION, "real": code.FUNCTION, "imag": code.FUNCTION, }, }, + godoc: { + render: {}, + link: "go", + }, + mod: { + split: { + operator: "()", + }, + prefix: { + "//": code.COMMENT, + }, + keyword: { + "go": code.KEYWORD, + "module": code.KEYWORD, + "require": code.KEYWORD, + "replace": code.KEYWORD, + "=>": code.KEYWORD, + }, + }, js: { render: {}, split: { diff --git a/plugin/local/code/snippet.js b/plugin/local/code/snippet.js deleted file mode 100644 index 9b392a39..00000000 --- a/plugin/local/code/snippet.js +++ /dev/null @@ -1,29 +0,0 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { - can.onmotion.clear(can) - if (msg.Option("content")) { - can.onappend.plugin(can, {index: "web.code.vimer", style: "full"}, function(sub) { - sub.run = function(event, cmds, cb) { var res = can.request(event) - if (cmds[1] == "plugin") { - can.runAction(event, "vimer", cmds, cb) - return - } - if (cmds[1] == "main.go") { res.Echo(msg.Option("content")) - can.onmotion.delay(can, function() { can.sub && can.sub.onaction["项目"]({}, can.sub) }) - } - cb(res), can.sub = can.core.Value(sub, "_outputs.-1") - } - }, can._output) - return - } - can.onappend.table(can, msg) - can.onappend.board(can, msg) - }, -}) -Volcanos(chat.ONACTION, {help: "操作数据", _init: function(can, msg, cb, target) { - }, - run: function(event, can, msg) { - can.runAction(event, ice.RUN, ["go", "hi.go", can.sub.onexport.content(can.sub)], function(msg) { - can.onappend.board(can, msg) - }) - }, -}) diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index c9b1779d..3925412b 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -1,7 +1,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = [] can.onengine.listen(can, "tabview.line.select", function(msg) { can.onaction._selectLine(msg._event, can) }) - can.core.Item(can.onkeymap._mode.plugin, function(key, value) { can.onkeymap._mode.normal[key] = can.onkeymap._mode.normal[key]||value }) + // can.core.Item(can.onkeymap._mode.plugin, function(key, value) { can.onkeymap._mode.normal[key] = can.onkeymap._mode.normal[key]||value }) can.onimport._input(can), can.onkeymap._build(can), can.onkeymap._plugin({}, can) can.page.ClassList.add(can, can._fields, code.VIMER), can.base.isFunc(cb) && cb(msg) can.onengine.plugin(can, can.onplugin) diff --git a/plugin/state.js b/plugin/state.js index 9dc4ec09..7dd48d08 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -127,10 +127,10 @@ Volcanos(chat.ONACTION, {help: "交互操作", list: [ can.request(event, kit.Dict(ctx.INDEX, can._index, ice.MSG_DAEMON, can.core.Keys(can.ondaemon._list[0], can._daemon))) can.runAction(event, "keyboard", [], function(msg) { - can.user.toast(can, { + can.onmotion.move(can, can.user.toast(can, { title: msg.Append(mdb.NAME), duration: -1, content: msg.Append(mdb.TEXT), action: [cli.CLOSE, cli.OPEN], - }), can.user.copy(msg._event, can, msg.Append(mdb.NAME)) + })._target, {}), can.user.copy(msg._event, can, msg.Append(mdb.NAME)) }, true) }, "打开链接": function(event, can) { var meta = can.Conf(), args = can.Option(); args.river = "", args.storm = "" diff --git a/proto.js b/proto.js index c9a78b53..ec3083e1 100644 --- a/proto.js +++ b/proto.js @@ -144,7 +144,7 @@ var code = { TEMPLATE: "template", COMPLETE: "complete", - NAVIGAET: "navigate", + NAVIGATE: "navigate", } var wiki = { TITLE: "title", BRIEF: "brief", REFER: "refer", SPARK: "spark",