From 7dc1abcb93c27f4ffb61a308a48a3b3948237c73 Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Tue, 25 Oct 2022 13:28:19 +0200 Subject: [PATCH] [lint] load OCP-Indent config once --- tools/lint/lint.ml | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/tools/lint/lint.ml b/tools/lint/lint.ml index 3b5cbf3ca1d..e6a5c94ebe2 100644 --- a/tools/lint/lint.ml +++ b/tools/lint/lint.ml @@ -172,16 +172,26 @@ let check_eoleof ~update content = been removed and the printer changed so that it prints into a buffer and not a file. *) + +let global_config = ref None +let config () = + match !global_config with + | None -> + let config, syntaxes, dlink = IndentConfig.local_default () in + IndentLoader.load ~debug:false dlink ; + Approx_lexer.disable_extensions (); + List.iter + (fun stx -> + try Approx_lexer.enable_extension stx + with IndentExtend.Syntax_not_found name -> + Format.eprintf "Warning: unknown syntax extension %S@." name) + syntaxes ; + global_config := Some config ; + config + | Some config -> config + let ocp_indent channel = - let config, syntaxes, dlink = IndentConfig.local_default () in - IndentLoader.load ~debug:false dlink ; - Approx_lexer.disable_extensions (); - List.iter - (fun stx -> - try Approx_lexer.enable_extension stx - with IndentExtend.Syntax_not_found name -> - Format.eprintf "Warning: unknown syntax extension %S@." name) - syntaxes ; + let config = config () in let buffer = Buffer.create 0 in let out = IndentPrinter.{ debug = false; config = config; indent_empty = false; adaptive = true; -- GitLab