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)),