forked from x/icebergs
opt xterm
This commit is contained in:
parent
276c97a050
commit
1b21938136
@ -250,16 +250,6 @@ func init() {
|
|||||||
}
|
}
|
||||||
m.StatusTimeCount()
|
m.StatusTimeCount()
|
||||||
}},
|
}},
|
||||||
"stats": {Name: "stats", Help: "环境变量", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
var ms runtime.MemStats
|
|
||||||
runtime.ReadMemStats(&ms)
|
|
||||||
m.Echo("what %#v", ms)
|
|
||||||
m.Echo("what %#v", kit.FmtSize(int64(ms.Alloc)))
|
|
||||||
m.Echo("what %#v", kit.FmtSize(int64(ms.TotalAlloc)))
|
|
||||||
m.Echo("what %#v", kit.FmtSize(int64(ms.Sys)))
|
|
||||||
m.Echo("what %#v", kit.FmtSize(int64(ms.HeapAlloc)))
|
|
||||||
m.Echo("what %#v", kit.FmtSize(int64(ms.HeapSys)))
|
|
||||||
}},
|
|
||||||
MAKE_DOMAIN: {Name: "make.domain", Help: "编译主机", Hand: func(m *ice.Message, arg ...string) {
|
MAKE_DOMAIN: {Name: "make.domain", Help: "编译主机", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if os.Getenv(CTX_DEV) == "" || os.Getenv(CTX_POD) == "" {
|
if os.Getenv(CTX_DEV) == "" || os.Getenv(CTX_POD) == "" {
|
||||||
m.Echo(m.Conf(RUNTIME, MAKE_DOMAIN))
|
m.Echo(m.Conf(RUNTIME, MAKE_DOMAIN))
|
||||||
|
@ -104,7 +104,7 @@ func _system_exec(m *ice.Message, cmd *exec.Cmd) {
|
|||||||
defer func() {
|
defer func() {
|
||||||
m.Push(CMD_OUT, out.String())
|
m.Push(CMD_OUT, out.String())
|
||||||
m.Push(CMD_ERR, err.String())
|
m.Push(CMD_ERR, err.String())
|
||||||
if m.Echo(kit.Select(out.String(), err.String())); IsSuccess(m) && out.String() == "" {
|
if m.Echo(strings.TrimRight(kit.Select(out.String(), err.String()), ice.NL)); IsSuccess(m) && out.String() == "" {
|
||||||
m.SetAppend()
|
m.SetAppend()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -155,20 +155,6 @@ func CmdAction(args ...ice.Any) ice.Actions {
|
|||||||
}},
|
}},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func ProcessFloat(m *ice.Message, arg ...string) {
|
|
||||||
m.Option(ice.MSG_PROCESS, "_float")
|
|
||||||
m.Option(ice.PROCESS_ARG, arg)
|
|
||||||
m.Cmdy(COMMAND, arg[0])
|
|
||||||
}
|
|
||||||
func ProcessField(m *ice.Message, cmd string, args []string, arg ...string) {
|
|
||||||
if len(arg) > 0 && arg[0] == ice.RUN {
|
|
||||||
m.Cmdy(cmd, arg[1:])
|
|
||||||
} else {
|
|
||||||
if m.Cmdy(COMMAND, cmd).ProcessField(m.ActionKey(), ice.RUN); len(args) > 0 {
|
|
||||||
m.Push(ARGS, kit.Format(args))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func PodCmd(m *ice.Message, arg ...ice.Any) bool {
|
func PodCmd(m *ice.Message, arg ...ice.Any) bool {
|
||||||
if pod := m.Option(ice.POD); pod != "" {
|
if pod := m.Option(ice.POD); pod != "" {
|
||||||
if m.Option(ice.POD, ""); m.Option(ice.MSG_UPLOAD) != "" {
|
if m.Option(ice.POD, ""); m.Option(ice.MSG_UPLOAD) != "" {
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -58,3 +59,6 @@ func DisplayBase(m *ice.Message, file string, arg ...ice.Any) *ice.Message {
|
|||||||
m.Option(ice.MSG_DISPLAY, kit.MergeURL(ice.DisplayBase(file)[ice.DISPLAY], arg...))
|
m.Option(ice.MSG_DISPLAY, kit.MergeURL(ice.DisplayBase(file)[ice.DISPLAY], arg...))
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
func Toolkit(m *ice.Message, arg ...string) {
|
||||||
|
m.Option(ice.MSG_TOOLKIT, kit.Select(m.Config(mdb.TOOLS), kit.Fields(arg)))
|
||||||
|
}
|
||||||
|
64
base/ctx/process.go
Normal file
64
base/ctx/process.go
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
package ctx
|
||||||
|
|
||||||
|
import (
|
||||||
|
ice "shylinux.com/x/icebergs"
|
||||||
|
"shylinux.com/x/icebergs/base/aaa"
|
||||||
|
kit "shylinux.com/x/toolkits"
|
||||||
|
)
|
||||||
|
|
||||||
|
const PROCESS = "process"
|
||||||
|
|
||||||
|
var _process = map[string]ice.Any{}
|
||||||
|
|
||||||
|
func AddProcess(key string, val ice.Any) { _process[key] = val }
|
||||||
|
|
||||||
|
func Process(m *ice.Message, key string, args []string, arg ...string) {
|
||||||
|
switch cb := _process[key].(type) {
|
||||||
|
case func(*ice.Message, []string, ...string):
|
||||||
|
cb(m, args, arg...)
|
||||||
|
case string:
|
||||||
|
if len(arg) == 0 || arg[0] != PROCESS {
|
||||||
|
m.Cmdy(cb, PROCESS, args)
|
||||||
|
m.Optionv(ice.FIELD_PREFIX, kit.Simple(m.ActionKey(), m.Optionv(ice.FIELD_PREFIX)))
|
||||||
|
} else {
|
||||||
|
m.Cmdy(cb, arg)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
ProcessField(m, key, args, arg...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func ProcessField(m *ice.Message, cmd string, args []string, arg ...string) {
|
||||||
|
cmd = kit.Select(m.PrefixKey(), cmd)
|
||||||
|
if len(arg) == 0 || arg[0] != ice.RUN {
|
||||||
|
if m.Cmdy(COMMAND, cmd).ProcessField(m.ActionKey(), ice.RUN); len(args) > 0 {
|
||||||
|
m.Push(ARGS, kit.Format(args))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if aaa.Right(m, cmd, arg[1:]) {
|
||||||
|
m.Cmdy(cmd, arg[1:])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func ProcessFloat(m *ice.Message, arg ...string) {
|
||||||
|
m.Option(ice.MSG_PROCESS, ice.PROCESS_FLOAT)
|
||||||
|
m.Option(ice.PROCESS_ARG, arg)
|
||||||
|
m.Cmdy(COMMAND, arg[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
func ProcessHold(m *ice.Message, text ...ice.Any) {
|
||||||
|
m.Process(ice.PROCESS_HOLD, text...)
|
||||||
|
}
|
||||||
|
func ProcessRefresh(m *ice.Message) {
|
||||||
|
m.ProcessRefresh("300ms")
|
||||||
|
}
|
||||||
|
|
||||||
|
func ProcessAction() ice.Actions {
|
||||||
|
return ice.Actions{
|
||||||
|
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
AddProcess(m.CommandKey(), m.PrefixKey())
|
||||||
|
}},
|
||||||
|
PROCESS: {Name: "process", Help: "响应", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
ProcessField(m, m.PrefixKey(), arg, arg...)
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
}
|
@ -256,7 +256,7 @@ func HashSelect(m *ice.Message, arg ...string) *ice.Message {
|
|||||||
return m.StatusTime()
|
return m.StatusTime()
|
||||||
}
|
}
|
||||||
func HashPrunes(m *ice.Message, cb func(Maps) bool) *ice.Message {
|
func HashPrunes(m *ice.Message, cb func(Maps) bool) *ice.Message {
|
||||||
expire := kit.Time(kit.Select(m.Time("-72h"), m.Option(EXPIRE)))
|
expire := kit.Time(kit.Select(m.Time("-72h"), m.Option("before")))
|
||||||
m.Cmd("", func(value Maps) {
|
m.Cmd("", func(value Maps) {
|
||||||
if kit.Time(value[TIME]) > expire {
|
if kit.Time(value[TIME]) > expire {
|
||||||
return
|
return
|
||||||
|
@ -151,6 +151,8 @@ const (
|
|||||||
PAGE = "page"
|
PAGE = "page"
|
||||||
OFFEND = "offend"
|
OFFEND = "offend"
|
||||||
|
|
||||||
|
TOOLS = "tools"
|
||||||
|
|
||||||
JSON = "json"
|
JSON = "json"
|
||||||
CSV = "csv"
|
CSV = "csv"
|
||||||
)
|
)
|
||||||
|
@ -119,6 +119,7 @@ func PushPodCmd(m *ice.Message, cmd string, arg ...string) {
|
|||||||
|
|
||||||
type Message interface {
|
type Message interface {
|
||||||
Option(key string, arg ...ice.Any) string
|
Option(key string, arg ...ice.Any) string
|
||||||
|
PrefixKey(arg ...ice.Any) string
|
||||||
}
|
}
|
||||||
|
|
||||||
func OptionAgentIs(m Message, arg ...string) bool {
|
func OptionAgentIs(m Message, arg ...string) bool {
|
||||||
@ -143,11 +144,11 @@ func MergePod(m Message, pod string, arg ...ice.Any) string {
|
|||||||
}
|
}
|
||||||
func MergePodCmd(m Message, pod, cmd string, arg ...ice.Any) string {
|
func MergePodCmd(m Message, pod, cmd string, arg ...ice.Any) string {
|
||||||
p := "/chat"
|
p := "/chat"
|
||||||
if pod != "" {
|
|
||||||
p += "/pod/" + kit.Keys(m.Option(ice.MSG_USERPOD), pod)
|
p += "/pod/" + kit.Keys(m.Option(ice.MSG_USERPOD), pod)
|
||||||
}
|
p = kit.Select(p, "/chat/", p == "/chat/pod/")
|
||||||
if cmd != "" {
|
p += "/cmd/" + kit.Select(m.PrefixKey(), cmd)
|
||||||
p += "/cmd/" + cmd
|
|
||||||
}
|
|
||||||
return kit.MergeURL2(kit.Select(ice.Info.Domain, m.Option(ice.MSG_USERWEB)), p, arg...)
|
return kit.MergeURL2(kit.Select(ice.Info.Domain, m.Option(ice.MSG_USERWEB)), p, arg...)
|
||||||
}
|
}
|
||||||
|
func ProcessWebsite(m *ice.Message, pod, cmd string, arg ...ice.Any) {
|
||||||
|
m.ProcessOpen(MergePodCmd(m, pod, cmd, arg...))
|
||||||
|
}
|
||||||
|
1
conf.go
1
conf.go
@ -190,6 +190,7 @@ const ( // MSG
|
|||||||
|
|
||||||
MSG_PROCESS = "_process"
|
MSG_PROCESS = "_process"
|
||||||
MSG_DISPLAY = "_display"
|
MSG_DISPLAY = "_display"
|
||||||
|
MSG_TOOLKIT = "_toolkit"
|
||||||
|
|
||||||
MSG_USERIP = "user.ip"
|
MSG_USERIP = "user.ip"
|
||||||
MSG_USERUA = "user.ua"
|
MSG_USERUA = "user.ua"
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/ctx"
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
|
"shylinux.com/x/icebergs/base/nfs"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -11,13 +12,20 @@ const FAVOR = "favor"
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
FAVOR: {Name: "favor zone id auto insert test page", Help: "收藏夹", Actions: ice.MergeActions(ice.Actions{
|
FAVOR: {Name: "favor zone id auto insert page", Help: "收藏夹", Actions: ice.MergeActions(ice.Actions{
|
||||||
mdb.INSERT: {Name: "insert zone=数据结构 type=go name=hi text=hello path file line", Help: "添加"},
|
mdb.INSERT: {Name: "insert zone=数据结构 type=go name=hi text=hello path file line", Help: "添加"},
|
||||||
INNER: {Name: "inner", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
|
INNER: {Name: "inner", Help: "源码", Hand: func(m *ice.Message, arg ...string) {
|
||||||
ctx.ProcessCommand(m, INNER, m.OptionSplit("path,file,line"), arg...)
|
ctx.Process(m, m.ActionKey(), m.OptionSplit(nfs.PATH, nfs.FILE, nfs.LINE), arg...)
|
||||||
}},
|
}},
|
||||||
}, mdb.ZoneAction(mdb.SHORT, mdb.ZONE, mdb.FIELD, "time,id,type,name,text,path,file,line")), Hand: func(m *ice.Message, arg ...string) {
|
XTERM: {Name: "xterm", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||||
mdb.ZoneSelectPage(m, arg...).PushAction(kit.Select(mdb.REMOVE, INNER, len(arg) > 0))
|
ctx.Process(m, m.ActionKey(), append(m.OptionSimple(mdb.TYPE, mdb.NAME), ice.INIT, m.Option(mdb.TEXT)), arg...)
|
||||||
|
}},
|
||||||
|
}, mdb.ZoneAction(mdb.FIELD, "time,id,type,name,text,path,file,line")), Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if mdb.ZoneSelectPage(m, arg...); len(arg) > 0 && arg[0] != "" {
|
||||||
|
m.Tables(func(value ice.Maps) {
|
||||||
|
m.PushButton(kit.Select(INNER, XTERM, value[mdb.TEXT] == "" || value[nfs.FILE] == ""))
|
||||||
|
})
|
||||||
|
}
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -237,6 +237,10 @@ func init() {
|
|||||||
m.Cmd(mdb.SEARCH, mdb.CREATE, GODOC, m.Prefix(GO))
|
m.Cmd(mdb.SEARCH, mdb.CREATE, GODOC, m.Prefix(GO))
|
||||||
m.Cmd(mdb.ENGINE, mdb.CREATE, GO, m.Prefix(GO))
|
m.Cmd(mdb.ENGINE, mdb.CREATE, GO, m.Prefix(GO))
|
||||||
|
|
||||||
|
m.Cmd(TEMPLATE, mdb.CREATE, GO, m.Prefix(GO))
|
||||||
|
m.Cmd(COMPLETE, mdb.CREATE, GO, m.Prefix(GO))
|
||||||
|
m.Cmd(NAVIGATE, mdb.CREATE, GO, m.Prefix(GO))
|
||||||
|
|
||||||
LoadPlug(m, GO, MOD, SUM)
|
LoadPlug(m, GO, MOD, SUM)
|
||||||
for _, k := range []string{GO, MOD, SUM, GODOC} {
|
for _, k := range []string{GO, MOD, SUM, GODOC} {
|
||||||
m.Cmd(mdb.RENDER, mdb.CREATE, k, m.Prefix(k))
|
m.Cmd(mdb.RENDER, mdb.CREATE, k, m.Prefix(k))
|
||||||
@ -273,6 +277,57 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) { _go_exec(m, arg...) }},
|
mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) { _go_exec(m, arg...) }},
|
||||||
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { _go_show(m, arg...) }},
|
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { _go_show(m, arg...) }},
|
||||||
|
TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if kit.Ext(m.Option(mdb.FILE)) != m.CommandKey() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}},
|
||||||
|
COMPLETE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if arg[0] == mdb.FOREACH && arg[2] == nfs.SCRIPT {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.Option("text") == "" {
|
||||||
|
m.Push(mdb.TEXT, kit.List("package", "import", "const", "type", "func", "var"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(m.Option("text"), ".") {
|
||||||
|
key := kit.Slice(kit.Split(m.Option("text"), "\t ."), -1)[0]
|
||||||
|
switch key {
|
||||||
|
case "m", "msg":
|
||||||
|
key = "icebergs.Message"
|
||||||
|
case "kit":
|
||||||
|
key = "toolkits"
|
||||||
|
case "ice":
|
||||||
|
key = "icebergs"
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, l := range strings.Split(m.Cmdx("cli.system", "go", "doc", key), ice.NL) {
|
||||||
|
ls := kit.Split(l)
|
||||||
|
if len(ls) < 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
switch ls[0] {
|
||||||
|
case "const", "var", "func":
|
||||||
|
m.Push(mdb.NAME, ls[1])
|
||||||
|
m.Push(mdb.TEXT, l)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
m.Push(mdb.TEXT, "m")
|
||||||
|
m.Push(mdb.TEXT, "msg")
|
||||||
|
m.Push(mdb.TEXT, "ice")
|
||||||
|
m.Push(mdb.TEXT, "kit")
|
||||||
|
for _, l := range strings.Split(m.Cmdx("cli.system", "go", "list", "std"), ice.NL) {
|
||||||
|
m.Push(mdb.TEXT, kit.Slice(kit.Split(l, ice.PS), -1)[0])
|
||||||
|
}
|
||||||
|
}},
|
||||||
|
NAVIGATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
m.Option("text", kit.Slice(kit.Split(m.Option("text"), "."), -1)[0])
|
||||||
|
_inner_tags(m, "", m.Option("text"))
|
||||||
|
}},
|
||||||
}, PlugAction())},
|
}, PlugAction())},
|
||||||
}, Configs: ice.Configs{
|
}, Configs: ice.Configs{
|
||||||
MOD: {Name: MOD, Help: "模块", Value: kit.Data(PLUG, kit.Dict(
|
MOD: {Name: MOD, Help: "模块", Value: kit.Data(PLUG, kit.Dict(
|
||||||
|
@ -81,7 +81,7 @@ func _inner_tags(m *ice.Message, dir string, value string) {
|
|||||||
for i := 1; bio.Scan(); i++ {
|
for i := 1; bio.Scan(); i++ {
|
||||||
if i == line || bio.Text() == text {
|
if i == line || bio.Text() == text {
|
||||||
if dir == "" {
|
if dir == "" {
|
||||||
m.PushRecord(kit.Dict(nfs.PATH, path.Dir(file), nfs.FILE, path.Base(file), nfs.LINE, kit.Format(i), mdb.TEXT, bio.Text()))
|
m.PushRecord(kit.Dict(nfs.PATH, path.Dir(file)+ice.PS, nfs.FILE, path.Base(file), nfs.LINE, kit.Format(i), mdb.TEXT, bio.Text()))
|
||||||
} else {
|
} else {
|
||||||
m.PushRecord(kit.Dict(nfs.PATH, dir, nfs.FILE, strings.TrimPrefix(file, nfs.PWD), nfs.LINE, kit.Format(i), mdb.TEXT, bio.Text()))
|
m.PushRecord(kit.Dict(nfs.PATH, dir, nfs.FILE, strings.TrimPrefix(file, nfs.PWD), nfs.LINE, kit.Format(i), mdb.TEXT, bio.Text()))
|
||||||
}
|
}
|
||||||
@ -176,6 +176,9 @@ func init() {
|
|||||||
_inner_make(m, m.Cmd(cli.SYSTEM, cli.MAKE, arg))
|
_inner_make(m, m.Cmd(cli.SYSTEM, cli.MAKE, arg))
|
||||||
}},
|
}},
|
||||||
FAVOR: {Name: "favor", Help: "收藏"},
|
FAVOR: {Name: "favor", Help: "收藏"},
|
||||||
|
NAVIGATE: {Name: "navigate", Help: "跳转", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
m.Cmdy(NAVIGATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
|
||||||
|
}},
|
||||||
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
}, ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||||
if arg[0] = strings.Split(arg[0], ice.FS)[0]; !strings.HasSuffix(arg[0], ice.PS) {
|
if arg[0] = strings.Split(arg[0], ice.FS)[0]; !strings.HasSuffix(arg[0], ice.PS) {
|
||||||
arg[1] = kit.Slice(strings.Split(arg[0], ice.PS), -1)[0]
|
arg[1] = kit.Slice(strings.Split(arg[0], ice.PS), -1)[0]
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/aaa"
|
"shylinux.com/x/icebergs/base/aaa"
|
||||||
"shylinux.com/x/icebergs/base/cli"
|
"shylinux.com/x/icebergs/base/cli"
|
||||||
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
"shylinux.com/x/icebergs/base/gdb"
|
"shylinux.com/x/icebergs/base/gdb"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
"shylinux.com/x/icebergs/base/nfs"
|
"shylinux.com/x/icebergs/base/nfs"
|
||||||
@ -202,7 +203,7 @@ func init() {
|
|||||||
_install_stop(m, arg...)
|
_install_stop(m, arg...)
|
||||||
}},
|
}},
|
||||||
gdb.DEBUG: {Name: "debug", Help: "调试", Hand: func(m *ice.Message, arg ...string) {
|
gdb.DEBUG: {Name: "debug", Help: "调试", Hand: func(m *ice.Message, arg ...string) {
|
||||||
ProcessXterm(m, []string{mdb.TYPE, "gdb"})
|
ctx.Process(m, XTERM, []string{mdb.TYPE, "gdb"}, arg...)
|
||||||
}},
|
}},
|
||||||
nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_install_trash(m, arg...)
|
_install_trash(m, arg...)
|
||||||
|
@ -69,12 +69,38 @@ func init() {
|
|||||||
Index.Register(&ice.Context{Name: JS, Help: "前端", Commands: ice.Commands{
|
Index.Register(&ice.Context{Name: JS, Help: "前端", Commands: ice.Commands{
|
||||||
JS: {Name: "js", Help: "前端", Actions: ice.MergeActions(ice.Actions{
|
JS: {Name: "js", Help: "前端", Actions: ice.MergeActions(ice.Actions{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
for _, cmd := range []string{mdb.SEARCH, mdb.ENGINE, mdb.RENDER, mdb.PLUGIN} {
|
for _, cmd := range []string{
|
||||||
|
TEMPLATE, COMPLETE, NAVIGATE,
|
||||||
|
mdb.PLUGIN, mdb.RENDER, mdb.ENGINE, mdb.SEARCH,
|
||||||
|
} {
|
||||||
m.Cmd(cmd, mdb.CREATE, JSON, m.PrefixKey())
|
m.Cmd(cmd, mdb.CREATE, JSON, m.PrefixKey())
|
||||||
m.Cmd(cmd, mdb.CREATE, JS, m.PrefixKey())
|
m.Cmd(cmd, mdb.CREATE, JS, m.PrefixKey())
|
||||||
}
|
}
|
||||||
LoadPlug(m, JS)
|
LoadPlug(m, JS)
|
||||||
}},
|
}},
|
||||||
|
TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if kit.Ext(m.Option(mdb.FILE)) != m.CommandKey() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
m.Echo(`
|
||||||
|
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) {
|
||||||
|
msg.Echo("hello world")
|
||||||
|
msg.Dump(can)
|
||||||
|
}})
|
||||||
|
`)
|
||||||
|
}},
|
||||||
|
COMPLETE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if arg[0] == mdb.FOREACH && arg[2] == nfs.SCRIPT {
|
||||||
|
m.Push(nfs.FILE, strings.ReplaceAll(arg[1], ice.PT+kit.Ext(arg[1]), ice.PT+JS))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Complete(m, m.Option("text"), kit.Dict(
|
||||||
|
"", kit.List("function", "if"),
|
||||||
|
"msg", kit.List("Push", "Echo"),
|
||||||
|
))
|
||||||
|
}},
|
||||||
|
NAVIGATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
}},
|
||||||
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
|
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
key := ctx.GetFileCmd(kit.Replace(path.Join(arg[2], arg[1]), ".js", ".go"))
|
key := ctx.GetFileCmd(kit.Replace(path.Join(arg[2], arg[1]), ".js", ".go"))
|
||||||
if key == "" {
|
if key == "" {
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
|
|
||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/cli"
|
"shylinux.com/x/icebergs/base/cli"
|
||||||
|
"shylinux.com/x/icebergs/base/gdb"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
"shylinux.com/x/icebergs/base/nfs"
|
"shylinux.com/x/icebergs/base/nfs"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
@ -39,6 +40,15 @@ func init() {
|
|||||||
})
|
})
|
||||||
m.Cmd(mdb.ENGINE, mdb.CREATE, PY, m.PrefixKey())
|
m.Cmd(mdb.ENGINE, mdb.CREATE, PY, m.PrefixKey())
|
||||||
m.Cmd(mdb.RENDER, mdb.CREATE, PY, m.PrefixKey())
|
m.Cmd(mdb.RENDER, mdb.CREATE, PY, m.PrefixKey())
|
||||||
|
gdb.Watch(m, VIMER_TEMPLATE)
|
||||||
|
}},
|
||||||
|
VIMER_TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if kit.Ext(m.Option(mdb.FILE)) != m.CommandKey() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
m.Echo(`
|
||||||
|
print "hello world"
|
||||||
|
`)
|
||||||
}},
|
}},
|
||||||
mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) {
|
mdb.ENGINE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
_py_main_script(m, arg...)
|
_py_main_script(m, arg...)
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/cli"
|
"shylinux.com/x/icebergs/base/cli"
|
||||||
"shylinux.com/x/icebergs/base/ctx"
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
|
"shylinux.com/x/icebergs/base/gdb"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
"shylinux.com/x/icebergs/base/nfs"
|
"shylinux.com/x/icebergs/base/nfs"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
@ -66,6 +67,15 @@ func init() {
|
|||||||
m.Cmd(cmd, mdb.CREATE, m.CommandKey(), m.PrefixKey())
|
m.Cmd(cmd, mdb.CREATE, m.CommandKey(), m.PrefixKey())
|
||||||
}
|
}
|
||||||
LoadPlug(m, m.CommandKey())
|
LoadPlug(m, m.CommandKey())
|
||||||
|
gdb.Watch(m, VIMER_TEMPLATE)
|
||||||
|
}},
|
||||||
|
VIMER_TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if kit.Ext(m.Option(mdb.FILE)) != m.CommandKey() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
m.Echo(`
|
||||||
|
_list
|
||||||
|
`)
|
||||||
}},
|
}},
|
||||||
mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if arg[0] == mdb.FOREACH {
|
if arg[0] == mdb.FOREACH {
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/cli"
|
"shylinux.com/x/icebergs/base/cli"
|
||||||
"shylinux.com/x/icebergs/base/ctx"
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
|
"shylinux.com/x/icebergs/base/gdb"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
@ -41,6 +42,15 @@ func init() {
|
|||||||
m.Cmd(cmd, mdb.CREATE, SHY, m.PrefixKey())
|
m.Cmd(cmd, mdb.CREATE, SHY, m.PrefixKey())
|
||||||
}
|
}
|
||||||
LoadPlug(m, SHY)
|
LoadPlug(m, SHY)
|
||||||
|
gdb.Watch(m, VIMER_TEMPLATE)
|
||||||
|
}},
|
||||||
|
VIMER_TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if kit.Ext(m.Option(mdb.FILE)) != m.CommandKey() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
m.Echo(`
|
||||||
|
chapter "hi"
|
||||||
|
`)
|
||||||
}},
|
}},
|
||||||
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
|
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
ctx.ProcessCommand(m, "web.wiki.word", kit.Simple(path.Join(arg[2], arg[1])))
|
ctx.ProcessCommand(m, "web.wiki.word", kit.Simple(path.Join(arg[2], arg[1])))
|
||||||
|
@ -10,9 +10,10 @@ import (
|
|||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
const TEMPLATE = "template"
|
// const TEMPLATE = "template"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
return
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
TEMPLATE: {Name: "template name auto", Help: "模板", Actions: ice.MergeActions(ice.Actions{
|
TEMPLATE: {Name: "template name auto", Help: "模板", Actions: ice.MergeActions(ice.Actions{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/cli"
|
"shylinux.com/x/icebergs/base/cli"
|
||||||
"shylinux.com/x/icebergs/base/ctx"
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
|
"shylinux.com/x/icebergs/base/gdb"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
"shylinux.com/x/icebergs/base/nfs"
|
"shylinux.com/x/icebergs/base/nfs"
|
||||||
"shylinux.com/x/icebergs/base/web"
|
"shylinux.com/x/icebergs/base/web"
|
||||||
@ -14,59 +15,6 @@ import (
|
|||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
func _vimer_defs(m *ice.Message, ext string) string {
|
|
||||||
defs := kit.Dict(
|
|
||||||
nfs.SH, `
|
|
||||||
_list
|
|
||||||
`,
|
|
||||||
nfs.SHY, `
|
|
||||||
chapter "hi"
|
|
||||||
`,
|
|
||||||
nfs.PY, `
|
|
||||||
print "hello world"
|
|
||||||
`,
|
|
||||||
nfs.JS, `
|
|
||||||
Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) {
|
|
||||||
msg.Echo("hello world")
|
|
||||||
msg.Dump(can)
|
|
||||||
}})
|
|
||||||
`,
|
|
||||||
nfs.ZML, `
|
|
||||||
{
|
|
||||||
username
|
|
||||||
系统
|
|
||||||
命令 index cli.system
|
|
||||||
共享 index cli.qrcode
|
|
||||||
代码
|
|
||||||
趋势 index web.code.git.trend args icebergs action auto
|
|
||||||
状态 index web.code.git.status args icebergs
|
|
||||||
脚本
|
|
||||||
终端 index hi/hi.sh
|
|
||||||
文档 index hi/hi.shy
|
|
||||||
数据 index hi/hi.py
|
|
||||||
后端 index hi/hi.go
|
|
||||||
前端 index hi/hi.js
|
|
||||||
}
|
|
||||||
`,
|
|
||||||
nfs.IML, `
|
|
||||||
系统
|
|
||||||
命令
|
|
||||||
cli.system
|
|
||||||
环境
|
|
||||||
cli.runtime
|
|
||||||
开发
|
|
||||||
模块
|
|
||||||
hi/hi.go
|
|
||||||
脚本
|
|
||||||
hi/hi.sh
|
|
||||||
hi/hi.shy
|
|
||||||
hi/hi.py
|
|
||||||
hi/hi.go
|
|
||||||
hi/hi.js
|
|
||||||
`,
|
|
||||||
)
|
|
||||||
return kit.Format(defs[ext])
|
|
||||||
}
|
|
||||||
func _vimer_list(m *ice.Message, dir string, arg ...string) { // field
|
func _vimer_list(m *ice.Message, dir string, arg ...string) { // field
|
||||||
m.Copy(m.Cmd(nfs.DIR, nfs.PWD, kit.Dict(nfs.DIR_ROOT, dir, nfs.DIR_DEEP, ice.TRUE)).Cut(nfs.PATH).RenameAppend(nfs.PATH, kit.Select(mdb.NAME, arg, 0)))
|
m.Copy(m.Cmd(nfs.DIR, nfs.PWD, kit.Dict(nfs.DIR_ROOT, dir, nfs.DIR_DEEP, ice.TRUE)).Cut(nfs.PATH).RenameAppend(nfs.PATH, kit.Select(mdb.NAME, arg, 0)))
|
||||||
}
|
}
|
||||||
@ -107,39 +55,6 @@ func _vimer_inputs(m *ice.Message, arg ...string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func _vimer_complete(m *ice.Message, arg ...string) {
|
|
||||||
switch left := kit.Select("", kit.Slice(kit.Split(m.Option(mdb.TEXT), "\t \n`"), -1), 0); kit.Ext(m.Option(nfs.FILE)) {
|
|
||||||
case nfs.ZML:
|
|
||||||
switch left {
|
|
||||||
case mdb.TYPE:
|
|
||||||
m.Push(mdb.NAME, "menu")
|
|
||||||
|
|
||||||
case ctx.INDEX:
|
|
||||||
m.Cmdy(ctx.COMMAND, mdb.SEARCH, ctx.COMMAND, "", "", ice.OptionFields("index,name,text"))
|
|
||||||
_vimer_list(m, ice.SRC, ctx.INDEX)
|
|
||||||
|
|
||||||
case ctx.ACTION:
|
|
||||||
m.Push(mdb.NAME, "auto")
|
|
||||||
m.Push(mdb.NAME, "push")
|
|
||||||
m.Push(mdb.NAME, "open")
|
|
||||||
|
|
||||||
default:
|
|
||||||
if strings.HasSuffix(m.Option(mdb.TEXT), " ") {
|
|
||||||
m.Push(mdb.NAME, "index")
|
|
||||||
m.Push(mdb.NAME, "action")
|
|
||||||
m.Push(mdb.NAME, "args")
|
|
||||||
m.Push(mdb.NAME, "type")
|
|
||||||
} else if m.Option(mdb.TEXT) == "" {
|
|
||||||
m.Push(mdb.NAME, "head")
|
|
||||||
m.Push(mdb.NAME, "left")
|
|
||||||
m.Push(mdb.NAME, "main")
|
|
||||||
m.Push(mdb.NAME, "foot")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
m.Cmdy(mdb.ENGINE, kit.Ext(m.Option(nfs.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func _vimer_go_complete(m *ice.Message, name string, arg ...string) *ice.Message {
|
func _vimer_go_complete(m *ice.Message, name string, arg ...string) *ice.Message {
|
||||||
kit.Fetch(kit.Split(m.Cmdx(cli.SYSTEM, GO, "doc", name), ice.NL, ice.NL, ice.NL), func(index int, value string) {
|
kit.Fetch(kit.Split(m.Cmdx(cli.SYSTEM, GO, "doc", name), ice.NL, ice.NL, ice.NL), func(index int, value string) {
|
||||||
if ls := kit.Split(value); len(ls) > 1 {
|
if ls := kit.Split(value); len(ls) > 1 {
|
||||||
@ -160,9 +75,6 @@ func _vimer_go_complete(m *ice.Message, name string, arg ...string) *ice.Message
|
|||||||
const (
|
const (
|
||||||
VIMER_TEMPLATE = "vimer.template"
|
VIMER_TEMPLATE = "vimer.template"
|
||||||
VIMER_COMPLETE = "vimer.complete"
|
VIMER_COMPLETE = "vimer.complete"
|
||||||
|
|
||||||
COMPLETE = "complete"
|
|
||||||
// TEMPLATE = "template"
|
|
||||||
)
|
)
|
||||||
const VIMER = "vimer"
|
const VIMER = "vimer"
|
||||||
|
|
||||||
@ -174,18 +86,15 @@ func init() {
|
|||||||
m.PushSearch(mdb.TYPE, "go", mdb.NAME, "src/main.go", mdb.TEXT, chat.MergeCmd(m, ""))
|
m.PushSearch(mdb.TYPE, "go", mdb.NAME, "src/main.go", mdb.TEXT, chat.MergeCmd(m, ""))
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
_vimer_inputs(m, arg...)
|
|
||||||
}},
|
|
||||||
|
|
||||||
nfs.SAVE: {Name: "save type file path", Help: "保存", Hand: func(m *ice.Message, arg ...string) {
|
nfs.SAVE: {Name: "save type file path", Help: "保存", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Option(nfs.CONTENT, kit.Select(_vimer_defs(m, kit.Ext(m.Option(nfs.FILE))), m.Option(nfs.CONTENT)))
|
if m.Option(nfs.CONTENT) == "" {
|
||||||
|
m.Option(nfs.CONTENT, gdb.Event(m.Spawn(), VIMER_TEMPLATE).Result())
|
||||||
|
}
|
||||||
m.Cmdy(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))
|
m.Cmdy(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)))
|
||||||
}},
|
}},
|
||||||
nfs.TRASH: {Name: "trash path", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
nfs.TRASH: {Name: "trash path", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(nfs.TRASH, arg[0])
|
m.Cmdy(nfs.TRASH, arg[0])
|
||||||
}},
|
}},
|
||||||
|
|
||||||
COMPILE: {Name: "compile", Help: "编译", Hand: func(m *ice.Message, arg ...string) {
|
COMPILE: {Name: "compile", Help: "编译", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if msg := m.Cmd(COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN); cli.IsSuccess(msg) {
|
if msg := m.Cmd(COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN); cli.IsSuccess(msg) {
|
||||||
m.Cmd(UPGRADE, cli.RESTART)
|
m.Cmd(UPGRADE, cli.RESTART)
|
||||||
@ -197,11 +106,12 @@ func init() {
|
|||||||
m.Cmdy(AUTOGEN, mdb.CREATE, arg)
|
m.Cmdy(AUTOGEN, mdb.CREATE, arg)
|
||||||
}},
|
}},
|
||||||
nfs.SCRIPT: {Name: "script file=hi/hi.js", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
|
nfs.SCRIPT: {Name: "script file=hi/hi.js", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Option(mdb.TEXT, strings.TrimSpace(kit.Select(_vimer_defs(m, kit.Ext(m.Option(nfs.FILE))), m.Option(mdb.TEXT))))
|
m.Cmdy(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Cmdx(TEMPLATE, kit.Ext(m.Option(nfs.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)))
|
||||||
m.Cmdy(TEMPLATE, nfs.DEFS)
|
|
||||||
}},
|
}},
|
||||||
web.WEBSITE: {Name: "website file=hi.zml", Help: "网页", Hand: func(m *ice.Message, arg ...string) {
|
web.WEBSITE: {Name: "website file=hi.zml", Help: "网页", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Option(mdb.TEXT, strings.TrimSpace(kit.Select(_vimer_defs(m, kit.Ext(m.Option(nfs.FILE))), m.Option(mdb.TEXT))))
|
if m.Option(mdb.TEXT) == "" {
|
||||||
|
m.Option(mdb.TEXT, gdb.Event(m.Spawn(), VIMER_TEMPLATE).Result())
|
||||||
|
}
|
||||||
m.Option(nfs.FILE, path.Join(web.WEBSITE, m.Option(nfs.FILE)))
|
m.Option(nfs.FILE, path.Join(web.WEBSITE, m.Option(nfs.FILE)))
|
||||||
m.Cmdy(TEMPLATE, nfs.DEFS)
|
m.Cmdy(TEMPLATE, nfs.DEFS)
|
||||||
}},
|
}},
|
||||||
@ -215,12 +125,20 @@ func init() {
|
|||||||
m.Cmdy(PUBLISH, ice.CONTEXTS)
|
m.Cmdy(PUBLISH, ice.CONTEXTS)
|
||||||
}},
|
}},
|
||||||
|
|
||||||
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
switch arg[0] {
|
||||||
|
case nfs.FILE:
|
||||||
|
m.Cmdy(COMPLETE, mdb.FOREACH, arg[1], m.Option(ctx.ACTION))
|
||||||
|
}
|
||||||
|
_vimer_inputs(m, arg...)
|
||||||
|
}},
|
||||||
TEMPLATE: {Name: "template", Help: "模板", Hand: func(m *ice.Message, arg ...string) {
|
TEMPLATE: {Name: "template", Help: "模板", Hand: func(m *ice.Message, arg ...string) {
|
||||||
// _vimer_template(m, arg...)
|
m.Cmdy(TEMPLATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
|
||||||
}},
|
}},
|
||||||
COMPLETE: {Name: "complete", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
COMPLETE: {Name: "complete", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_vimer_complete(m, arg...)
|
m.Cmdy(COMPLETE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
|
||||||
}},
|
}},
|
||||||
|
|
||||||
"listTags": {Name: "listTags", Help: "索引", Hand: func(m *ice.Message, arg ...string) {
|
"listTags": {Name: "listTags", Help: "索引", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy("web.code.vim.tags", "listTags", arg)
|
m.Cmdy("web.code.vim.tags", "listTags", arg)
|
||||||
}},
|
}},
|
||||||
@ -255,3 +173,57 @@ func init() {
|
|||||||
func ProcessVimer(m *ice.Message, path, file, line string, arg ...string) {
|
func ProcessVimer(m *ice.Message, path, file, line string, arg ...string) {
|
||||||
ctx.ProcessField(m, Prefix(VIMER), kit.Simple(path, file, line), arg...)
|
ctx.ProcessField(m, Prefix(VIMER), kit.Simple(path, file, line), arg...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TEMPLATE = "template"
|
||||||
|
const COMPLETE = "complete"
|
||||||
|
const NAVIGATE = "navigate"
|
||||||
|
|
||||||
|
func Complete(m *ice.Message, text string, data ice.Map) {
|
||||||
|
if strings.HasSuffix(text, ".") {
|
||||||
|
key := kit.Slice(kit.Split(text, " ."), -1)[0]
|
||||||
|
m.Push(mdb.TEXT, kit.Simple(data[key]))
|
||||||
|
} else {
|
||||||
|
m.Push(mdb.TEXT, data[""])
|
||||||
|
for k := range data {
|
||||||
|
m.Push(mdb.TEXT, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
|
if strings.TrimSpace(text) == "" {
|
||||||
|
m.Push(mdb.TEXT, kit.Simple(data[""]))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
name := kit.Slice(kit.Split(text), -1)[0]
|
||||||
|
if name == "" {
|
||||||
|
m.Push(mdb.TEXT, kit.Simple(data[""]))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
key := kit.Slice(kit.Split(name, "."), -1)[0]
|
||||||
|
if strings.HasSuffix(name, ".") {
|
||||||
|
m.Push(mdb.TEXT, kit.Simple(data[key]))
|
||||||
|
} else {
|
||||||
|
for k := range data {
|
||||||
|
if strings.HasPrefix(k, key) {
|
||||||
|
m.Push(mdb.TEXT, key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list := kit.Simple(data[key])
|
||||||
|
for i, v := range list {
|
||||||
|
list[i] = "." + v
|
||||||
|
}
|
||||||
|
m.Push(mdb.TEXT, list)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Index.MergeCommands(ice.Commands{COMPLETE: {Name: "complete type name text auto", Help: "补全", Actions: mdb.RenderAction()}})
|
||||||
|
}
|
||||||
|
func init() {
|
||||||
|
Index.MergeCommands(ice.Commands{TEMPLATE: {Name: "template type name text auto", Help: "模板", Actions: mdb.RenderAction()}})
|
||||||
|
}
|
||||||
|
func init() {
|
||||||
|
Index.MergeCommands(ice.Commands{NAVIGATE: {Name: "navigate type name text auto", Help: "跳转", Actions: mdb.RenderAction()}})
|
||||||
|
}
|
||||||
|
@ -22,9 +22,20 @@ type _xterm struct {
|
|||||||
*os.File
|
*os.File
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s _xterm) Close() error { s.Cmd.Process.Kill(); return nil }
|
func (s _xterm) Setsize(rows, cols string) error {
|
||||||
|
return pty.Setsize(s.File, &pty.Winsize{Rows: uint16(kit.Int(rows)), Cols: uint16(kit.Int(cols))})
|
||||||
|
}
|
||||||
|
func (s _xterm) Write(data string) (int, error) {
|
||||||
|
return s.File.Write([]byte(data))
|
||||||
|
}
|
||||||
|
func (s _xterm) Close() error {
|
||||||
|
return s.Cmd.Process.Kill()
|
||||||
|
}
|
||||||
|
|
||||||
func _xterm_get(m *ice.Message, h string) _xterm {
|
func _xterm_get(m *ice.Message, h string) _xterm {
|
||||||
|
h = kit.Select(m.Option(mdb.HASH), h)
|
||||||
|
m.Assert(h != "")
|
||||||
|
|
||||||
t := mdb.HashSelectField(m, m.Option(mdb.HASH, h), mdb.TYPE)
|
t := mdb.HashSelectField(m, m.Option(mdb.HASH, h), mdb.TYPE)
|
||||||
mdb.HashModify(m, mdb.TEXT, m.Option(ice.MSG_DAEMON))
|
mdb.HashModify(m, mdb.TEXT, m.Option(ice.MSG_DAEMON))
|
||||||
return mdb.HashTarget(m, h, func() ice.Any {
|
return mdb.HashTarget(m, h, func() ice.Any {
|
||||||
@ -35,6 +46,9 @@ func _xterm_get(m *ice.Message, h string) _xterm {
|
|||||||
m.Assert(err)
|
m.Assert(err)
|
||||||
|
|
||||||
m.Go(func() {
|
m.Go(func() {
|
||||||
|
defer mdb.HashSelectUpdate(m, h, func(value ice.Map) { delete(value, mdb.TARGET) })
|
||||||
|
defer tty.Close()
|
||||||
|
|
||||||
m.Option("log.disable", ice.TRUE)
|
m.Option("log.disable", ice.TRUE)
|
||||||
buf := make([]byte, ice.MOD_BUFS)
|
buf := make([]byte, ice.MOD_BUFS)
|
||||||
for {
|
for {
|
||||||
@ -55,7 +69,13 @@ const XTERM = "xterm"
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
XTERM: {Name: "xterm hash auto", Help: "终端", Actions: ice.MergeActions(ice.Actions{
|
XTERM: {Name: "xterm hash auto", Help: "命令行", Actions: ice.MergeActions(ice.Actions{
|
||||||
|
ctx.PROCESS: {Name: "process", Help: "响应", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
if len(arg) == 0 || arg[0] != ice.RUN {
|
||||||
|
arg = []string{m.Cmdx("", mdb.CREATE, arg)}
|
||||||
|
}
|
||||||
|
ctx.ProcessField(m, "", arg, arg...)
|
||||||
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
switch mdb.HashInputs(m, arg); arg[0] {
|
switch mdb.HashInputs(m, arg); arg[0] {
|
||||||
case mdb.TYPE:
|
case mdb.TYPE:
|
||||||
@ -64,40 +84,34 @@ func init() {
|
|||||||
m.Push(arg[0], ice.Info.HostName, path.Base(m.Option(mdb.TYPE)))
|
m.Push(arg[0], ice.Info.HostName, path.Base(m.Option(mdb.TYPE)))
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
mdb.CREATE: {Name: "create type=sh name", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create type=sh name init", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
||||||
mdb.HashCreate(m, mdb.NAME, kit.Split(m.Option(mdb.TYPE))[0], m.OptionSimple(mdb.TYPE, mdb.NAME))
|
mdb.HashCreate(m, mdb.NAME, kit.Split(m.Option(mdb.TYPE))[0], m.OptionSimple(mdb.TYPE, mdb.NAME, ice.INIT))
|
||||||
m.ProcessRefresh3ms()
|
ctx.ProcessRefresh(m)
|
||||||
}},
|
}},
|
||||||
"resize": {Name: "resize", Help: "大小", Hand: func(m *ice.Message, arg ...string) {
|
"resize": {Name: "resize", Help: "大小", Hand: func(m *ice.Message, arg ...string) {
|
||||||
pty.Setsize(_xterm_get(m, m.Option(mdb.HASH)).File, &pty.Winsize{Rows: uint16(kit.Int(m.Option("rows"))), Cols: uint16(kit.Int(m.Option("cols")))})
|
_xterm_get(m, "").Setsize(m.Option("rows"), m.Option("cols"))
|
||||||
}},
|
}},
|
||||||
"input": {Name: "input", Help: "输入", Hand: func(m *ice.Message, arg ...string) {
|
"input": {Name: "input", Help: "输入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if b, e := base64.StdEncoding.DecodeString(strings.Join(arg, "")); !m.Warn(e) {
|
if b, e := base64.StdEncoding.DecodeString(strings.Join(arg, "")); !m.Warn(e) {
|
||||||
_xterm_get(m, m.Option(mdb.HASH)).Write(b)
|
_xterm_get(m, "").Write(string(b))
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
INSTALL: {Name: "install", Help: "安装", Hand: func(m *ice.Message, arg ...string) {
|
INSTALL: {Name: "install", Help: "安装", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_xterm_get(m, kit.Select(m.Option(mdb.HASH), arg, 0)).Write([]byte(m.Cmdx(PUBLISH, ice.CONTEXTS, INSTALL) + ice.NL))
|
_xterm_get(m, kit.Select("", arg, 0)).Write(m.Cmdx(PUBLISH, ice.CONTEXTS, INSTALL) + ice.NL)
|
||||||
m.ProcessHold()
|
ctx.ProcessHold(m)
|
||||||
}},
|
}},
|
||||||
web.WEBSITE: {Name: "website", Help: "打开", Hand: func(m *ice.Message, arg ...string) {
|
web.WEBSITE: {Name: "website", Help: "打开", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.ProcessOpen(web.MergePodCmd(m, "", m.PrefixKey(), mdb.HASH, m.Option(mdb.HASH)))
|
web.ProcessWebsite(m, "", "", m.OptionSimple(mdb.HASH))
|
||||||
}},
|
}},
|
||||||
}, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text")), Hand: func(m *ice.Message, arg ...string) {
|
}, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,init", mdb.TOOLS, FAVOR), ctx.CmdAction(), ctx.ProcessAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||||
if mdb.HashSelect(m, arg...); len(arg) == 0 {
|
if mdb.HashSelect(m, arg...); len(arg) == 0 {
|
||||||
m.PushAction(web.WEBSITE, mdb.REMOVE)
|
m.PushAction(web.WEBSITE, mdb.REMOVE)
|
||||||
m.Action(mdb.CREATE, mdb.PRUNES)
|
m.Action(mdb.CREATE, mdb.PRUNES)
|
||||||
} else {
|
} else {
|
||||||
m.Action("full", INSTALL)
|
m.Action("full", INSTALL)
|
||||||
ctx.DisplayLocal(m, "")
|
ctx.DisplayLocal(m, "")
|
||||||
|
ctx.Toolkit(m)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func ProcessXterm(m *ice.Message, args []string, arg ...string) {
|
|
||||||
if len(arg) == 0 || arg[0] != ice.RUN {
|
|
||||||
args = []string{m.Cmdx(Prefix(XTERM), mdb.CREATE, args)}
|
|
||||||
}
|
|
||||||
ctx.ProcessField(m, Prefix(XTERM), args, arg...)
|
|
||||||
}
|
|
||||||
|
@ -5,9 +5,12 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
|
"shylinux.com/x/icebergs/base/gdb"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
"shylinux.com/x/icebergs/base/nfs"
|
"shylinux.com/x/icebergs/base/nfs"
|
||||||
"shylinux.com/x/icebergs/core/chat"
|
"shylinux.com/x/icebergs/core/chat"
|
||||||
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
func _website_url(m *ice.Message, file string) string {
|
func _website_url(m *ice.Message, file string) string {
|
||||||
@ -25,6 +28,75 @@ func init() {
|
|||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmd(mdb.RENDER, mdb.CREATE, nfs.ZML, m.PrefixKey())
|
m.Cmd(mdb.RENDER, mdb.CREATE, nfs.ZML, m.PrefixKey())
|
||||||
m.Cmd(mdb.ENGINE, mdb.CREATE, nfs.ZML, m.PrefixKey())
|
m.Cmd(mdb.ENGINE, mdb.CREATE, nfs.ZML, m.PrefixKey())
|
||||||
|
gdb.Watch(m, VIMER_TEMPLATE)
|
||||||
|
gdb.Watch(m, VIMER_COMPLETE)
|
||||||
|
}},
|
||||||
|
VIMER_TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
switch kit.Ext(m.Option(mdb.FILE)) {
|
||||||
|
case ZML:
|
||||||
|
m.Echo(`
|
||||||
|
{
|
||||||
|
username
|
||||||
|
系统
|
||||||
|
命令 index cli.system
|
||||||
|
共享 index cli.qrcode
|
||||||
|
代码
|
||||||
|
趋势 index web.code.git.trend args icebergs action auto
|
||||||
|
状态 index web.code.git.status args icebergs
|
||||||
|
脚本
|
||||||
|
终端 index hi/hi.sh
|
||||||
|
文档 index hi/hi.shy
|
||||||
|
数据 index hi/hi.py
|
||||||
|
后端 index hi/hi.go
|
||||||
|
前端 index hi/hi.js
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
case nfs.IML:
|
||||||
|
m.Echo(`
|
||||||
|
系统
|
||||||
|
命令
|
||||||
|
cli.system
|
||||||
|
环境
|
||||||
|
cli.runtime
|
||||||
|
开发
|
||||||
|
模块
|
||||||
|
hi/hi.go
|
||||||
|
脚本
|
||||||
|
hi/hi.sh
|
||||||
|
hi/hi.shy
|
||||||
|
hi/hi.py
|
||||||
|
hi/hi.go
|
||||||
|
hi/hi.js
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
}},
|
||||||
|
VIMER_COMPLETE: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
switch kit.Select("", kit.Slice(kit.Split(m.Option(mdb.TEXT), "\t \n`"), -1), 0) {
|
||||||
|
case mdb.TYPE:
|
||||||
|
m.Push(mdb.NAME, "menu")
|
||||||
|
|
||||||
|
case ctx.INDEX:
|
||||||
|
m.Cmdy(ctx.COMMAND, mdb.SEARCH, ctx.COMMAND, "", "", ice.OptionFields("index,name,text"))
|
||||||
|
_vimer_list(m, ice.SRC, ctx.INDEX)
|
||||||
|
|
||||||
|
case ctx.ACTION:
|
||||||
|
m.Push(mdb.NAME, "auto")
|
||||||
|
m.Push(mdb.NAME, "push")
|
||||||
|
m.Push(mdb.NAME, "open")
|
||||||
|
|
||||||
|
default:
|
||||||
|
if strings.HasSuffix(m.Option(mdb.TEXT), " ") {
|
||||||
|
m.Push(mdb.NAME, "index")
|
||||||
|
m.Push(mdb.NAME, "action")
|
||||||
|
m.Push(mdb.NAME, "args")
|
||||||
|
m.Push(mdb.NAME, "type")
|
||||||
|
} else if m.Option(mdb.TEXT) == "" {
|
||||||
|
m.Push(mdb.NAME, "head")
|
||||||
|
m.Push(mdb.NAME, "left")
|
||||||
|
m.Push(mdb.NAME, "main")
|
||||||
|
m.Push(mdb.NAME, "foot")
|
||||||
|
}
|
||||||
|
}
|
||||||
}},
|
}},
|
||||||
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
|
mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.EchoIFrame(_website_url(m, strings.TrimPrefix(path.Join(arg[2], arg[1]), SRC_WEBSITE)))
|
m.EchoIFrame(_website_url(m, strings.TrimPrefix(path.Join(arg[2], arg[1]), SRC_WEBSITE)))
|
||||||
|
4
data.go
4
data.go
@ -12,8 +12,8 @@ func (m *Message) ActionKey() string {
|
|||||||
func (m *Message) CommandKey() string {
|
func (m *Message) CommandKey() string {
|
||||||
return strings.TrimSuffix(strings.TrimPrefix(m._key, PS), PS)
|
return strings.TrimSuffix(strings.TrimPrefix(m._key, PS), PS)
|
||||||
}
|
}
|
||||||
func (m *Message) PrefixKey(arg ...string) string {
|
func (m *Message) PrefixKey(arg ...Any) string {
|
||||||
return kit.Keys(m.Prefix(m.CommandKey()), arg)
|
return kit.Keys(m.Prefix(m.CommandKey()), kit.Keys(arg))
|
||||||
}
|
}
|
||||||
func (m *Message) Prefix(arg ...string) string {
|
func (m *Message) Prefix(arg ...string) string {
|
||||||
return m.Target().PrefixKey(arg...)
|
return m.Target().PrefixKey(arg...)
|
||||||
|
@ -169,7 +169,7 @@ func _status_list(m *ice.Message) (files, adds, dels int, last time.Time) {
|
|||||||
default:
|
default:
|
||||||
m.Push(TAGS, "")
|
m.Push(TAGS, "")
|
||||||
if strings.Contains(vs[0], "??") {
|
if strings.Contains(vs[0], "??") {
|
||||||
list = append(list, ADD)
|
list = append(list, ADD, nfs.TRASH)
|
||||||
} else {
|
} else {
|
||||||
list = append(list, COMMIT)
|
list = append(list, COMMIT)
|
||||||
}
|
}
|
||||||
@ -305,6 +305,9 @@ func init() {
|
|||||||
code.PUBLISH: {Name: "publish", Help: "发布", Hand: func(m *ice.Message, arg ...string) {
|
code.PUBLISH: {Name: "publish", Help: "发布", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(code.PUBLISH, ice.CONTEXTS, ice.MISC, ice.CORE)
|
m.Cmdy(code.PUBLISH, ice.CONTEXTS, ice.MISC, ice.CORE)
|
||||||
}},
|
}},
|
||||||
|
nfs.TRASH: {Name: "trash", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
m.Cmd(nfs.TRASH, path.Join(_repos_path(m.Option(REPOS)), m.Option(nfs.FILE)))
|
||||||
|
}},
|
||||||
code.BINPACK: {Name: "binpack", Help: "发布模式", Hand: func(m *ice.Message, arg ...string) {
|
code.BINPACK: {Name: "binpack", Help: "发布模式", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmd(nfs.LINK, ice.GO_SUM, path.Join(ice.SRC_RELEASE, ice.GO_SUM))
|
m.Cmd(nfs.LINK, ice.GO_SUM, path.Join(ice.SRC_RELEASE, ice.GO_SUM))
|
||||||
m.Cmd(nfs.LINK, ice.GO_MOD, path.Join(ice.SRC_RELEASE, ice.GO_MOD))
|
m.Cmd(nfs.LINK, ice.GO_MOD, path.Join(ice.SRC_RELEASE, ice.GO_MOD))
|
||||||
|
@ -158,7 +158,7 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
|
|
||||||
code.XTERM: {Name: "xterm", Help: "终端", Hand: func(m *ice.Message, arg ...string) {
|
code.XTERM: {Name: "xterm", Help: "终端", Hand: func(m *ice.Message, arg ...string) {
|
||||||
code.ProcessXterm(m, []string{mdb.TYPE, "tmux attach -t " + m.Option(SESSION)}, arg...)
|
ctx.Process(m, code.XTERM, []string{mdb.TYPE, "tmux attach -t " + m.Option(SESSION)}, arg...)
|
||||||
}},
|
}},
|
||||||
SCRIPT: {Name: "script name", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
|
SCRIPT: {Name: "script name", Help: "脚本", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmd(SCRIPT, m.Option(mdb.NAME), func(value ice.Maps) {
|
m.Cmd(SCRIPT, m.Option(mdb.NAME), func(value ice.Maps) {
|
||||||
|
202
misc/vim/vim.shy
202
misc/vim/vim.shy
@ -2,13 +2,209 @@ title "vim"
|
|||||||
refer `
|
refer `
|
||||||
官网 https://www.vim.org
|
官网 https://www.vim.org
|
||||||
源码 https://github.com/vim/vim
|
源码 https://github.com/vim/vim
|
||||||
文档 http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
|
文档 http://vimdoc.sourceforge.net/htmldoc/help.html
|
||||||
`
|
`
|
||||||
|
|
||||||
chapter "源码"
|
chapter "源码"
|
||||||
field "安装" web.code.vim.vim
|
field "编辑器" web.code.vim.vim
|
||||||
field "源码" web.code.inner args `usr/install/vim-vim-12be734/ src/main.c 110`
|
field "源代码" web.code.ctags.inner args `usr/install/vim-vim-12be734/ src/main.c 110`
|
||||||
|
field "计数" web.code.git.count args `usr/install/vim-vim-12be734/src/`
|
||||||
|
web.code.ctags.chain `
|
||||||
|
syntax.c
|
||||||
|
buffer.c
|
||||||
|
window.c
|
||||||
|
screen.c
|
||||||
|
session.c
|
||||||
|
quickfix.c
|
||||||
|
popupmenu.c
|
||||||
|
popupwin.c
|
||||||
|
autocmd.c
|
||||||
|
mouse.c
|
||||||
|
pty.c
|
||||||
|
undo.c
|
||||||
|
menu.c
|
||||||
|
message.c
|
||||||
|
message_test.c
|
||||||
|
move.c
|
||||||
|
fold.c
|
||||||
|
term.c
|
||||||
|
term.h
|
||||||
|
terminal.c
|
||||||
|
termlib.c
|
||||||
|
|
||||||
|
alloc.h
|
||||||
|
arabic.c
|
||||||
|
arglist.c
|
||||||
|
ascii.h
|
||||||
|
auto
|
||||||
|
beval.c
|
||||||
|
beval.h
|
||||||
|
bigvim64.bat
|
||||||
|
bigvim.bat
|
||||||
|
blob.c
|
||||||
|
blowfish.c
|
||||||
|
bufwrite.c
|
||||||
|
change.c
|
||||||
|
channel.c
|
||||||
|
charset.c
|
||||||
|
cindent.c
|
||||||
|
clientserver.c
|
||||||
|
clipboard.c
|
||||||
|
cmdexpand.c
|
||||||
|
cmdhist.c
|
||||||
|
config.h.in
|
||||||
|
config.mk.dist
|
||||||
|
config.mk.in
|
||||||
|
configure
|
||||||
|
configure.ac
|
||||||
|
create_cmdidxs.vim
|
||||||
|
crypt.c
|
||||||
|
crypt_zip.c
|
||||||
|
debugger.c
|
||||||
|
dehqx.py
|
||||||
|
dict.c
|
||||||
|
diff.c
|
||||||
|
digraph.c
|
||||||
|
dimm.idl
|
||||||
|
dlldata.c
|
||||||
|
dosinst.c
|
||||||
|
dosinst.h
|
||||||
|
drawline.c
|
||||||
|
drawscreen.c
|
||||||
|
edit.c
|
||||||
|
errors.h
|
||||||
|
evalbuffer.c
|
||||||
|
eval.c
|
||||||
|
evalfunc.c
|
||||||
|
evalvars.c
|
||||||
|
evalwindow.c
|
||||||
|
ex_cmdidxs.h
|
||||||
|
ex_cmds2.c
|
||||||
|
ex_cmds.c
|
||||||
|
ex_cmds.h
|
||||||
|
ex_docmd.c
|
||||||
|
ex_eval.c
|
||||||
|
ex_getln.c
|
||||||
|
feature.h
|
||||||
|
fileio.c
|
||||||
|
filepath.c
|
||||||
|
findfile.c
|
||||||
|
getchar.c
|
||||||
|
glbl_ime.cpp
|
||||||
|
glbl_ime.h
|
||||||
|
globals.h
|
||||||
|
GvimExt
|
||||||
|
gvimtutor
|
||||||
|
hardcopy.c
|
||||||
|
hashtab.c
|
||||||
|
help.c
|
||||||
|
highlight.c
|
||||||
|
iid_ole.c
|
||||||
|
indent.c
|
||||||
|
infplist.xml
|
||||||
|
insexpand.c
|
||||||
|
iscygpty.c
|
||||||
|
iscygpty.h
|
||||||
|
job.c
|
||||||
|
json.c
|
||||||
|
json_test.c
|
||||||
|
keymap.h
|
||||||
|
kword_test.c
|
||||||
|
libvterm
|
||||||
|
link.390
|
||||||
|
link.sh
|
||||||
|
list.c
|
||||||
|
locale.c
|
||||||
|
macros.h
|
||||||
|
main.c
|
||||||
|
map.c
|
||||||
|
mark.c
|
||||||
|
match.c
|
||||||
|
mbyte.c
|
||||||
|
memfile.c
|
||||||
|
memfile_test.c
|
||||||
|
memline.c
|
||||||
|
misc1.c
|
||||||
|
misc2.c
|
||||||
|
mysign
|
||||||
|
nbdebug.c
|
||||||
|
nbdebug.h
|
||||||
|
netbeans.c
|
||||||
|
normal.c
|
||||||
|
ops.c
|
||||||
|
option.c
|
||||||
|
optiondefs.h
|
||||||
|
option.h
|
||||||
|
optionstr.c
|
||||||
|
osdef1.h.in
|
||||||
|
osdef2.h.in
|
||||||
|
osdef.sh
|
||||||
|
pathdef.sh
|
||||||
|
profiler.c
|
||||||
|
proto
|
||||||
|
protodef.h
|
||||||
|
proto.h
|
||||||
|
README.md
|
||||||
|
regexp_bt.c
|
||||||
|
regexp.c
|
||||||
|
regexp.h
|
||||||
|
regexp_nfa.c
|
||||||
|
register.c
|
||||||
|
scriptfile.c
|
||||||
|
search.c
|
||||||
|
sha256.c
|
||||||
|
sign.c
|
||||||
|
sound.c
|
||||||
|
spell.c
|
||||||
|
spellfile.c
|
||||||
|
spell.h
|
||||||
|
spellsuggest.c
|
||||||
|
structs.h
|
||||||
|
tag.c
|
||||||
|
tearoff.bmp
|
||||||
|
testing.c
|
||||||
|
textformat.c
|
||||||
|
textobject.c
|
||||||
|
textprop.c
|
||||||
|
time.c
|
||||||
|
toolbar.phi
|
||||||
|
toolcheck
|
||||||
|
tools.bmp
|
||||||
|
typemap
|
||||||
|
typval.c
|
||||||
|
ui.c
|
||||||
|
uninstall.c
|
||||||
|
usercmd.c
|
||||||
|
userfunc.c
|
||||||
|
version.c
|
||||||
|
version.h
|
||||||
|
vim9compile.c
|
||||||
|
vim9execute.c
|
||||||
|
vim9.h
|
||||||
|
vim9script.c
|
||||||
|
vim9type.c
|
||||||
|
vim_alert.ico
|
||||||
|
vim.def
|
||||||
|
vim_error.ico
|
||||||
|
vim.h
|
||||||
|
vim.ico
|
||||||
|
vim_icon.xbm
|
||||||
|
viminfo.c
|
||||||
|
vim_info.ico
|
||||||
|
vim_mask.xbm
|
||||||
|
vim_quest.ico
|
||||||
|
vim.rc
|
||||||
|
vimrun.c
|
||||||
|
vim.tlb
|
||||||
|
vimtutor
|
||||||
|
VisVim
|
||||||
|
which.sh
|
||||||
|
winclip.c
|
||||||
|
xdiff
|
||||||
|
xpm_w32.c
|
||||||
|
xpm_w32.h
|
||||||
|
|
||||||
|
`
|
||||||
section "构建"
|
section "构建"
|
||||||
shell `
|
shell `
|
||||||
yum install -y wget make gcc
|
yum install -y wget make gcc
|
||||||
|
Loading…
x
Reference in New Issue
Block a user