diff --git a/frame.js b/frame.js index b0a22166..9457a420 100644 --- a/frame.js +++ b/frame.js @@ -868,18 +868,11 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", _focus: [], _init: function(can, }) } can.onkeymap._build(can), document.body.onkeydown = function(event) { - if (event.metaKey) { if (window.webview) { switch (event.key) { - case "q": window.terminate(); break - case "w": can.user.close(); break - case "r": can.user.reload(true); break - case "f": can.onengine.signal(can, chat.ONOPENSEARCH, can.request({}, {type: mdb.FOREACH})); break - case "[": history.back(); break - case "]": history.forward(); break - } } return } - - if (can.page.tagis(event.target, html.SELECT, html.INPUT, html.TEXTAREA)) { return } - var msg = can.request(event, {"model": "normal"}); if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } - can.onengine.signal(can, chat.ONKEYDOWN, msg); if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } + var msg = can.request(event, {model: "normal"}); if (event.metaKey && window.webview) { + msg.Option("model", "webview") + } else if (can.page.tagis(event.target, html.SELECT, html.INPUT, html.TEXTAREA)) { return } else { + can.onengine.signal(can, chat.ONKEYDOWN, msg); if (msg.Option(ice.MSG_HANDLE) == ice.TRUE) { return } + } can._keylist = can.onkeymap._parse(event, can, msg.Option("model"), can._keylist, can._output) } can.onkeymap._build(can), document.body.onkeyup = function(event) { @@ -918,6 +911,16 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", _focus: [], _init: function(can, return list }, _mode: { + webview: { + q: function(event, can, target) { window.terminate() }, + o: function(event, can, target) { window.outopen(location.href) }, + t: function(event, can, target) { window.terminal(location.href) }, + w: function(event, can, target) { can.user.close() }, + r: function(event, can, target) { can.user.reload(true) }, + f: function(event, can, target) { can.onengine.signal(can, chat.ONOPENSEARCH, can.request({}, {type: mdb.FOREACH})) }, + "[": function(event, can, target) { history.back() }, + "]": function(event, can, target) { history.forward() }, + }, insert: { jk: function(event, can, target) { target.blur(), can.onkeymap.deleteText(target, target.selectionStart-1, target.selectionStart) }, Escape: function(event, can, target) { target.blur() }, diff --git a/lib/user.js b/lib/user.js index 8d0def86..a08f60da 100644 --- a/lib/user.js +++ b/lib/user.js @@ -85,12 +85,15 @@ Volcanos("user", {help: "用户操作", info: {}, agent: { "download": "下载", "toimage": "截图", "plugin": "插件", "prev": "上一页", "next": "下一页", - + "width": "宽度", + "height": "高度", + "link": "链接", "Close": "关闭", "Close others": "关闭其它", "Close all": "关闭所有", "source": "源码", "module": "模块", + "recent": "最近", "trash": "删除", "open": "打开", "close": "关闭", diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 33306bbf..03668699 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -29,6 +29,22 @@ Volcanos(chat.ONFIGURE, {help: "索引导航", create: function(can, target, zone, path) { can.isCmdMode()? can.onappend._action(can, can.base.Obj(can._msg.Option(ice.MSG_ACTION)), target): can.onmotion.hidden(can, target.parentNode) }, + recent: function(can, target, zone, path) { + can.runAction(can.request({}), code.FAVOR, ["_vimer"], function(msg) { + var list = {}; msg.Table(function(item) { list[item.path+item.file] = item }), can.core.Item(list, function(path, item) { + can.page.Append(can, target, [{text: [item.name||item.file, html.DIV, html.ITEM], onclick: function(event) { + can.onimport.tabview(can, can.Option(nfs.PATH), item.file, ctx.INDEX) + }}]) + }) + }) + can.runAction(can.request({}), code.FAVOR, ["_recent"], function(msg) { + var list = {}; msg.Table(function(item) { list[item.path+item.file] = item }), can.core.Item(list, function(path, item) { + can.page.Append(can, target, [{text: [path.split(ice.PS).slice(-2).join(ice.PS), html.DIV, html.ITEM], onclick: function(event) { + can.onimport.tabview(can, item.path, item.file) + }}]) + }) + }) + }, source: function(can, target, zone, path) { var total = 0 function show(target, path) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [ice.PWD], function(msg) { var list = msg.Table() can.core.List(list, function(item) { item._menu = shy({trash: function(event) { can.onaction._run(event, can, nfs.TRASH, [can.base.Path(path, item.path)]) }}) }) @@ -134,8 +150,10 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", can.onkeymap._insert(event, can, 0, -1) }), - yy: shy("复制当前行", function(event, can, target, count) { can._last_text = can.current.text() }), - dd: shy("剪切当前行", function(can) { + yy: shy("复制当前行", function(event, can, target, count) { + can._last_text = can.current.text() + }), + dd: shy("剪切当前行", function(event, can, target, count) { var line = can.onaction.selectLine(can), text = can.current.text() can.onaction.selectLine(can, can.onaction.deleteLine(can, line)), can._last_text = text can.undo.push(function() { can.onaction.insertLine(can, text, line), can.onaction.selectLine(can, line) }) @@ -268,7 +286,12 @@ Volcanos(chat.ONACTION, {help: "控件交互", can.ui.xterm.refresh(), can.user.toastSuccess(can) }) }, - + status: function(event, can, button) { + can.onimport.tabview(can, can.Option(nfs.PATH), "web.code.git.status", ctx.INDEX) + }, + favor: function(event, can, button) { + can.onimport.tabview(can, can.Option(nfs.PATH), "web.code.favor", ctx.INDEX) + }, "命令": function(event, can) { can.user.input(event, can, [ctx.INDEX], function(list) { can.onimport.tabview(can, can.Option(nfs.PATH), list[0], ctx.INDEX)