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