Add log and plugin list command

This commit is contained in:
Zachary Yedidia
2019-08-05 20:43:34 -07:00
parent 7217911c3a
commit 3d40e91690
4 changed files with 72 additions and 3 deletions

View File

@@ -360,19 +360,21 @@ func (h *BufPane) DoRuneInsert(r rune) {
}
}
func (h *BufPane) VSplitBuf(buf *buffer.Buffer) {
func (h *BufPane) VSplitBuf(buf *buffer.Buffer) *BufPane {
e := NewBufPaneFromBuf(buf)
e.splitID = MainTab().GetNode(h.splitID).VSplit(h.Buf.Settings["splitright"].(bool))
MainTab().Panes = append(MainTab().Panes, e)
MainTab().Resize()
MainTab().SetActive(len(MainTab().Panes) - 1)
return e
}
func (h *BufPane) HSplitBuf(buf *buffer.Buffer) {
func (h *BufPane) HSplitBuf(buf *buffer.Buffer) *BufPane {
e := NewBufPaneFromBuf(buf)
e.splitID = MainTab().GetNode(h.splitID).HSplit(h.Buf.Settings["splitbottom"].(bool))
MainTab().Panes = append(MainTab().Panes, e)
MainTab().Resize()
MainTab().SetActive(len(MainTab().Panes) - 1)
return e
}
func (h *BufPane) Close() {
h.Buf.Close()

View File

@@ -51,7 +51,7 @@ func InitCommands() {
"tab": Command{(*BufPane).NewTabCmd, buffer.FileComplete},
"help": Command{(*BufPane).HelpCmd, HelpComplete},
"eval": Command{(*BufPane).EvalCmd, nil},
"togglelog": Command{(*BufPane).ToggleLogCmd, nil},
"log": Command{(*BufPane).ToggleLogCmd, nil},
"plugin": Command{(*BufPane).PluginCmd, nil},
"reload": Command{(*BufPane).ReloadCmd, nil},
"reopen": Command{(*BufPane).ReopenCmd, nil},
@@ -117,6 +117,30 @@ func CommandAction(cmd string) BufKeyAction {
// PluginCmd installs, removes, updates, lists, or searches for given plugins
func (h *BufPane) PluginCmd(args []string) {
if len(args) <= 0 {
InfoBar.Error("Not enough arguments, see 'help commands'")
return
}
valid := true
switch args[0] {
case "list":
for _, pl := range config.Plugins {
var en string
if pl.IsEnabled() {
en = "enabled"
} else {
en = "disabled"
}
WriteLog(fmt.Sprintf("%s: %s\n", pl.Name, en))
}
default:
valid = false
}
if valid && h.Buf.Type != buffer.BTLog {
OpenLogBuf(h)
}
}
// RetabCmd changes all spaces to tabs or all tabs to spaces
@@ -248,6 +272,11 @@ func (h *BufPane) OpenCmd(args []string) {
// ToggleLogCmd toggles the log view
func (h *BufPane) ToggleLogCmd(args []string) {
if h.Buf.Type != buffer.BTLog {
OpenLogBuf(h)
} else {
h.Quit()
}
}
// ReloadCmd reloads all files (syntax files, colorschemes...)
@@ -818,6 +847,8 @@ func (h *BufPane) HandleCommand(input string) {
if _, ok := commands[inputCmd]; !ok {
InfoBar.Error("Unknown command ", inputCmd)
} else {
WriteLog("> " + input + "\n")
commands[inputCmd].action(h, args[1:])
WriteLog("\n")
}
}

View File

@@ -1,11 +1,42 @@
package action
import "github.com/zyedidia/micro/internal/buffer"
var InfoBar *InfoPane
var LogBufPane *BufPane
func InitGlobals() {
InfoBar = NewInfoBar()
buffer.LogBuf = buffer.NewBufferFromString("", "Log", buffer.BTLog)
}
func GetInfoBar() *InfoPane {
return InfoBar
}
func WriteLog(s string) {
buffer.WriteLog(s)
if LogBufPane != nil {
LogBufPane.CursorEnd()
v := LogBufPane.GetView()
endY := buffer.LogBuf.End().Y
if endY > v.StartLine+v.Height {
v.StartLine = buffer.LogBuf.End().Y - v.Height + 2
LogBufPane.SetView(v)
}
}
}
func OpenLogBuf(h *BufPane) {
LogBufPane = h.HSplitBuf(buffer.LogBuf)
LogBufPane.CursorEnd()
v := LogBufPane.GetView()
endY := buffer.LogBuf.End().Y
if endY > v.StartLine+v.Height {
v.StartLine = buffer.LogBuf.End().Y - v.Height + 2
LogBufPane.SetView(v)
}
}

View File

@@ -27,6 +27,7 @@ import (
var (
OpenBuffers []*Buffer
LogBuf *Buffer
)
// The BufType defines what kind of buffer this is
@@ -775,3 +776,7 @@ func ParseCursorLocation(cursorPositions []string) (Loc, error) {
func (b *Buffer) Line(i int) string {
return string(b.LineBytes(i))
}
func WriteLog(s string) {
LogBuf.EventHandler.Insert(LogBuf.End(), s)
}