more history settings
Ignore-this: d048fb6bc7cc235fdc4ea6c75d4525a4 darcs-hash:20120212193712-c41ad-96b5f2057ff55811cdd90a8e8ae2be3e4af3d4d3
This commit is contained in:
parent
361d6459f6
commit
8725e10070
|
@ -17,7 +17,14 @@ module String_set = Set.Make(String)
|
||||||
|
|
||||||
let version = UTop_version.version
|
let version = UTop_version.version
|
||||||
|
|
||||||
|
(* +-----------------------------------------------------------------+
|
||||||
|
| History |
|
||||||
|
+-----------------------------------------------------------------+ *)
|
||||||
|
|
||||||
let history = LTerm_history.create []
|
let history = LTerm_history.create []
|
||||||
|
let history_file_name = ref (Some (Filename.concat LTerm_resources.home ".utop-history"))
|
||||||
|
let history_file_max_size = ref None
|
||||||
|
let history_file_max_entries = ref None
|
||||||
|
|
||||||
(* +-----------------------------------------------------------------+
|
(* +-----------------------------------------------------------------+
|
||||||
| Hooks |
|
| Hooks |
|
||||||
|
|
|
@ -14,19 +14,6 @@ open React
|
||||||
val version : string
|
val version : string
|
||||||
(** Version of utop. *)
|
(** Version of utop. *)
|
||||||
|
|
||||||
val history : LTerm_history.t
|
|
||||||
(** The history used by utop. You can configure limits using the
|
|
||||||
[LTerm_history] module.
|
|
||||||
|
|
||||||
For example if you want to limit the history to 1000 line, add
|
|
||||||
these lines to your ~/.ocamlinit file:
|
|
||||||
|
|
||||||
{[
|
|
||||||
#require "lambda-term";;
|
|
||||||
LTerm_history.set_max_entries UTop.history 1000;;
|
|
||||||
]}
|
|
||||||
*)
|
|
||||||
|
|
||||||
val count : int React.signal
|
val count : int React.signal
|
||||||
(** The number of commands already executed. *)
|
(** The number of commands already executed. *)
|
||||||
|
|
||||||
|
@ -84,6 +71,34 @@ val get_auto_run_lwt : unit -> bool
|
||||||
val set_auto_run_lwt : bool -> unit
|
val set_auto_run_lwt : bool -> unit
|
||||||
(** Modifies {!auto_run_lwt}. *)
|
(** Modifies {!auto_run_lwt}. *)
|
||||||
|
|
||||||
|
(** {6 History} *)
|
||||||
|
|
||||||
|
val history : LTerm_history.t
|
||||||
|
(** The history used by utop. You can configure limits using the
|
||||||
|
[LTerm_history] module.
|
||||||
|
|
||||||
|
For example if you want to limit the history to 1000 line, add
|
||||||
|
these lines to your ~/.ocamlinit file:
|
||||||
|
|
||||||
|
{[
|
||||||
|
#require "lambda-term";;
|
||||||
|
LTerm_history.set_max_entries UTop.history 1000;;
|
||||||
|
]}
|
||||||
|
*)
|
||||||
|
|
||||||
|
val history_file_name : string option ref
|
||||||
|
(** Name of the history file. If [None], no history will be loaded
|
||||||
|
or saved. *)
|
||||||
|
|
||||||
|
val history_file_max_size : int option ref
|
||||||
|
(** Maximum size of the history file. If [None] (the default) the
|
||||||
|
maximum size of [history] will be used. *)
|
||||||
|
|
||||||
|
val history_file_max_entries : int option ref
|
||||||
|
(** Maximum entries to store in the history file. If [None] (the
|
||||||
|
default) the maximum number of entries if [history] will be
|
||||||
|
used. *)
|
||||||
|
|
||||||
(** {6 Console specific configuration} *)
|
(** {6 Console specific configuration} *)
|
||||||
|
|
||||||
type profile = Dark | Light
|
type profile = Dark | Light
|
||||||
|
|
|
@ -23,14 +23,26 @@ module String_set = Set.Make(String)
|
||||||
+-----------------------------------------------------------------+ *)
|
+-----------------------------------------------------------------+ *)
|
||||||
|
|
||||||
let init_history () =
|
let init_history () =
|
||||||
let fn = Filename.concat LTerm_resources.home ".utop-history" in
|
|
||||||
(* Save history on exit. *)
|
(* Save history on exit. *)
|
||||||
Lwt_main.at_exit (fun () -> LTerm_history.save UTop.history ~append:true fn);
|
Lwt_main.at_exit
|
||||||
|
(fun () ->
|
||||||
|
match !UTop.history_file_name with
|
||||||
|
| None ->
|
||||||
|
return ()
|
||||||
|
| Some fn ->
|
||||||
|
try_lwt
|
||||||
|
LTerm_history.save UTop.history ?max_size:!UTop.history_file_max_size ?max_entries:!UTop.history_file_max_entries fn
|
||||||
|
with Unix.Unix_error (error, func, arg) ->
|
||||||
|
Lwt_log.error_f "cannot save history to %S: %s: %s" fn func (Unix.error_message error));
|
||||||
(* Load history. *)
|
(* Load history. *)
|
||||||
try_lwt
|
match !UTop.history_file_name with
|
||||||
LTerm_history.load UTop.history fn
|
| None ->
|
||||||
with Unix.Unix_error (error, func, arg) ->
|
return ()
|
||||||
Lwt_log.error_f "cannot load history from %S: %s: %s" fn func (Unix.error_message error)
|
| Some fn ->
|
||||||
|
try_lwt
|
||||||
|
LTerm_history.load UTop.history fn
|
||||||
|
with Unix.Unix_error (error, func, arg) ->
|
||||||
|
Lwt_log.error_f "cannot load history from %S: %s: %s" fn func (Unix.error_message error)
|
||||||
|
|
||||||
(* +-----------------------------------------------------------------+
|
(* +-----------------------------------------------------------------+
|
||||||
| offset --> index |
|
| offset --> index |
|
||||||
|
@ -667,11 +679,14 @@ let main_aux () =
|
||||||
(* Install our out phrase printer. *)
|
(* Install our out phrase printer. *)
|
||||||
Toploop.print_out_phrase := print_out_phrase term !Toploop.print_out_phrase;
|
Toploop.print_out_phrase := print_out_phrase term !Toploop.print_out_phrase;
|
||||||
(* Load user data. *)
|
(* Load user data. *)
|
||||||
Lwt_main.run (join [init_history (); UTop_styles.load (); load_inputrc ()]);
|
Lwt_main.run (join [UTop_styles.load (); load_inputrc ()]);
|
||||||
(* Display a welcome message. *)
|
(* Display a welcome message. *)
|
||||||
Lwt_main.run (welcome term);
|
Lwt_main.run (welcome term);
|
||||||
(* Common initialization. *)
|
(* Common initialization. *)
|
||||||
common_init ();
|
common_init ();
|
||||||
|
(* Load history after the initialization file so the user can
|
||||||
|
change the history file name. *)
|
||||||
|
Lwt_main.run (init_history ());
|
||||||
(* Print help message. *)
|
(* Print help message. *)
|
||||||
print_string "\nType #utop_help for help about using utop.\n\n";
|
print_string "\nType #utop_help for help about using utop.\n\n";
|
||||||
flush stdout;
|
flush stdout;
|
||||||
|
|
Loading…
Reference in New Issue