changeset 54:6fea6e085b81

Added some hg ignores, added .swiplrc for swipl >=7.3.0
author daniel
date Thu, 14 May 2015 15:38:03 +0100
parents c7720fefea26
children 5038e67f3a6d
files .hgignore .swiplrc
diffstat 2 files changed, 91 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Thu May 14 15:35:04 2015 +0100
+++ b/.hgignore	Thu May 14 15:38:03 2015 +0100
@@ -44,3 +44,7 @@
 ^.Rprofile
 ^.julia_history
 ^var/dml/.dml.history
+^var/dml/httpd.log
+^.xpce/
+^.elinks/
+^.blackboxrc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.swiplrc	Thu May 14 15:38:03 2015 +0100
@@ -0,0 +1,87 @@
+:- op(200,fy,@).
+
+:- dynamic persistent_history_file/1.
+persistent_history(H) :- persistent_history(H,60).
+persistent_history(H,Interval) :-
+   (  persistent_history_file(H) -> true
+   ;  persistent_history_file(H1) -> throw(persistent_history_mismatch(H1,H))
+   ;  debug(history,'Will use persistent history in "~s", saving every ~d seconds.',[H,Interval]),
+      prolog_history(disable),
+      (exists_file(H) -> rl_read_history(H); true),
+      assert(persistent_history_file(H)),
+      current_prolog_flag(os_argv,ARGV),
+      atomics_to_string(ARGV," ",Command),
+      history_event('Start: ~s',[Command]),
+      periodic_save_history(Interval),
+      at_halt(history_event('Halt',[]))
+   ).
+
+history_event(Msg,Args) :-
+   persistent_history_file(H),
+   get_time(Now),
+   format_time(string(Time),'%+',Now),
+   format(string(Info),Msg,Args),
+   format(atom(Line),'% ~w | ~s',[Time,Info]),
+   debug(history,'History event: ~s',[Line]),
+   rl_add_history(Line),
+   rl_write_history(H).
+
+
+periodic_save_history(Interval) :-
+   persistent_history_file(H),
+   debug(history,'Saving history to "~s"...',[H]),
+   rl_write_history(H),
+   alarm(Interval,periodic_save_history(Interval),_,[remove(true)]).
+
+colour_terminal :- 
+	stream_property(user_output, tty(true)),
+	getenv('TERM',Term),
+	member(Term,[xterm,screen,'screen-256color','xterm-256color','xterm-color']).
+
+:- dynamic http_proxy/3.
+
+get_http_proxy(Host,Port,basic(User,Pwd)) :-
+	getenv(use_proxy,yes),
+	getenv(http_proxy,Proxy),
+	% proxy looks like http://User:Password@Host:Port
+	atom_concat('http://',Proxy1,Proxy), % strip off protocol
+	split_atom(Proxy1,Auth,'@',HostPort),
+	split_atom(Auth,User,':',Pwd),
+	split_atom(HostPort,Host,':',APort),
+	atom_number(APort,Port).
+
+split_atom(Atom,Pre,Mid,Post) :-
+	sub_atom(Atom,LPre,_,LPost,Mid),
+	sub_atom(Atom,0,LPre,_,Pre),
+	sub_atom(Atom,_,LPost,0,Post).
+	
+internal_host(localhost).
+internal_host(Host) :- sub_atom(Host,_,_,0,'bl.uk').
+
+:- multifile http:open_options/2.
+http:open_options(Parts,[proxy(Host,Port),proxy_authorization(Auth)|Opts]) :-
+	http_proxy(Host,Port,Auth),
+	option(host(Target),Parts),
+	\+internal_host(Target),
+	debug(proxy,'Using HTTP proxy ~w:~w for ~w',[Host,Port,Target]),
+	debug(proxy,'Parts: ~w',[Parts]),
+	( option(scheme(https),Parts)
+	->	debug(proxy,'Using HTTPS',[]),
+		Opts=[cert_verify_hook(verify_certificate)]
+	;	Opts=[]
+	).
+
+verify_certificate(_,_,_,_,_) :- format(user_error,'Accepting certificate\n',[]).
+
+:- %persistent_history('.swipl_history'),
+	(colour_terminal -> load_files(library(ansi_term), [silent(true)]); true),
+	set_prolog_flag(prompt_alternatives_on, determinism),
+	set_prolog_flag(editor, '$EDITOR'),
+	load_files(library(url), [silent(true)]),
+	load_files(library(http/http_ssl_plugin), [silent(true)]),
+	(	get_http_proxy(Host,Port,Auth) 
+	->	assert(http_proxy(Host,Port,Auth))
+	;	true
+	).
+
+