Skip to content

Commit 9eb65ca

Browse files
committed
log: understand hierarchical names
For example a log "foo.bar" can be enabled with both "foo" and "foo.bar"
1 parent 52bcb4a commit 9eb65ca

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

language-server/dm/log.ml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,32 @@ let write_to_init_log str =
3333
flush oc)
3434
init_log
3535

36+
let selects name x =
37+
let rec aux = function
38+
| [y] -> x = y
39+
| y :: z :: more -> x = y || aux ((y ^ "." ^ z) ::more)
40+
| [] -> false
41+
in
42+
aux @@ String.split_on_char '.' name
43+
3644
let rec is_enabled name = function
3745
| [] -> false
3846
| "-vsrocq-d" :: "all" :: _ -> true
3947
| "-vsrocq-d" :: v :: rest ->
40-
List.mem name (String.split_on_char ',' v) || is_enabled name rest
48+
List.exists (selects name) (String.split_on_char ',' v) || is_enabled name rest
4149
| _ :: rest -> is_enabled name rest
4250

51+
let is_enabled_env name s =
52+
is_enabled name @@ String.split_on_char ',' s
53+
4354
let logs = ref []
4455

4556
let handle_event s = Printf.eprintf "%s\n" s
4657

4758
let mk_log name =
4859
logs := name :: !logs;
49-
let flag = is_enabled name (Array.to_list Sys.argv) in
60+
let flag = is_enabled_env name (try Sys.getenv "VSROCQ_ARGS" with Not_found -> "") in
61+
let flag = flag || is_enabled name (Array.to_list Sys.argv) in
5062
let flag_init = is_enabled "init" (Array.to_list Sys.argv) in
5163
write_to_init_log ("log fun () -> " ^ name ^ " is " ^ if flag then "on" else "off");
5264
Log (fun ?(force=false) msg ->

0 commit comments

Comments
 (0)