From 65c8ff8de691d24e5379fd7de709eaf9b60752dd Mon Sep 17 00:00:00 2001 From: harveyshao Date: Sun, 11 Dec 2022 20:18:27 +0800 Subject: [PATCH] opt bash --- lib/misc.js | 4 +- lib/page.js | 2 +- lib/user.js | 4 ++ page/index.css | 4 +- plugin/local/code/inner.js | 11 ++---- plugin/local/code/inner/syntax.js | 63 +++++++++++++++++++++++-------- plugin/local/code/vimer.js | 2 +- plugin/state.js | 2 +- plugin/table.js | 6 ++- proto.js | 3 +- 10 files changed, 70 insertions(+), 31 deletions(-) diff --git a/lib/misc.js b/lib/misc.js index 714140dd..688eaea3 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -97,12 +97,12 @@ Volcanos("misc", {Message: function(event, can) { var msg = {} if (meta[cmds[0]]) { return meta[cmds[0]](cmds.slice(1)), true } }, Run: function(event, can, dataset, cmds, cb) { var msg = can.request(event) - var form = {cmds: cmds||msg.cmd}; msg.option && msg.option.forEach(function(item) { + var form = {}; msg.option && msg.option.forEach(function(item) { if ([ice.MSG_HANDLE, ice.MSG_DAEMON].indexOf(item) > -1) { return } if (can.base.isObject(msg.Option(item))) { return } if (can.base.isFunc(msg.Option(item))) { return } msg[item] && (form[item] = msg[item]) - }) + }), form.cmds = cmds||form.cmds can.misc.POST(can, msg, can.base.MergeURL(dataset.names.toLowerCase(), "_name", (msg._can.sup||msg._can)._name, "_index", (msg._can.sup||msg._can)._index, ice.MSG_DAEMON, msg.__daemon||dataset.daemon||"" ), form, cb) diff --git a/lib/page.js b/lib/page.js index 236a8072..5504c06b 100644 --- a/lib/page.js +++ b/lib/page.js @@ -140,7 +140,7 @@ Volcanos("page", {ClassList: { case mdb.PAGE: _list.push({type: html.TEXT, name: mdb.LIMIT, value: can._msg.Option(mdb.LIMIT)}) _list.push({type: html.TEXT, name: mdb.OFFEND, value: can._msg.Option(mdb.OFFEND)}) - _list.push(mdb.PREV, mdb.NEXT) + _list.push(mdb.NEXT, mdb.PREV) break default: (function() { var item = can.core.SplitInput(list[i], html.BUTTON); diff --git a/lib/user.js b/lib/user.js index 356c8f16..7d55b41b 100644 --- a/lib/user.js +++ b/lib/user.js @@ -60,6 +60,10 @@ Volcanos("user", {info: {}, agent: { web.CLEAR, "清空", web.REFRESH, "刷新", web.SUBMIT, "提交", web.CANCEL, "取消", web.UPLOAD, "上传", web.DOWNLOAD, "下载", web.TOIMAGE, "截图", web.SHARE, "共享", "Close", "关闭", "Close others", "关闭其它", "Close all", "关闭所有", chat.IFRAME, "浏览", chat.LOCATION, "地图", + nfs.SAVE, "保存", nfs.LOAD, "加载", + cli.ORDER, "加载", + aaa.INVITE, "邀请", + cli.SYSTEM, "命令", "revert", "恢复", "full", "全屏", )[text]||text diff --git a/page/index.css b/page/index.css index e973e047..3ad12c17 100644 --- a/page/index.css +++ b/page/index.css @@ -47,7 +47,8 @@ div.output div.project div.list { margin-left:10px; } div.output div.project div.switch { transform: rotate(90deg) translate(1px, 0px); width:12px; float:left; } div.output div.project div.switch.open { transform: rotate(180deg) translate(-4px, 4px); } div.output div.project div.zone>div.name { background-color:steelblue; color:white; text-align:center; padding:3px; clear:both; } -div.output div.project div.zone>div.list>div.zone>div.name { padding-left:20px; text-align:left; } +div.output div.project div.zone>div.list>div.zone>div.name { background-color:#09466fc2; padding-left:20px; text-align:left; } +div.output div.project div.zone>div.list>div.zone>div.name:hover { background-color:#3c7da8d9; } div.output div.project div.item>div.name { padding-left:20px; } div.output div.project div.zone>div.action>div.item { padding:0; margin:0; float:right; clear:none; } div.output div.project div.zone>div.action>div.item input[type=text] { background-color:#ff000000; padding-left:10px; color:white; } @@ -186,6 +187,7 @@ body.white fieldset.panel.Action div.action { color:white; } body.white fieldset.plugin { background-color:#ffffffa1; } body.white fieldset.float { background-color:#0e3369; color:white; } body.white fieldset.full { background-color:#0e3369; color:white; } +body.white div.output div.project div.zone>div.list>div.zone>div.name { background-color:#09466f66; color:black; } /* white hover */ body.white legend:hover { background-color:skyblue; } diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index 04351098..01bf4dc8 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -9,19 +9,16 @@ Volcanos(chat.ONIMPORT, { }, tabInputs: function(event, can, ps, key, pre, cb, parent) { + var core = ["usr/icebergs/core/", "usr/volcanos/plugin/local/"] can.runAction(event, mdb.INPUTS, [key, pre], function(msg) { var _trans = {} var carte = can.user[parent? "carteRight": "carte"](event, can, {}, msg.Table(function(value) { var p = can.base.trimPrefix(value[key], pre) - if (can.base.beginWith(pre, "usr/icebergs/core/") && can.base.beginWith(value[key], "usr/volcanos/plugin/local/")) { - var p = can.base.trimPrefix(can.base.replaceAll(value[key], "usr/volcanos/plugin/local/", "usr/icebergs/core/"), pre) - } - if (can.base.beginWith(pre, "usr/volcanos/plugin/local/") && can.base.beginWith(value[key], "usr/icebergs/core/")) { - var p = can.base.trimPrefix(can.base.replaceAll(value[key], "usr/icebergs/core/", "usr/volcanos/plugin/local/"), pre) - } + if (can.base.beginWith(pre, core[0]) && can.base.beginWith(value[key], core[1])) { var p = can.base.trimPrefix(can.base.replaceAll(value[key], core[1], core[0]), pre) } + if (can.base.beginWith(pre, core[1]) && can.base.beginWith(value[key], core[0])) { var p = can.base.trimPrefix(can.base.replaceAll(value[key], core[0], core[1]), pre) } return _trans[p] = value[key], p }), function(event, button) { can.base.endWith(button, ps)? can.onimport.tabInputs(event, can, ps, key, pre+button, cb, carte): cb(can.core.Split(_trans[button], ps), pre) }, parent)._target, _p = can.core.Split(event.target.innerHTML.trim(), ice.PT)[0] - can.page.Select(can, carte, html.DIV_ITEM, function(target) { can.base.beginWith(target.innerHTML, _p) && carte.insertBefore(target, carte.firstChild) }) + can.page.Select(can, carte, html.DIV_ITEM, function(target) { event.target.innerHTML.trim() != target.innerHTML.trim() && can.base.beginWith(target.innerHTML, _p) && carte.insertBefore(target, carte.firstChild) }) function remove(p) { if (p && p._sub) { remove(p._sub), can.page.Remove(can, p._sub), delete(p._sub) } } if (parent) { remove(parent), parent._sub = carte } }) }, diff --git a/plugin/local/code/inner/syntax.js b/plugin/local/code/inner/syntax.js index 536f91b3..3e325250 100644 --- a/plugin/local/code/inner/syntax.js +++ b/plugin/local/code/inner/syntax.js @@ -40,11 +40,11 @@ Volcanos(chat.ONSYNTAX, { "#": code.KEYWORD, }, regexp: { - "^u_\\w+$": code.DATATYPE, - "^\\w+_t$": code.DATATYPE, - "^\\w+_pt$": code.DATATYPE, - "^[-]*\\d+$": code.CONSTANT, - "^[A-Z0-9_]+$": code.CONSTANT, + "^u_\\w $": code.DATATYPE, + "^\\w _t$": code.DATATYPE, + "^\\w _pt$": code.DATATYPE, + "^[-]*\\d $": code.CONSTANT, + "^[A-Z0-9_] $": code.CONSTANT, }, keyword: { "#include": code.KEYWORD, @@ -107,9 +107,8 @@ Volcanos(chat.ONSYNTAX, { }, }, sh: { - render: {}, split: { - operator: "=", + operator: "=()|><;", }, prefix: { "#": code.COMMENT, @@ -118,7 +117,7 @@ Volcanos(chat.ONSYNTAX, { " {": code.COMMENT, }, regexp: { - "[A-Z0-9_]+": code.CONSTANT, + "[A-Z0-9_] ": code.CONSTANT, }, keyword: { "local": code.KEYWORD, @@ -134,17 +133,42 @@ Volcanos(chat.ONSYNTAX, { "elif": code.KEYWORD, "else": code.KEYWORD, "fi": code.KEYWORD, - + "for": code.KEYWORD, + "while": code.KEYWORD, + "do": code.KEYWORD, + "done": code.KEYWORD, "case": code.KEYWORD, "in": code.KEYWORD, "esac": code.KEYWORD, + "shift": code.FUNCTION, "eval": code.FUNCTION, + "trap": code.FUNCTION, "test": code.FUNCTION, "echo": code.FUNCTION, - "mkdir": code.FUNCTION, "cat": code.FUNCTION, "rm": code.FUNCTION, + "mkdir": code.FUNCTION, + "mktemp": code.FUNCTION, + "history": code.FUNCTION, + "complete": code.FUNCTION, + "compgen": code.FUNCTION, + "bind": code.FUNCTION, + "alias": code.FUNCTION, + + "xargs": code.FUNCTION, + "curl": code.FUNCTION, + "sed": code.FUNCTION, + "tr": code.FUNCTION, + "du": code.FUNCTION, + "cut": code.FUNCTION, + "tail": code.FUNCTION, + "head": code.FUNCTION, + "grep": code.FUNCTION, + + "/dev/null": code.CONSTANT, + "DEBUG": code.CONSTANT, + "EXIT": code.CONSTANT, }, }, configure: {link: "sh"}, shy: { @@ -171,11 +195,11 @@ Volcanos(chat.ONSYNTAX, { }, go: { split: { - operator: "{([-+:;!.,*])}", + operator: "{([- :;!.,*])}", }, regexp: { - "[0-9]+": code.CONSTANT, - "[A-Z_0-9]+": code.CONSTANT, + "[0-9] ": code.CONSTANT, + "[A-Z_0-9] ": code.CONSTANT, }, prefix: { "//": code.COMMENT, @@ -266,7 +290,7 @@ Volcanos(chat.ONSYNTAX, { }, js: { split: { - operator: "{[(.,:;!?|<*>-+)]}", + operator: "{[(.,:;!?|<*>- )]}", }, prefix: { "// ": code.COMMENT, @@ -342,8 +366,12 @@ Volcanos(chat.ONSYNTAX, { operator: ".[]()>,{:;}", }, regexp: { - "[-0-9]+px": code.CONSTANT, - "#[^ ;]+": code.CONSTANT, + "[-0-9] px": code.CONSTANT, + "#[^ ;] ": code.CONSTANT, + }, + prefix: { + "// ": code.COMMENT, + "/* ": code.COMMENT, }, keyword: { "body": code.KEYWORD, @@ -366,6 +394,9 @@ Volcanos(chat.ONSYNTAX, { "h1": code.KEYWORD, "h2": code.KEYWORD, "h3": code.KEYWORD, + + "hover": code.DATATYPE, + "focus": code.DATATYPE, "background-color": code.FUNCTION, "font-family": code.FUNCTION, diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 64e594c6..4ed95158 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -28,7 +28,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { Volcanos(chat.ONFIGURE, { create: function(can, target, zone, path) { can.isCmdMode()? can.onappend._action(can, can.base.Obj(can._msg.Option(ice.MSG_ACTION)).concat( - ["favor", "git", "首页", "官网" , "文档" , "百度"], window.webview? ["浏览器", "录屏", "编辑器", "日志"]: [], + ["favor", "git", "首页", "官网" , "文档" , "百度"], window.webview? ["浏览器", "录屏", "日志", "编辑器"]: [], ), target): can.onmotion.hidden(can, target.parentNode) }, recent: function(can, target, zone, path) { var total = 0 diff --git a/plugin/state.js b/plugin/state.js index 62c5402a..7c452b06 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -142,7 +142,7 @@ Volcanos(chat.ONACTION, {list: [ "生成链接": function(event, can) { can.onmotion.share(event, can, [], [mdb.LINK, can.user.copy(event, can, can.onexport.link(can))]) }, "生成脚本": function(event, can) { var conf = can.Conf() var args = can.Input().join(ice.SP), list = [ - "export ctx_dev="+location.origin+"; ctx_temp=$(mktemp); curl -o $ctx_temp -fsSL $ctx_dev;"+" source $ctx_temp "+(conf.index||"")+ice.SP+args, + "export ctx_dev="+location.origin+"; ctx_temp=$(mktemp); curl -o $ctx_temp -fsSL $ctx_dev;"+" source $ctx_temp cmd "+(conf.index||"")+ice.SP+args, "ish_sys_dev_run_command "+args, "ish_sys_dev_run_action", "ish_sys_dev_run_source", ] can.user.copy(event, can, list[0]) diff --git a/plugin/table.js b/plugin/table.js index afe406e5..4ed1c985 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -163,7 +163,11 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.cl meta.type = "plug", can.onappend.plugin(can, meta, function(sub) { sub.sup = can sub.ConfHeight(target.offsetHeight-2*html.ACTION_HEIGHT), sub.ConfWidth(target.offsetWidth) can.page.style(can, sub._output, html.MAX_HEIGHT, sub.ConfHeight(), html.MAX_WIDTH, sub.ConfWidth()) - sub.run = function(event, cmds, cb) { can.runActionCommand(can.request(event, can.Option()), meta.index, cmds, cb) } + sub.run = function(event, cmds, cb) { + if (can.page.Select(can, sub._option, "input[name=path]").length > 0 && sub.Option(nfs.PATH) == "") { + sub.request(event, {path: "./"}) + } + can.runActionCommand(can.request(event, can.Option()), meta.index, cmds, cb) } sub.onaction.close = function() { can.onmotion.hidden(can, target) } can.base.isFunc(cb) && cb(sub) }, target) diff --git a/proto.js b/proto.js index 9cd48715..38cf2a6b 100644 --- a/proto.js +++ b/proto.js @@ -64,12 +64,13 @@ var ctx = { EXTRA_INDEX: "extra.index", EXTRA_ARGS: "extra.args", } var cli = { - DAEMON: "daemon", + SYSTEM: "system", DAEMON: "daemon", BEGIN: "begin", START: "start", OPEN: "open", CLOSE: "close", STOP: "stop", END: "end", RESTART: "restart", COLOR: "color", WHITE: "white", BLACK: "black", RED: "red", GREEN: "green", BLUE: "blue", YELLOW: "yellow", CYAN: "cyan", PURPLE: "purple", MAGENTA: "magenta", GLASS: "#0000", MAKE: "make", MAIN: "main", EXEC: "exec", DONE: "done", COST: "cost", FROM: "from", CLEAR: "clear", PWD: "pwd", + ORDER: "order", } var aaa = { LOGIN: "login", LOGOUT: "logout", INVITE: "invite", TOKEN: "token",