update the date in the prompt only at new commands
Ignore-this: e4124f10f7bf14d078d529d688cf1e5 darcs-hash:20110804094320-c41ad-279bb1a2449f896f7b0b368804cc311a8bf85c42
This commit is contained in:
parent
05b2b2cf30
commit
3729d42a91
15
src/uTop.ml
15
src/uTop.ml
|
@ -32,6 +32,15 @@ let default_keywords = [
|
||||||
let keywords = ref (List.fold_left (fun set kwd -> String_set.add kwd set) String_set.empty default_keywords)
|
let keywords = ref (List.fold_left (fun set kwd -> String_set.add kwd set) String_set.empty default_keywords)
|
||||||
let add_keyword kwd = keywords := String_set.add kwd !keywords
|
let add_keyword kwd = keywords := String_set.add kwd !keywords
|
||||||
|
|
||||||
|
(* +-----------------------------------------------------------------+
|
||||||
|
| Hooks |
|
||||||
|
+-----------------------------------------------------------------+ *)
|
||||||
|
|
||||||
|
let new_command_hooks = Lwt_sequence.create ()
|
||||||
|
let at_new_command f = ignore (Lwt_sequence.add_l f new_command_hooks)
|
||||||
|
let new_prompt_hooks = Lwt_sequence.create ()
|
||||||
|
let at_new_prompt f = ignore (Lwt_sequence.add_l f new_prompt_hooks)
|
||||||
|
|
||||||
(* +-----------------------------------------------------------------+
|
(* +-----------------------------------------------------------------+
|
||||||
| Prompts |
|
| Prompts |
|
||||||
+-----------------------------------------------------------------+ *)
|
+-----------------------------------------------------------------+ *)
|
||||||
|
@ -46,8 +55,12 @@ let key_sequence = UTop_private.key_sequence
|
||||||
|
|
||||||
let count = UTop_private.count
|
let count = UTop_private.count
|
||||||
|
|
||||||
|
let time = ref 0.
|
||||||
|
|
||||||
|
let () = at_new_prompt (fun () -> time := Unix.time ())
|
||||||
|
|
||||||
let make_prompt profile count size key_sequence (recording, macro_count, macro_counter) =
|
let make_prompt profile count size key_sequence (recording, macro_count, macro_counter) =
|
||||||
let tm = Unix.localtime (Unix.time ()) in
|
let tm = Unix.localtime !time in
|
||||||
let color dark light =
|
let color dark light =
|
||||||
match profile with
|
match profile with
|
||||||
| Dark -> dark
|
| Dark -> dark
|
||||||
|
|
17
src/uTop.mli
17
src/uTop.mli
|
@ -53,3 +53,20 @@ val prompt_comment : LTerm_text.t React.signal ref
|
||||||
|
|
||||||
For compatibility with ocaml error printing, it must ends with a
|
For compatibility with ocaml error printing, it must ends with a
|
||||||
line of length 2. *)
|
line of length 2. *)
|
||||||
|
|
||||||
|
(** {6 Hooks} *)
|
||||||
|
|
||||||
|
val new_command_hooks : (unit -> unit) Lwt_sequence.t
|
||||||
|
(** Functions called before each new command. *)
|
||||||
|
|
||||||
|
val at_new_command : (unit -> unit) -> unit
|
||||||
|
(** [at_new_command f] adds [f] to the hooks executed before each
|
||||||
|
new commands. *)
|
||||||
|
|
||||||
|
val new_prompt_hooks : (unit -> unit) Lwt_sequence.t
|
||||||
|
(** Functions executed before each new prompt, including
|
||||||
|
continuation prompts. *)
|
||||||
|
|
||||||
|
val at_new_prompt : (unit -> unit) -> unit
|
||||||
|
(** [at_new_prompt f] adds [f] to the hooks executed before each new
|
||||||
|
prompt. *)
|
||||||
|
|
|
@ -438,7 +438,9 @@ object(self)
|
||||||
(* Set the source signal for the key sequence. *)
|
(* Set the source signal for the key sequence. *)
|
||||||
UTop_private.set_key_sequence self#key_sequence;
|
UTop_private.set_key_sequence self#key_sequence;
|
||||||
(* Set the prompt. *)
|
(* Set the prompt. *)
|
||||||
self#set_prompt prompt
|
self#set_prompt prompt;
|
||||||
|
(* Call hooks. *)
|
||||||
|
Lwt_sequence.iter_l (fun f -> f ()) UTop.new_prompt_hooks
|
||||||
end
|
end
|
||||||
|
|
||||||
(* +-----------------------------------------------------------------+
|
(* +-----------------------------------------------------------------+
|
||||||
|
@ -477,6 +479,9 @@ let rec read_input term prompt buffer len =
|
||||||
history := LTerm_read_line.add_entry line !history;
|
history := LTerm_read_line.add_entry line !history;
|
||||||
pending := None);
|
pending := None);
|
||||||
|
|
||||||
|
(* Call hooks. *)
|
||||||
|
Lwt_sequence.iter_l (fun f -> f ()) UTop.new_command_hooks;
|
||||||
|
|
||||||
!UTop.prompt
|
!UTop.prompt
|
||||||
|
|
||||||
| "* " ->
|
| "* " ->
|
||||||
|
|
|
@ -108,9 +108,18 @@ let rec read_input prompt buffer length =
|
||||||
(* Increment the command counter. *)
|
(* Increment the command counter. *)
|
||||||
UTop_private.set_count (React.S.value UTop_private.count + 1);
|
UTop_private.set_count (React.S.value UTop_private.count + 1);
|
||||||
|
|
||||||
send "prompt" ""
|
(* Call hooks. *)
|
||||||
|
Lwt_sequence.iter_l (fun f -> f ()) UTop.new_command_hooks;
|
||||||
|
Lwt_sequence.iter_l (fun f -> f ()) UTop.new_prompt_hooks;
|
||||||
|
|
||||||
|
send "prompt" "";
|
||||||
|
|
||||||
| "* " | " " ->
|
| "* " | " " ->
|
||||||
(* Continuation of the current phrase. *)
|
(* Continuation of the current phrase. *)
|
||||||
|
|
||||||
|
(* Call hooks. *)
|
||||||
|
Lwt_sequence.iter_l (fun f -> f ()) UTop.new_prompt_hooks;
|
||||||
|
|
||||||
send "continue" ""
|
send "continue" ""
|
||||||
| _ ->
|
| _ ->
|
||||||
Printf.ksprintf (send "stderr") "unrecognized prompt %S!" prompt;
|
Printf.ksprintf (send "stderr") "unrecognized prompt %S!" prompt;
|
||||||
|
|
Loading…
Reference in New Issue