func simpleEditor(v *gocui.View, key gocui.Key, ch rune, mod gocui.Modifier) { var tab = false var inHistroy = false switch { case key == gocui.KeyTab: tab = true case ch != 0 && mod == 0: v.EditWrite(ch) case key == gocui.KeySpace: v.EditWrite(' ') case key == gocui.KeyBackspace || key == gocui.KeyBackspace2: v.EditDelete(true) case key == gocui.KeyDelete: v.EditDelete(false) case key == gocui.KeyInsert: v.Overwrite = !v.Overwrite case key == gocui.KeyEnter: if line := v.ViewBuffer(); len(line) > 0 { GetLine(Server.Gui, v) } // v.EditNewLine() // v.Rewind() case key == gocui.KeyArrowDown: inHistroy = true if line := InputHistory.Next(); len(line) > 0 { v.Clear() fmt.Fprint(v, line) v.SetCursor(len(v.Buffer()), 0) } case key == gocui.KeyArrowUp: inHistroy = true if line := InputHistory.Prev(); len(line) > 0 { v.Clear() fmt.Fprint(v, line) v.SetCursor(len(v.Buffer()), 0) } case key == gocui.KeyArrowLeft: v.MoveCursor(-1, 0, false) case key == gocui.KeyArrowRight: cx, _ := v.Cursor() line := v.ViewBuffer() logger.Logger.Println(len(line), cx) logger.Logger.Println(spew.Sdump(line)) // if cx == 0 { // v.MoveCursor(-1, 0, false) if cx < len(line)-1 { v.MoveCursor(1, 0, false) } case key == gocui.KeyCtrlA: v.SetCursor(0, 0) case key == gocui.KeyCtrlK: v.Clear() v.SetCursor(0, 0) case key == gocui.KeyCtrlE: v.SetCursor(len(v.Buffer())-1, 0) case key == gocui.KeyCtrlLsqBracket: // logger.Logger.Println("word...") } if !inHistroy { // InputHistory.Current() } if !tab { // logger.Logger.Print("CALL\n") inCacheTab = false cacheTabSearch = "" cacheTabResults = []string{} } }