如何配置ocamlformat使其不对指定特殊注释进行格式化
解决方案
方案1:使用odoc verbatim块(优先推荐,适用于文档注释)
如果你的注释是用于生成文档的(** ... *)类型注释,直接将ASCII艺术内容包裹在odoc的{[ ... ]} verbatim块内即可,ocamlformat默认不会修改verbatim块内的排版,同时生成文档时也会保留原始格式:
(** {[ 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 ]} *)
方案2:使用局部ocamlformat开关(适用于普通注释)
如果是不需要进入文档的普通(* ... *)注释,使用ocamlformat官方支持的局部开关包裹注释即可,开关仅作用于中间的内容,不会影响其他代码的格式化:
版本适配:
- ocamlformat 0.20及以上版本,可以直接用注释形式开关:
(* ocamlformat-disable *) (* 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-enable *)
- 更低版本可以用浮动属性开关:
[@@@ocamlformat "disable"] (* 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 "enable"]
你之前的方案问题在于将[@ocamlformat "disable"]属性绑定到了let绑定的表达式上,因此会禁用整个let项的格式化,改用上述局部开关仅包裹注释,就不会影响其他代码的格式化逻辑。
内容的提问来源于stack exchange,提问作者laptou
相关产品推荐
相关产品推荐

