diff --git a/input_parser/input_parser.go b/input_parser/input_parser.go index 1dafffc..19e71aa 100644 --- a/input_parser/input_parser.go +++ b/input_parser/input_parser.go @@ -81,7 +81,7 @@ func input_str(env *environment.Env) string { for { r_rune, _, err := reader.ReadRune() if err != nil { - fmt.Print(fmt.Sprintf("Error reading user input: ", err.Error())) + fmt.Print(fmt.Sprintf("Error reading user input: %s", err.Error())) } switch r_rune { case 3: // ^C @@ -90,10 +90,9 @@ func input_str(env *environment.Env) string { case 4: // ^D input = "exit" goto loop_exit - case 65: // UPP - if history_index > 0 { - history_index-- - input = env.History[history_index] + case 27: // UPP + if r, _, _ := reader.ReadRune(); r != 91 { + break } case 66: // DOWN if history_index < len(env.History)-2 { @@ -102,9 +101,21 @@ func input_str(env *environment.Env) string { } else { history_index = len(env.History)-1 input = "" + if r, _, _ := reader.ReadRune(); r == 65 { // UPP + if history_index > 0 { + history_index-- + input = env.History[history_index] + } + } + if r, _, _ := reader.ReadRune(); r != 66 { //DOWN + if history_index < len(env.History)-1 { + history_index++ + input = env.History[history_index] + } else { + input = "" + } + } } - case 67: // LEFT - case 68: // RIGHT case 127: //packspace if len(input) > 0 { input = input[:len(input)-1] @@ -120,7 +131,7 @@ func input_str(env *environment.Env) string { fmt.Print(" > ") fmt.Print(input) } - loop_exit: +loop_exit: term.Restore(int(std_fd), term_restore) fmt.Println() return input diff --git a/input_parser/test_test.go b/input_parser/test_test.go index 6e3efd7..aeecfa1 100644 --- a/input_parser/test_test.go +++ b/input_parser/test_test.go @@ -14,7 +14,7 @@ func TestParse(t *testing.T) { } func TestInput(t *testing.T) { - + input := input_str(&environment.Env{}) fmt.Println(input) }