Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get ocamlformat to ignore a specific comment

Tags:

ocaml

I have a comment in my code that indicates what is contained inside of a two-dimensional array:

(**

            I               
            N   H           
            F   A           
        A B L A T E         
        B   A         I N T 
        R   T H O U G H     
        A   E       A       
        S           T       
  I N C I N E R A T E
        V                   
        E  
*)

Due to its nature, it needs to be formatted exactly like this. However, whenever I run ocamlformat, it gets reformatted to look like this:

(** I N H F A A B L A T E B A I N T R T H O U G H A E A S T I N C I
    N E R A T E V E  *)

How do I fix this? The closest I've been able to get without affecting anything else is this:

let _ =
  () 
  (*
            I               
            N   H           
            F   A           
        A B L A T E         
        B   A         I N T 
        R   T H O U G H     
        A   E       A       
        S           T       
  I N C I N E R A T E
        V                   
        E   
  *)
  [@ocamlformat "disable"]

But that's not very satisfying. This comment is supposed to be attached to a top-level item, but I can't do that with this method b/c then ocamlformat will be disabled for the entire item. I can't figure out how to disable the comment formatting only.

like image 999
laptou Avatar asked Sep 15 '25 08:09

laptou


1 Answers

You can use [@@ocamlformat "wrap-comments=false"] to disable only the comment-wrapping feature,

let _ =
  () 
  (*
            I               
            N   H           
            F   A           
        A B L A T E         
        B   A         I N T 
        R   T H O U G H     
        A   E       A       
        S           T       
  I N C I N E R A T E
        V                   
        E   
  *)
[@@ocamlformat "wrap-comments=false"]

You can also disable it in .ocamlformat, but since it is already disabled by default, I think it was the intention to have it. You can also disable the feature on a module level, using [@@@ocamlformat "wrap-comments=false"] at the beginning of your file.

As a side note, if you want ocamldoc to preserve the look of the comment in the generated documentation, you should also wrap it in the verbatim tag, e.g., the following will be rendered verbatim,

(** 
   {v 
     If P, then Q.
     Not Q.
     Therefore, not P.
   v}

*)


like image 173
ivg Avatar answered Sep 17 '25 01:09

ivg