Mercurial > hg > dml-home
changeset 46:0f96024b657e
Improved Prolog persistent history handling.
author | samer |
---|---|
date | Wed, 25 Mar 2015 12:09:47 +0000 |
parents | 3d468b1d54bf |
children | e487c33c89ae |
files | .plrc |
diffstat | 1 files changed, 23 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/.plrc Tue Mar 24 23:33:40 2015 +0000 +++ b/.plrc Wed Mar 25 12:09:47 2015 +0000 @@ -1,19 +1,32 @@ :- op(200,fy,@). persistent_history(H) :- - prolog_history(disable), + debug(history,'Will use persistent history in "~s".',[H]), + prolog_history(disable), (exists_file(H) -> rl_read_history(H); true), - current_prolog_flag(argv,ARGV), - get_time(Now), - format_time(string(Time),'%+',Now), - format(atom(Header),'% Start: ~w - argv=~w.\n',[Time,ARGV]), - rl_add_history(Header), - alarm(60,periodic_save_history(H),_,[remove(true)]), - at_halt(rl_write_history(H)). + history_sign_on(H), + periodic_save_history(H), + at_halt(history_sign_off(H)). + +history_sign_on(H) :- + current_prolog_flag(os_argv,ARGV), + get_time(Now), + format_time(atom(Time),'%+',Now), + atomics_to_string(ARGV," ",Command), + format(atom(Header),'% Start: ~w - ~s\n',[Time,Command]), + rl_add_history(Header). + +history_sign_off(H) :- + get_time(Now), + format_time(atom(Time),'%+',Now), + atomics_to_string(ARGV," ",Command), + format(atom(Header),'% Halt: ~w\n',[Time]), + rl_add_history(Header). periodic_save_history(H) :- - rl_write_history(H), - alarm(60,periodic_save_history(H),_,[remove(true)]). + debug(history,'Saving history to "~s"...',[H]), + rl_write_history(H), + alarm(60,periodic_save_history(H),_,[remove(true)]). colour_terminal :- stream_property(user_output, tty(true)),