add history-expand and its test cases

This commit is contained in:
Sunrim KIM (keen) 2014-08-09 15:00:45 +09:00
parent d3acad378c
commit 114d4b5163
2 changed files with 27 additions and 0 deletions

View File

@ -232,6 +232,21 @@ pic_rl_truncate_file(pic_state *pic)
return pic_undef_value();
}
static pic_value
pic_rl_history_expand(pic_state *pic)
{
char *input, *result;
int status;
pic_get_args(pic, "z", &input);
status = history_expand(input, &result);
if(status == -1 || status == 2)
pic_errorf(pic, "%s\n", result);
return pic_obj_value(pic_str_new_cstr(pic, result));
}
void
pic_init_readline(pic_state *pic){
using_history();
@ -258,5 +273,6 @@ pic_init_readline(pic_state *pic){
pic_defun(pic, "read-history", pic_rl_read_history);
pic_defun(pic, "write-history", pic_rl_write_history);
pic_defun(pic, "truncate-file", pic_rl_truncate_file);
pic_defun(pic, "history-expand", pic_rl_history_expand);
}
}

View File

@ -324,5 +324,16 @@ pos 1
(truncate-file testfile 5)
;(read-history testfile)
(test 5 (history-length))
(clear-history)
(add-history "foo")
(add-history "bar")
(add-history "baz")
(test "baz" (history-expand "!b"))
(test "baz" (history-expand "!!"))
(test "bar" (history-expand "!?r?"))
(add-history "com arg")
(test "arg" (history-expand "!!:$"))
(test "arg" (history-expand "!$"))
(test "command arg" (history-expand "!!:s/com/command/"))
(test-end)