1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00

opt chrome

This commit is contained in:
shaoying 2020-07-01 09:58:33 +08:00
parent b83f39847d
commit 1f748b17b3
6 changed files with 88 additions and 160 deletions

View File

@ -4,7 +4,6 @@ import (
ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/cli"
"github.com/shylinux/icebergs/base/gdb"
"github.com/shylinux/icebergs/base/mdb"
"github.com/shylinux/icebergs/base/nfs"
kit "github.com/shylinux/toolkits"
@ -25,7 +24,7 @@ func _dream_list(m *ice.Message) {
m.Push(kit.MDB_STATUS, gdb.STOP)
}
for _, k := range []string{"start", "stop", "restart"} {
m.Push(k, m.Cmdx(mdb.RENDER, RENDER.Button, k))
m.Push(k, m.Cmdx("_render", RENDER.Button, k))
}
})
m.Sort(kit.MDB_NAME)

View File

@ -35,7 +35,7 @@ func init() {
Commands: map[string]*ice.Command{
DRAW: {Name: "draw path=hi.svg auto", Help: "思维导图", Meta: kit.Dict(mdb.PLUGIN, DrawPlugin), Action: map[string]*ice.Action{
nfs.SAVE: {Name: "save path text", Help: "保存", Hand: func(m *ice.Message, arg ...string) {
_wiki_save(m, DATA, arg[0], kit.Select(m.Option("content"), arg, 1))
_wiki_save(m, DRAW, arg[0], kit.Select(m.Option("content"), arg, 1))
}},
"run": {Name: "show zone type name text", Help: "运行", Hand: func(m *ice.Message, arg ...string) {
_draw_show(m, arg[0], arg[1], arg[2], arg[3], arg[4:]...)

View File

@ -9,6 +9,8 @@ import (
)
const CHROME = "chrome"
const HISTORY = "history"
const BOOKMARK = "bookmark"
var Index = &ice.Context{Name: "chrome", Help: "浏览器",
Configs: map[string]*ice.Config{
@ -18,80 +20,39 @@ var Index = &ice.Context{Name: "chrome", Help: "浏览器",
},
Commands: map[string]*ice.Command{
"/crx": {Name: "/crx", Help: "/crx", Action: map[string]*ice.Action{
"history": {Name: "history", Help: "历史记录", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(web.SPIDE, "dev", "/code/chrome/favor", "cmds", "insert", "name", arg[1], "note", arg[2],
"tab", m.Conf(CHROME, "meta.favor"), "sid", m.Option("sid"))
web.HISTORY: {Name: "history", Help: "历史记录", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(web.SPIDE, "dev", "/code/chrome/favor", "cmds", mdb.INSERT,
"tab", m.Conf(CHROME, "meta.favor"), "name", arg[1], "note", arg[2],
"sid", m.Option("sid"))
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
"/favor": {Name: "/favor", Help: "收藏", Action: map[string]*ice.Action{
mdb.INSERT: {Name: "insert", Help: "插入", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(web.FAVOR, mdb.INSERT, m.Option("tab"), web.SPIDE, m.Option("name"), m.Option("note"))
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
CHROME: {Name: "chrome", Help: "浏览器", List: kit.List(
kit.MDB_INPUT, "text", "name", "name", "action", "auto",
kit.MDB_INPUT, "text", "name", "wid", "action", "auto",
kit.MDB_INPUT, "text", "name", "url",
kit.MDB_INPUT, "button", "name", "查看",
kit.MDB_INPUT, "button", "name", "返回", "cb", "Last",
), Meta: kit.Dict("detail", []string{"编辑", "goBack", "goForward", "duplicate", "reload", "remove"}), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
CHROME: {Name: "chrome name=chrome wid=auto url auto", Help: "浏览器", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 {
// 窗口列表
m.Richs(web.SPACE, nil, "*", func(key string, value map[string]interface{}) {
if kit.Format(value["type"]) == "chrome" {
m.Push(key, value, []string{"time", "name"})
m.Richs(web.SPACE, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
if kit.Format(value[kit.MDB_TYPE]) == CHROME {
m.Push(key, value, []string{kit.MDB_TIME, kit.MDB_NAME})
}
})
return
}
if arg[0] == "action" {
// 命令转换
m.Cmdy(web.SPACE, m.Option("name"), "tabs", m.Option("tid"), arg[1])
arg = []string{m.Option("name"), m.Option("wid")}
}
// 下发命令
m.Cmdy(web.SPACE, arg[0], "wins", arg[1:])
m.Cmdy(web.SPACE, arg[0], CHROME, arg[1:])
}},
"cookie": {Name: "cookie", Help: "数据", List: kit.List(
kit.MDB_INPUT, "text", "name", "name", "action", "auto",
kit.MDB_INPUT, "text", "name", "id", "action", "auto",
kit.MDB_INPUT, "button", "name", "查看",
kit.MDB_INPUT, "button", "name", "返回", "cb", "Last",
), Meta: kit.Dict("detail", []string{"编辑", "删除"}), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
BOOKMARK: {Name: "bookmark name=chrome auto", Help: "书签", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 {
// 窗口列表
m.Cmdy("chrome")
m.Cmdy(CHROME)
return
}
if arg[0] == "action" {
// 命令转换
m.Cmdy(web.SPACE, m.Option("name"), "cookie", arg[1:])
arg = []string{m.Option("name"), m.Option("id")}
}
// 下发命令
m.Cmdy(web.SPACE, arg[0], "cookie", arg[1:])
}},
"bookmark": {Name: "bookmark", Help: "书签", List: kit.List(
kit.MDB_INPUT, "text", "name", "name", "action", "auto",
kit.MDB_INPUT, "text", "name", "id", "action", "auto",
kit.MDB_INPUT, "button", "name", "查看",
kit.MDB_INPUT, "button", "name", "返回", "cb", "Last",
), Meta: kit.Dict("detail", []string{"编辑", "删除"}), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if len(arg) == 0 {
// 窗口列表
m.Cmdy("chrome")
return
}
if arg[0] == "action" {
// 命令转换
m.Cmdy(web.SPACE, m.Option("name"), "bookmark", arg[1:])
arg = []string{m.Option("name"), m.Option("id")}
}
// 下发命令
m.Cmdy(web.SPACE, arg[0], "bookmark", arg[1:])
m.Cmdy(web.SPACE, arg[0], BOOKMARK, arg[1:])
}},
},
}

View File

@ -33,6 +33,16 @@ func _input_list(m *ice.Message, lib string) {
})
}
func _input_push(m *ice.Message, lib, text, code, weight string) {
if m.Richs(INPUT, "", lib, nil) == nil {
m.Rich(INPUT, "", kit.Data(
kit.MDB_STORE, path.Join(m.Conf(INPUT, "meta.store"), lib),
kit.MDB_FSIZE, m.Conf(INPUT, "meta.fsize"),
kit.MDB_LIMIT, m.Conf(INPUT, "meta.limit"),
kit.MDB_LEAST, m.Conf(INPUT, "meta.least"),
kit.MDB_ZONE, lib,
))
}
m.Richs(INPUT, "", lib, func(key string, value map[string]interface{}) {
prefix := kit.Keys(kit.MDB_HASH, key)
m.Conf(INPUT, kit.Keys(prefix, "meta.limit"), 0)
@ -140,7 +150,7 @@ func _input_load(m *ice.Message, file string, libs ...string) {
kit.MDB_FSIZE, m.Conf(INPUT, "meta.fsize"),
kit.MDB_LIMIT, m.Conf(INPUT, "meta.limit"),
kit.MDB_LEAST, m.Conf(INPUT, "meta.least"),
"zone", lib,
kit.MDB_ZONE, lib,
)))
// 缓存配置

View File

@ -10,7 +10,6 @@ fun! ShyLog(...)
endfun
" 后端通信
call ShyDefine("g:ctx_sid", "")
call ShyDefine("g:ctx_url", (len($ctx_dev) > 1? $ctx_dev: "http://127.0.0.1:9020") . "/code/vim/")
fun! ShySend(cmd, arg)
if has_key(a:arg, "sub") && a:arg["sub"] != ""
@ -19,7 +18,6 @@ fun! ShySend(cmd, arg)
let a:arg["sub"] = "@" . temp
endif
let a:arg["sid"] = g:ctx_sid
let a:arg["pwd"] = getcwd()
let a:arg["buf"] = bufname("%")
let a:arg["row"] = line(".")
@ -31,18 +29,6 @@ fun! ShySend(cmd, arg)
return system("curl -s " . g:ctx_url . a:cmd . args . " 2>/dev/null")
endfun
" 用户登录
fun! ShyLogout()
if g:ctx_sid != "" | call ShySend("logout", {}) | endif
endfun
fun! ShyLogin()
let g:ctx_sid = ShySend("login", {"share": $ctx_share, "pid": getpid(), "pane": $TMUX_PANE, "hostname": hostname(), "username": $USER})
endfun
fun! ShyHelp()
echo ShySend("help", {})
endfun
call ShyLogin()
" 数据同步
fun! ShySync(target)
if bufname("%") == "ControlP" | return | end
@ -128,22 +114,6 @@ fun! ShyFavors()
botright lopen
if l:view == 1 | only | endif
endfun
fun! ShyCheck(target)
if a:target == "cache"
call ShySync("bufs")
call ShySync("regs")
call ShySync("marks")
call ShySync("tags")
elseif a:target == "fixs"
let l = len(getqflist())
if l > 0
execute "copen " . (l > 10? 10: l + 1)
call ShySync("fixs")
else
cclose
end
end
endfun
" 搜索
call ShyDefine("g:grep_dir", "./")
@ -154,20 +124,24 @@ fun! ShyGrep(word)
copen
endfun
" 任务列表
fun! ShyTask()
call ShySend({"cmd": "tasklet", "arg": input("target: "), "sub": input("detail: ")})
endfun
" 标签列表
fun! ShyTag(word)
execute "tag " . a:word
endfun
" 自动刷新
let ShyComeList = {}
fun! ShyCome(buf, row, action, extra)
" 低配命令
if !exists("appendbufline")
execute a:extra["row"]
if a:extra["count"] > 0
execute "+1,+" . a:extra["count"] ."delete"
endif
let a:extra["count"] = 0
for line in reverse(split(ShySend("sync", {"cmds": "trans", "arg": getline(".")}), "\n"))
let a:extra["count"] += 1
call append(".", line)
endfor
return
endif
if a:action == "refresh"
" 清空历史
if a:extra["count"] > 0 | call deletebufline(a:buf, a:row+1, a:row+a:extra["count"]) | endif
@ -188,13 +162,6 @@ fun! ShyUpdate(timer)
call ShyCome(what["buf"], what["row"], what["action"], what)
endfun
fun! ShyComes(action)
" 低配命令
if !exists("appendbufline")
for line in reverse(split(ShySend({"cmd": "trans", "arg": getline(".")}), "\n"))
call append(".", line)
endfor
return
endif
if !exists("b:timer") | let b:timer = -1 | endif
" 清除定时
if b:timer > 0 | call timer_stop(b:timer) | let b:timer = -2 | return | endif
@ -203,9 +170,24 @@ fun! ShyComes(action)
let g:ShyComeList[b:timer] = {"buf": bufname("."), "row": line("."), "pre": getline("."), "action": a:action, "count": 0}
call ShyLog("new timer", b:timer)
endfun
fun! ShyCheck(target)
if a:target == "cache"
call ShySync("bufs")
call ShySync("regs")
call ShySync("marks")
call ShySync("tags")
elseif a:target == "fixs"
let l = len(getqflist())
if l > 0
execute "copen " . (l > 10? 10: l + 1)
call ShySync("fixs")
else
cclose
end
end
endfun
" 事件回调
autocmd! VimLeave * call ShyLogout()
autocmd! BufReadPost * call ShySync("bufs")
autocmd! BufReadPost * call ShySync("read")
autocmd! BufWritePre * call ShySync("write")
@ -218,11 +200,10 @@ endif
autocmd! InsertLeave * call ShySync("insert")
" 按键映射
nnoremap <C-G><C-G> :call ShyGrep(expand("<cword>"))<CR>
nnoremap <C-G><C-F> :call ShyFavor()<CR>
nnoremap <C-G>f :call ShyFavors()<CR>
nnoremap <C-G><C-G> :call ShyGrep(expand("<cword>"))<CR>
" nnoremap <C-G><C-R> :call ShyCheck("cache")<CR>
" nnoremap <C-G><C-T> :call ShyTask()<CR>
nnoremap <C-G><C-K> :call ShyComes("refresh")<CR>
inoremap <C-K> <C-X><C-U>

View File

@ -1,24 +1,25 @@
package vim
import (
"fmt"
ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/cli"
"github.com/shylinux/icebergs/base/web"
"github.com/shylinux/icebergs/core/code"
kit "github.com/shylinux/toolkits"
"fmt"
"io/ioutil"
"os"
"path"
"strings"
)
const VIM = "vim"
var Index = &ice.Context{Name: "vim", Help: "编辑器",
Caches: map[string]*ice.Cache{},
Configs: map[string]*ice.Config{
"vim": {Name: "vim", Help: "编辑器", Value: kit.Data(
VIM: {Name: "vim", Help: "编辑器", Value: kit.Data(
"source", "ftp://ftp.vim.org/pub/vim/unix/vim-8.1.tar.bz2",
"target", "usr/local", "version", "vim81", "config", []interface{}{
"--enable-pythoninterp=yes",
@ -84,52 +85,23 @@ var Index = &ice.Context{Name: "vim", Help: "编辑器",
code.PROJECT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
}},
web.LOGIN: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if f, _, e := m.R.FormFile("sub"); e == nil {
defer f.Close()
// 文件参数
if b, e := ioutil.ReadAll(f); e == nil {
m.Option("sub", string(b))
}
}
ls := strings.Split(m.Option("pwd"), "/")
m.Option("you", ls[len(ls)-1])
m.Richs("login", nil, m.Option("sid"), func(key string, value map[string]interface{}) {
// 查找空间
m.Option("you", kit.Select(m.Option("you"), value["you"]))
})
m.Logs(ice.LOG_AUTH, "you", m.Option("you"), "url", m.Option(ice.MSG_USERURL), "cmd", m.Optionv("cmds"), "sub", m.Optionv("sub"))
m.Option(ice.MSG_OUTPUT, ice.RENDER_RESULT)
}},
"/help": {Name: "/help", Help: "帮助", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmdy("help")
}},
"/login": {Name: "/login", Help: "登录", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmdy("login", "init", c.Name)
}},
"/logout": {Name: "/logout", Help: "登出", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmdy("login", "exit")
}},
"/sync": {Name: "/sync", Help: "同步", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Render(ice.RENDER_RESULT)
switch arg[0] {
case "read", "write", "exec", "insert":
m.Cmd(web.FAVOR, m.Conf("vim", "meta.history"), web.TYPE_VIMRC, arg[0], kit.Select(m.Option("arg"), m.Option("sub")),
"sid", m.Option("sid"), "pwd", m.Option("pwd"), "buf", m.Option("buf"), "row", m.Option("row"), "col", m.Option("col"))
default:
m.Richs("login", nil, m.Option("sid"), func(key string, value map[string]interface{}) {
kit.Value(value, kit.Keys("sync", arg[0]), kit.Dict(
"time", m.Time(), "text", m.Option("sub"),
"pwd", m.Option("pwd"), "buf", m.Option("buf"),
))
})
m.Cmd(web.FAVOR, m.Conf(VIM, "meta.history"), web.TYPE_VIMRC, arg[0], kit.Select(m.Option("arg"), m.Option("sub")),
"pwd", m.Option("pwd"), "buf", m.Option("buf"), "row", m.Option("row"), "col", m.Option("col"))
case "trans":
if m.Cmdy(kit.Split(m.Option("arg"))); m.Result() == "" {
m.Table()
}
}
}},
"/input": {Name: "/input", Help: "补全", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if strings.HasPrefix(strings.TrimSpace(arg[0]), "ice ") {
m.Render(ice.RENDER_RESULT)
arg[0] = strings.TrimSpace(arg[0])
if strings.HasPrefix(arg[0], "ice ") {
list := kit.Split(strings.TrimSpace(arg[0]))
switch list[1] {
case "add":
@ -137,8 +109,9 @@ var Index = &ice.Context{Name: "vim", Help: "编辑器",
m.Cmd("web.code.input.push", list[2:])
arg[0] = list[4]
default:
// 执行命令
// ice add person 想你 shwq
if m.Cmdy(list[1:]); m.Result() == "" {
m.Echo("%s\n", arg[0])
m.Table()
}
return
@ -151,6 +124,7 @@ var Index = &ice.Context{Name: "vim", Help: "编辑器",
})
}},
"/favor": {Name: "/favor", Help: "收藏", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Render(ice.RENDER_RESULT)
if m.Options("arg") {
// 添加收藏
m.Cmdy(web.FAVOR, kit.Select(m.Conf("vim", "meta.history"), m.Option("tab")),
@ -160,12 +134,15 @@ var Index = &ice.Context{Name: "vim", Help: "编辑器",
}
// 查看收藏
m.Cmd(web.PROXY, m.Option("you"), web.FAVOR, m.Option("tab"), "extra", "extra.pwd", "extra.buf", "extra.row", "extra.col").Table(func(index int, value map[string]string, head []string) {
switch value["type"] {
case web.TYPE_VIMRC:
m.Echo("%v\n", m.Option("tab")).Echo("%v:%v:%v:(%v): %v\n",
value["extra.buf"], value["extra.row"], value["extra.col"], value["name"], value["text"])
}
m.Richs(web.FAVOR, nil, m.Option("tab"), func(key string, val map[string]interface{}) {
m.Grows(web.FAVOR, kit.Keys(kit.MDB_HASH, key), "", "", func(index int, value map[string]interface{}) {
extra := value["extra"].(map[string]interface{})
switch value[kit.MDB_TYPE] {
case web.TYPE_VIMRC:
m.Echo("%v\n", m.Option("tab")).Echo("%v:%v:%v:(%v): %v\n",
extra["buf"], extra["row"], extra["col"], value["name"], value["text"])
}
})
})
}},
},