diff --git a/input_parser/input_parser.go b/input_parser/input_parser.go index 1dafffc..b4e0db6 100644 --- a/input_parser/input_parser.go +++ b/input_parser/input_parser.go @@ -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,20 @@ 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]