add history-expand and its test cases
This commit is contained in:
		
							parent
							
								
									d3acad378c
								
							
						
					
					
						commit
						114d4b5163
					
				| 
						 | 
				
			
			@ -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);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue