diff --git a/core/code/inner.go b/core/code/inner.go index 1cda2149..978896fc 100644 --- a/core/code/inner.go +++ b/core/code/inner.go @@ -65,106 +65,104 @@ const ( const INNER = "inner" func init() { - Index.Merge(&ice.Context{ - Commands: map[string]*ice.Command{ - INNER: {Name: "inner path=src/ file=main.go line=1 auto", Help: "源代码", Meta: kit.Dict( - ice.Display("/plugin/local/code/inner.js", "editor"), - ), Action: map[string]*ice.Action{ - mdb.PLUGIN: {Name: "plugin", Help: "插件", Hand: func(m *ice.Message, arg ...string) { - if m.Cmdy(mdb.PLUGIN, arg); m.Result() == "" { - m.Echo(kit.Select("{}", m.Conf(INNER, kit.Keym(PLUG, arg[0])))) - } - }}, - mdb.ENGINE: {Name: "engine", Help: "运行", Hand: func(m *ice.Message, arg ...string) { - _inner_show(m, arg[0], arg[1], arg[2]) - }}, - mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { - if strings.Contains(arg[1], ";") { - ls := strings.Split(arg[1], ";") - arg[0] = ls[0] - arg[1] = ls[1] - } - m.Option(cli.CMD_DIR, arg[2]) - m.Option(nfs.DIR_ROOT, arg[2]) - m.Cmdy(mdb.SEARCH, arg[:2], "cmd,file,line,text") - }}, - mdb.INPUTS: {Name: "favor inputs", Help: "补全"}, - ctx.COMMAND: {Name: "command", Help: "命令"}, - FAVOR: {Name: "favor", Help: "收藏"}, - }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if len(arg) < 2 { - nfs.Dir(m, kit.MDB_PATH) - return + Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ + INNER: {Name: "inner path=src/ file=main.go line=1 auto", Help: "源代码", Meta: kit.Dict( + ice.Display("/plugin/local/code/inner.js", "editor"), + ), Action: map[string]*ice.Action{ + mdb.PLUGIN: {Name: "plugin", Help: "插件", Hand: func(m *ice.Message, arg ...string) { + if m.Cmdy(mdb.PLUGIN, arg); m.Result() == "" { + m.Echo(kit.Select("{}", m.Conf(INNER, kit.Keym(PLUG, arg[0])))) } - _inner_list(m, kit.Ext(arg[1]), arg[1], arg[0]) }}, - }, - Configs: map[string]*ice.Config{ - INNER: {Name: "inner", Help: "源代码", Value: kit.Data( - cli.SOURCE, kit.Dict( - "s", ice.TRUE, "S", ice.TRUE, - "shy", ice.TRUE, "py", ice.TRUE, - "csv", ice.TRUE, "json", ice.TRUE, - "css", ice.TRUE, "html", ice.TRUE, - "txt", ice.TRUE, "url", ice.TRUE, - "log", ice.TRUE, "err", ice.TRUE, + mdb.ENGINE: {Name: "engine", Help: "运行", Hand: func(m *ice.Message, arg ...string) { + _inner_show(m, arg[0], arg[1], arg[2]) + }}, + mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { + if strings.Contains(arg[1], ";") { + ls := strings.Split(arg[1], ";") + arg[0] = ls[0] + arg[1] = ls[1] + } + m.Option(cli.CMD_DIR, arg[2]) + m.Option(nfs.DIR_ROOT, arg[2]) + m.Cmdy(mdb.SEARCH, arg[:2], "cmd,file,line,text") + }}, + mdb.INPUTS: {Name: "favor inputs", Help: "补全"}, + ctx.COMMAND: {Name: "command", Help: "命令"}, + FAVOR: {Name: "favor", Help: "收藏"}, + }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + if len(arg) < 2 { + nfs.Dir(m, kit.MDB_PATH) + return + } + _inner_list(m, kit.Ext(arg[1]), arg[1], arg[0]) + }}, + }, Configs: map[string]*ice.Config{ + INNER: {Name: "inner", Help: "源代码", Value: kit.Data( + cli.SOURCE, kit.Dict( + "s", ice.TRUE, "S", ice.TRUE, + "shy", ice.TRUE, "py", ice.TRUE, + "csv", ice.TRUE, "json", ice.TRUE, + "css", ice.TRUE, "html", ice.TRUE, + "txt", ice.TRUE, "url", ice.TRUE, + "log", ice.TRUE, "err", ice.TRUE, - "md", ice.TRUE, "license", ice.TRUE, "makefile", ice.TRUE, "sql", ice.TRUE, - "ini", ice.TRUE, "conf", ice.TRUE, "toml", ice.TRUE, "yaml", ice.TRUE, "yml", ice.TRUE, + "md", ice.TRUE, "license", ice.TRUE, "makefile", ice.TRUE, "sql", ice.TRUE, + "ini", ice.TRUE, "conf", ice.TRUE, "toml", ice.TRUE, "yaml", ice.TRUE, "yml", ice.TRUE, + ), + PLUG, kit.Dict( + "s", kit.Dict( + PREFIX, kit.Dict("//", COMMENT), + KEYWORD, kit.Dict( + "TEXT", KEYWORD, + "RET", KEYWORD, + ), ), - PLUG, kit.Dict( - "s", kit.Dict( - PREFIX, kit.Dict("//", COMMENT), - KEYWORD, kit.Dict( - "TEXT", KEYWORD, - "RET", KEYWORD, - ), + "S", kit.Dict( + PREFIX, kit.Dict("//", COMMENT), + KEYWORD, kit.Dict(), + ), + "py", kit.Dict( + PREFIX, kit.Dict("#", COMMENT), + KEYWORD, kit.Dict("print", KEYWORD), + ), + "html", kit.Dict( + SPLIT, kit.Dict( + "space", " ", + "operator", "<>", ), - "S", kit.Dict( - PREFIX, kit.Dict("//", COMMENT), - KEYWORD, kit.Dict(), - ), - "py", kit.Dict( - PREFIX, kit.Dict("#", COMMENT), - KEYWORD, kit.Dict("print", KEYWORD), - ), - "html", kit.Dict( - SPLIT, kit.Dict( - "space", " ", - "operator", "<>", - ), - KEYWORD, kit.Dict( - "head", KEYWORD, - "body", KEYWORD, - ), - ), - "css", kit.Dict( - SUFFIX, kit.Dict("{", COMMENT), - ), - "yaml", kit.Dict( - PREFIX, kit.Dict("#", COMMENT), - ), - "yml", kit.Dict( - PREFIX, kit.Dict("#", COMMENT), + KEYWORD, kit.Dict( + "head", KEYWORD, + "body", KEYWORD, ), + ), + "css", kit.Dict( + SUFFIX, kit.Dict("{", COMMENT), + ), + "yaml", kit.Dict( + PREFIX, kit.Dict("#", COMMENT), + ), + "yml", kit.Dict( + PREFIX, kit.Dict("#", COMMENT), + ), - "md", kit.Dict(), - "makefile", kit.Dict( - PREFIX, kit.Dict("#", COMMENT), - SUFFIX, kit.Dict(":", COMMENT), - KEYWORD, kit.Dict( - "ifeq", KEYWORD, - "ifneq", KEYWORD, - "else", KEYWORD, - "endif", KEYWORD, - ), + "md", kit.Dict(), + "makefile", kit.Dict( + PREFIX, kit.Dict("#", COMMENT), + SUFFIX, kit.Dict(":", COMMENT), + KEYWORD, kit.Dict( + "ifeq", KEYWORD, + "ifneq", KEYWORD, + "else", KEYWORD, + "endif", KEYWORD, ), ), - SHOW, kit.Dict( - "py", []string{"python"}, - "js", []string{"node"}, - ), - )}, - }, + ), + SHOW, kit.Dict( + "py", []string{"python"}, + "js", []string{"node"}, + ), + )}, + }, }) } diff --git a/core/wiki/spark.go b/core/wiki/spark.go index 17f2c648..f01e6b07 100644 --- a/core/wiki/spark.go +++ b/core/wiki/spark.go @@ -16,13 +16,19 @@ func _spark_show(m *ice.Message, name, text string, arg ...string) { prompt := kit.Select(name+"> ", m.Conf(SPARK, kit.Keym(ssh.PROMPT, name))) m.Echo(`
`, name) + defer m.Echo("
") + + if name == "inner" { + m.Echo(text) + return + } + for _, l := range strings.Split(text, "\n") { m.Echo("
") m.Echo("") m.Echo("").Echo(l).Echo("") m.Echo("
") } - m.Echo("") } const ( diff --git a/render.go b/render.go index 231547fa..93d953ac 100644 --- a/render.go +++ b/render.go @@ -2,6 +2,7 @@ package ice import ( "path" + "reflect" "strings" kit "shylinux.com/x/toolkits" @@ -75,6 +76,12 @@ func (m *Message) PushVideos(key, src string, arg ...string) { // key src [size] m.Push(key, Render(m, RENDER_VIDEOS, src, arg)) } func (m *Message) PushAction(list ...interface{}) { + for i, item := range list { + if t := reflect.TypeOf(item); t.Kind() == reflect.Func { + list[i] = kit.FuncName(item) + } + } + m.Table(func(index int, value map[string]string, head []string) { m.PushButton(kit.Simple(list...)...) })