diff --git a/base/web/space.go b/base/web/space.go index f0eeb134..8d4ab551 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -295,7 +295,6 @@ const SPACE = "space" func init() { Index.MergeCommands(ice.Commands{ - "m": {Help: "模块", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.REQUIRE_MODULES, arg) }}, "p": {Help: "资源", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { if kit.IsIn(arg[0], ice.SRC, ice.USR) { ShareLocalFile(m, arg...) @@ -303,8 +302,20 @@ func init() { m.Cmdy(PP(ice.REQUIRE), arg) } }}, - "s": {Help: "空间", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(CHAT_POD, arg) }}, + "m": {Help: "模块", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { + p := path.Join(nfs.USR_MODULES, path.Join(arg...)) + kit.If(!nfs.Exists(m, p), func() { + if kit.IsIn(m.Option(ice.MSG_USERROLE), aaa.TECH, aaa.ROOT) { + kit.If(!nfs.Exists(m, nfs.USR_PACKAGE), func() { + m.Cmd(nfs.SAVE, nfs.USR_PACKAGE, kit.Formats(kit.Dict(mdb.NAME, "usr", nfs.VERSION, "0.0.1"))) + }) + m.Cmd(cli.SYSTEM, "npm", "install", arg[0], kit.Dict(cli.CMD_DIR, ice.USR)) + } + }) + m.RenderDownload(p) + }}, "c": {Help: "命令", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(CHAT_CMD, arg) }}, + "s": {Help: "空间", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(CHAT_POD, arg) }}, SPACE: {Name: "space name cmds auto", Help: "空间站", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { cli.NodeInfo(m, ice.Info.Pathname, WORKER) diff --git a/core/code/inner.go b/core/code/inner.go index 427c202e..4f88c7e5 100644 --- a/core/code/inner.go +++ b/core/code/inner.go @@ -19,16 +19,7 @@ import ( func _inner_list(m *ice.Message, ext, file, dir string) { file = kit.Split(file, "?")[0] - kit.If(aaa.Right(m, dir, file), func() { - m.Cmdy(nfs.CAT, path.Join(dir, file)) - return - kit.If(nfs.IsSourceFile(m, ext), func() { - m.Cmdy(nfs.CAT, path.Join(dir, file)) - }, func() { - _inner_show(m.RenderResult().SetResult(), ext, file, dir) - kit.If(m.Result() == "", func() { m.Cmdy(nfs.CAT, path.Join(dir, file)) }) - }) - }) + kit.If(aaa.Right(m, dir, file), func() { m.Cmdy(nfs.CAT, path.Join(dir, file)) }) } func _inner_show(m *ice.Message, ext, file, dir string) { kit.If(aaa.Right(m, dir, file), func() { m.Cmdy(mdb.RENDER, ext, file, dir) }) @@ -66,13 +57,6 @@ func _inner_line(m *ice.Message, file, text string) (string, int) { return "", 0 } -const ( - SPLIT = lex.SPLIT - SPACE = lex.SPACE - OPERATOR = lex.OPERATOR - PREFIX = lex.PREFIX - SUFFIX = lex.SUFFIX -) const ( INCLUDE = "include" COMMENT = "comment" @@ -90,8 +74,7 @@ const INNER = "inner" func init() { Index.MergeCommands(ice.Commands{ - INNER: {Name: "inner path=src/ file=main.go line=1 auto", Help: "源代码", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{ - mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(FAVOR, mdb.INPUTS, arg) }}, + INNER: {Name: "inner path=src/ file=main.go line=1 auto", Help: "源代码", Role: aaa.VOID, Actions: ice.Actions{ mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) { if m.Cmdy(mdb.PLUGIN, arg); m.Result() == "" { m.Cmdy(mdb.PLUGIN, m.Option(lex.PARSE, strings.ToLower(kit.Split(path.Base(arg[1]), nfs.PT)[0])), arg[1:]) @@ -104,32 +87,22 @@ func init() { NAVIGATE: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(NAVIGATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)) }}, - }), Hand: func(m *ice.Message, arg ...string) { - if kit.HasPrefix(arg[0], nfs.VOLCANOS, nfs.REQUIRE, nfs.P, ice.HTTP) { - if !kit.HasPrefix(arg[0], ice.HTTP) { - ls := nfs.SplitPath(m, arg[0]) - m.Options(nfs.PATH, ls[0], nfs.FILE, ls[1]) - } + REPOS: {Hand: func(m *ice.Message, arg ...string) { + m.Cmdy(REPOS, ice.OptionFields(nfs.PATH)).Sort(nfs.PATH) + }}, + }, Hand: func(m *ice.Message, arg ...string) { + if kit.HasPrefix(arg[0], nfs.P) { + ls := nfs.SplitPath(m, arg[0]) m.Echo(m.Cmdx(web.SPIDE, ice.OPS, web.SPIDE_RAW, http.MethodGet, arg[0])) - m.Options("mode", "simple", lex.PARSE, kit.Ext(kit.ParseURL(arg[0]).Path)) + m.Options(nfs.PATH, ls[0], nfs.FILE, ls[1], "mode", "simple", lex.PARSE, kit.Ext(kit.ParseURL(arg[0]).Path)) ctx.DisplayLocal(m, "") - } else if arg[0] = strings.Split(arg[0], mdb.FS)[0]; !strings.HasSuffix(arg[0], nfs.PS) && len(arg) == 1 { - arg[1] = kit.Slice(strings.Split(arg[0], nfs.PS), -1)[0] - arg[0] = strings.TrimSuffix(arg[0], arg[1]) - m.ProcessRewrite(nfs.PATH, arg[0], nfs.FILE, arg[1]) } else if len(arg) < 2 { nfs.Dir(m, nfs.PATH) - } else if strings.Contains(arg[1], nfs.DF) { - ls := strings.Split(arg[1], nfs.DF) - m.ProcessRewrite(nfs.LINE, ls[0], nfs.FILE, ls[1]) } else { - arg[1] = strings.Split(arg[1], mdb.FS)[0] _inner_list(m, kit.Ext(arg[1]), arg[1], arg[0]) - m.Options(nfs.PATH, arg[0], nfs.FILE, arg[1], nfs.LINE, kit.Select("", arg, 2)) - if ctx.DisplayLocal(m, ""); !strings.HasPrefix(arg[0], ice.USR_INSTALL) { - m.Option(REPOS, kit.Join(m.Cmd(REPOS, ice.OptionFields(nfs.PATH)).Sort(nfs.PATH).Appendv(nfs.PATH))) - } m.StatusTime(mdb.TIME, ice.Info.Make.Time, nfs.FILE, arg[1], nfs.LINE, kit.Select("1", arg, 2)) + m.Options(nfs.PATH, arg[0], nfs.FILE, arg[1], nfs.LINE, kit.Select("1", arg, 2)) + ctx.DisplayLocal(m, "") } }}, }) @@ -143,9 +116,7 @@ func PlugAction(arg ...ice.Any) ice.Actions { cmd.List = ice.SplitCmd(cmd.Name, cmd.Actions) } } - kit.For([]string{mdb.PLUGIN, mdb.RENDER, mdb.ENGINE}, func(cmd string) { - m.Cmd(cmd, mdb.CREATE, m.CommandKey(), m.ShortKey()) - }) + kit.For([]string{mdb.PLUGIN, mdb.RENDER, mdb.ENGINE}, func(cmd string) { m.Cmd(cmd, mdb.CREATE, m.CommandKey(), m.ShortKey()) }) LoadPlug(m, m.CommandKey()) }}, mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) { m.Echo(mdb.Config(m, PLUG)) }}, @@ -164,24 +135,7 @@ func LoadPlug(m *ice.Message, lang ...string) { for _, lang := range lang { m.Conf(nfs.CAT, kit.Keym(nfs.SOURCE, kit.Ext(lang)), ice.TRUE) mdb.Confm(m, lang, kit.Keym(PLUG, PREPARE), func(k string, v ice.Any) { - kit.For(kit.Simple(v), func(v string) { m.Conf(lang, kit.Keym(PLUG, KEYWORD, v), k) }) + kit.For(kit.Simple(v), func(v string) { m.Conf(lang, kit.Keym(PLUG, "keyword", v), k) }) }) } } -func TagsList(m *ice.Message, cmds ...string) { - for _, l := range strings.Split(m.Cmdx(cli.SYSTEM, kit.Default(cmds, CTAGS, "--excmd=number", "--sort=no", "-f", "-", path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))), lex.NL) { - if strings.HasPrefix(l, "!_") { - continue - } - ls := strings.Split(l, lex.TB) - if len(ls) < 3 { - continue - } - switch ls[3] { - case "w", "m": - continue - } - m.PushRecord(kit.Dict(mdb.TYPE, ls[3], mdb.NAME, ls[0], nfs.LINE, strings.TrimSuffix(ls[2], ";\""))) - } - m.Sort(nfs.LINE) -} diff --git a/core/code/version.go b/core/code/version.go index cdfc4c4c..a8d9c2a6 100644 --- a/core/code/version.go +++ b/core/code/version.go @@ -31,8 +31,7 @@ func init() { repos := map[string]string{} m.Cmds(web.CODE_GIT_REPOS).Table(func(value ice.Maps) { repos[strings.Split(value[web.ORIGIN], "://")[1]] = value[nfs.VERSION] }) m.Cmd(web.CODE_MOD, mdb.RENDER, MOD, ice.GO_MOD, nfs.PWD).Table(func(value ice.Maps) { repos[value[REQUIRE]] = value[VERSION] }) - m.Debug("what %v", kit.Formats(repos)) - res := m.Cmdx(nfs.CAT, path.Join(nfs.USR_LOCAL_WORK, m.Option(SPACE), ice.GO_MOD), func(ls []string, text string) string { + res := m.Cmdx(nfs.CAT, path.Join(nfs.USR_LOCAL_WORK, m.Option(web.SPACE), ice.GO_MOD), func(ls []string, text string) string { if len(ls) > 1 { if v, ok := repos[ls[0]]; ok && !strings.Contains(v, "-") { m.Debug("what %v %v => %v", ls[0], ls[1], v) @@ -41,12 +40,12 @@ func init() { } return text }) - m.Cmd(nfs.SAVE, path.Join(nfs.USR_LOCAL_WORK, m.Option(SPACE), ice.GO_MOD), res) - m.Cmd(SPACE, m.Option(SPACE), cli.SYSTEM, GO, MOD, "tidy") + m.Cmd(nfs.SAVE, path.Join(nfs.USR_LOCAL_WORK, m.Option(web.SPACE), ice.GO_MOD), res) + m.Cmd(web.SPACE, m.Option(web.SPACE), cli.SYSTEM, GO, MOD, "tidy") }}, TAG: {Name: "tag version", Hand: func(m *ice.Message, arg ...string) { - m.Cmd(SPACE, m.Option(SPACE), cli.SYSTEM, GIT, TAG, m.Option(VERSION)) - m.Cmd(SPACE, m.Option(SPACE), VIMER, COMPILE) + m.Cmd(web.SPACE, m.Option(web.SPACE), cli.SYSTEM, GIT, TAG, m.Option(VERSION)) + m.Cmd(web.SPACE, m.Option(web.SPACE), VIMER, COMPILE) m.Sleep3s() }}, XTERM: {Hand: func(m *ice.Message, arg ...string) { diff --git a/core/code/vimer.go b/core/code/vimer.go index 5323ed44..87e6148d 100644 --- a/core/code/vimer.go +++ b/core/code/vimer.go @@ -1,7 +1,6 @@ package code import ( - "os" "path" "strings" @@ -14,10 +13,7 @@ import ( "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/ssh" - "shylinux.com/x/icebergs/base/tcp" "shylinux.com/x/icebergs/base/web" - "shylinux.com/x/icebergs/base/web/html" - "shylinux.com/x/icebergs/core/chat" kit "shylinux.com/x/toolkits" ) @@ -41,6 +37,8 @@ func _vimer_make(m *ice.Message, dir string, msg *ice.Message) { } const ( + MAIN_GO = "main.go" + MAIN_JS = "main.js" DEMO_C = "demo.c" DEMO_SH = "demo.sh" DEMO_SHY = "demo.shy" @@ -49,43 +47,14 @@ const ( DEMO_JS = "demo.js" DEMO_CSS = "demo.css" DEMO_HTML = "demo.html" - MAIN_GO = "main.go" - MAIN_JS = "main.js" VIMER_SAVE = "vimer.save" ) const VIMER = "vimer" func init() { - web.Index.MergeCommands(ice.Commands{ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { aaa.White(m, nfs.REQUIRE) }}, - nfs.REQUIRE_SRC: {Hand: func(m *ice.Message, arg ...string) { web.ShareLocalFile(m, ice.SRC, path.Join(arg...)) }}, - nfs.REQUIRE_USR: {Hand: func(m *ice.Message, arg ...string) { web.ShareLocalFile(m, ice.USR, path.Join(arg...)) }}, - nfs.REQUIRE_MODULES: {Hand: func(m *ice.Message, arg ...string) { - p := path.Join(nfs.USR_MODULES, path.Join(arg...)) - kit.If(!nfs.Exists(m, p), func() { - if kit.IsIn(m.Option(ice.MSG_USERROLE), aaa.TECH, aaa.ROOT) { - kit.If(!nfs.Exists(m, nfs.USR_PACKAGE), func() { - m.Cmd(nfs.SAVE, nfs.USR_PACKAGE, kit.Formats(kit.Dict(mdb.NAME, "usr", nfs.VERSION, "0.0.1"))) - }) - m.Cmd(cli.SYSTEM, "npm", INSTALL, arg[0], kit.Dict(cli.CMD_DIR, ice.USR)) - } - }) - m.RenderDownload(p) - }}, - }) Index.MergeCommands(ice.Commands{ - VIMER: {Name: "vimer path=src/ file=main.go line=1 list", Help: "编辑器", Icon: "vimer.png", Role: aaa.VOID, Meta: kit.Dict( - ctx.STYLE, INNER, ice.CTX_TRANS, kit.Dict(html.INPUT, kit.Dict( - cli.MAIN, "程序", "top", "顶域", - )), - ), Actions: ice.MergeActions(ice.Actions{ - mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { - if mdb.IsSearchPreview(m, arg) { - kit.For([]string{ice.SRC_MAIN_SHY, ice.SRC_MAIN_SH, ice.SRC_MAIN_GO, ice.SRC_MAIN_JS}, func(p string) { - m.PushSearch(mdb.TYPE, nfs.FILE, mdb.NAME, path.Base(p), mdb.TEXT, p) - }) - } - }}, + VIMER: {Name: "vimer path=src/ file=main.go line=1 list", Help: "编辑器", Icon: "vimer.png", Role: aaa.VOID, Actions: ice.MergeActions(ice.Actions{ mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { switch m.Option(ctx.ACTION) { case nfs.MODULE: @@ -100,8 +69,6 @@ func init() { m.Push(nfs.PATH, path.Join(path.Dir(m.Option(nfs.FILE)), "trans.json")) m.Option(nfs.DIR_REG, kit.ExtReg(SH, SHY, PY, JS, CSS, HTML)) nfs.DirDeepAll(m, nfs.SRC, nfs.PWD, nil, nfs.PATH) - case web.DREAM, XTERM, AUTOGEN: - m.Cmdy(m.Option(ctx.ACTION), mdb.INPUTS, arg) default: switch arg[0] { case ice.CMD: @@ -128,8 +95,6 @@ func init() { switch value[mdb.TYPE] { case nfs.FILE: push("", value[mdb.TEXT]) - case tcp.GATEWAY: - push(web.SPACE, value[mdb.TEXT]) case web.LINK: push(web.SPACE, value[mdb.TEXT]) case web.WORKER: @@ -140,69 +105,31 @@ func init() { push(ctx.INDEX, value[mdb.TEXT]) case ssh.SHELL: push(ssh.SHELL, value[mdb.TEXT]) - case cli.OPENS: - push(cli.OPENS, value[mdb.TEXT]) } }) for _, p := range kit.Split(kit.Select(m.Option(nfs.PATH), m.Option("paths"))) { nfs.DirDeepAll(m.Spawn(), nfs.PWD, p, func(value ice.Maps) { push("", value[nfs.PATH]) }, nfs.PATH) } m.Cmd(ctx.COMMAND).Table(func(value ice.Maps) { push(ctx.INDEX, value[ctx.INDEX]) }) - default: - m.Cmdy(INNER, mdb.INPUTS, arg) } } }}, - nfs.SAVE: {Hand: func(m *ice.Message, arg ...string) { - kit.If(m.Option(nfs.CONTENT) == "", func() { m.Option(nfs.CONTENT, m.Cmdx("", TEMPLATE)) }) - m.Cmd(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE))) - gdb.Event(m, VIMER_SAVE) - }}, - nfs.TRASH: {Hand: func(m *ice.Message, arg ...string) { nfs.Trash(m, arg[0]) }}, - nfs.MODULE: {Name: "module name*=hi help type*=Hash,Zone,Data,Code main*=main.go zone top", Help: "模块", Hand: func(m *ice.Message, arg ...string) { + nfs.MODULE: {Name: "module name*=hi help type*=Hash,Zone,Code main*=main.go zone top", Help: "模块", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(AUTOGEN, nfs.MODULE, arg) }}, nfs.SCRIPT: {Name: "script file*", Help: "脚本", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Cmdx("", TEMPLATE)) }}, - cli.OPENS: {Hand: func(m *ice.Message, arg ...string) { cli.Opens(m, arg...) }}, - web.UPLOAD: {Hand: func(m *ice.Message, arg ...string) { - }}, mdb.RENAME: {Name: "rename to*", Hand: func(m *ice.Message, arg ...string) { m.Cmd(nfs.MOVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.TO)), path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE))) }}, - cli.MAKE: {Hand: func(m *ice.Message, arg ...string) { - defer web.ToastProcess(m)() - web.PushStream(m) - m.Cmd(cli.SYSTEM, "echo") - m.Cmd(cli.SYSTEM, "date") - m.Cmd(cli.SYSTEM, cli.MAKE, m.Option(nfs.TARGET), kit.Dict(cli.CMD_DIR, m.Option(nfs.PATH))) + nfs.TRASH: {Hand: func(m *ice.Message, arg ...string) { + nfs.Trash(m, arg[0]) }}, - ice.APP: {Help: "本机", Hand: func(m *ice.Message, arg ...string) { - cli.OpenCmds(m, "cd "+kit.Path(""), "vim "+path.Join(arg[0], arg[1])+" +"+arg[2]).ProcessHold() - }}, - COMPILE: {Help: "编译", Hand: func(m *ice.Message, arg ...string) { - if m.Option(nfs.PATH) != "" && nfs.ExistsFile(m, path.Join(m.Option(nfs.PATH), ice.MAKEFILE)) { - web.PushStream(m).Cmdy(cli.SYSTEM, cli.MAKE, kit.Dict(cli.CMD_DIR, m.Option(nfs.PATH))) - return - } else if m.Option(nfs.PATH) == ice.USR_VOLCANOS && strings.HasPrefix(m.Option(nfs.FILE), "publish/client/mp/") { - web.PushStream(m).Cmdy(cli.SYSTEM, cli.MAKE, kit.Dict(cli.CMD_DIR, path.Join(m.Option(nfs.PATH), "publish/client/mp/"))) - return - } - const app, _app = "usr/publish/Contexts.app", "Contents/MacOS/Contexts" - isWebview := func() bool { return strings.HasSuffix(os.Args[0], _app) } - cmds := []string{COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN} - if isWebview() { - m.Option(cli.ENV, "CGO_ENABLED", "1", cli.HOME, kit.Env(cli.HOME), cli.PATH, kit.Path(ice.USR_LOCAL_GO_BIN)+nfs.DF+kit.Env(cli.PATH)) - cmds = []string{COMPILE, ice.SRC_WEBVIEW_GO, path.Join(app, _app)} - } - if msg := m.Cmd(cmds); cli.IsSuccess(msg) { - if m.GoSleep30ms(func() { m.Cmd(UPGRADE, cli.RESTART) }); isWebview() { - m.Cmd(cli.DAEMON, ice.BIN_ICE_BIN, cli.FOREVER, cli.DELAY, cli.TIME_300ms, cli.SYSTEM, cli.OPEN, app) - } - } else { - _vimer_make(m, nfs.PWD, msg) - } + nfs.SAVE: {Hand: func(m *ice.Message, arg ...string) { + kit.If(m.Option(nfs.CONTENT) == "", func() { m.Option(nfs.CONTENT, m.Cmdx("", TEMPLATE)) }) + m.Cmd(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE))) + gdb.Event(m, VIMER_SAVE) }}, TEMPLATE: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TEMPLATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)) @@ -211,38 +138,32 @@ func init() { return m.Cmdy(COMPLETE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)) }}, - chat.FAVOR_INPUTS: {Hand: func(m *ice.Message, arg ...string) { - switch arg[0] { - case mdb.TYPE: - m.Push(arg[0], nfs.FILE) - case mdb.TEXT: - kit.If(m.Option(mdb.TYPE) == nfs.FILE, func() { m.Push(arg[0], ice.SRC_MAIN_SHY, ice.SRC_MAIN_GO, ice.SRC_MAIN_JS) }) - } - }}, - chat.FAVOR_TABLES: {Hand: func(m *ice.Message, arg ...string) { - kit.If(m.Option(mdb.TYPE) == nfs.FILE, func() { m.PushButton(kit.Dict(m.CommandKey(), "源码")) }) - }}, - chat.FAVOR_ACTION: {Hand: func(m *ice.Message, arg ...string) { - kit.If(m.Option(mdb.TYPE) == nfs.FILE, func() { ctx.ProcessField(m, m.ShortKey(), nfs.SplitPath(m, m.Option(mdb.TEXT))) }) - }}, - web.DREAM_TABLES: {Hand: func(m *ice.Message, _ ...string) { - kit.If(m.IsDebug(), func() { m.PushButton(kit.Dict(m.CommandKey(), "编程")) }) - }}, - }, chat.FavorAction(), web.DreamTablesAction("编程"), ctx.ConfAction(ctx.TOOLS, "xterm,compile,runtime", web.ONLINE, ice.TRUE)), Hand: func(m *ice.Message, arg ...string) { - if m.Cmdy(INNER, arg); arg[0] != ctx.ACTION { - if len(arg) == 1 { - m.PushAction(nfs.SCRIPT, mdb.RENAME, web.UPLOAD, nfs.TRASH) - } - if web.IsLocalHost(m) { - m.Action(nfs.SAVE, COMPILE, mdb.SHOW, ice.APP) - } else if m.IsMobileUA() { - m.Action(nfs.SAVE, COMPILE) + COMPILE: {Hand: func(m *ice.Message, arg ...string) { + if msg := m.Cmd(COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN); cli.IsSuccess(msg) { + m.GoSleep30ms(func() { m.Cmd(UPGRADE, cli.RESTART) }) } else { - m.Action(nfs.SAVE, COMPILE, mdb.SHOW) + _vimer_make(m, nfs.PWD, msg) } - ctx.DisplayLocal(m, "") - ctx.Toolkit(m) + }}, + ice.APP: {Hand: func(m *ice.Message, arg ...string) { + cli.OpenCmds(m, "cd "+kit.Path(""), "vim "+path.Join(arg[0], arg[1])+" +"+arg[2]).ProcessHold() + }}, + }, web.DreamTablesAction("编程"), ctx.ConfAction(ctx.TOOLS, "xterm,compile,runtime", web.ONLINE, ice.TRUE)), Hand: func(m *ice.Message, arg ...string) { + if m.Cmdy(INNER, arg); arg[0] == ctx.ACTION { + return + } else if len(arg) == 1 { + m.PushAction(mdb.CREATE, mdb.RENAME, nfs.TRASH) + return } + if m.IsMobileUA() { + m.Action(nfs.SAVE, COMPILE) + } else if web.IsLocalHost(m) { + m.Action(nfs.SAVE, COMPILE, mdb.SHOW, ice.APP) + } else { + m.Action(nfs.SAVE, COMPILE, mdb.SHOW) + } + ctx.DisplayLocal(m, "") + ctx.Toolkit(m) }}, }) }