[ANN] VSCode OCaml Platform 1.9.0

On behalf of our vscode team, I’m excited to announce the long awaited version 1.9.0 of our vscode extension.

This release is rich in new features, but I’d like to highlight one in particular. @arozovyk added a full blown interactive AST explorer for PPX development. So long to flipping back and forth between your project and parsetree.mli during development.

This release also features work from three new contributors: @tatchi, @SaySayo and @arozovyk. I thank them for their work and wish them luck in participating in our cozy open source community.

Happy Hacking.


  • Dune syntax highlighting fix (#742)

    The syntax for dune files has been re-written from scratch for a more correct
    implementation. Every dune stanza documented by Dune is now supported, and
    only the correct fields in each stanza are recognized.

  • Fix the detection of opam’s root directory when no switch is detected (#831)

  • Add support for opening compilation artifacts in human-readable form in the
    editor (#798)

    Currently supported artifacts include .cmi, .cmt(i), .cmo, .cma,
    .cmx(a/s), and .bc files.

    To learn more about these files, see: OCaml - Batch compilation (ocamlc)

  • Warn if the extension sees not the latest OCaml-LSP version compatible with
    the OCaml distribution installed in the current sandbox.

  • Highlighted the UNREACHABLE element in cram .t files (#754)

  • Activate extension on cram files, or when the workspace contains
    dune-workspace or dune files. (#750)

  • Add commands Jump to Next Typed Hole (shortcut: Alt + L) and
    Jump to Previous Typed Hole (shortcut: Alt + Shift + L)

    What typed holes are

    Merlin has a concept of “typed holes” that are syntactically represented as
    _. Files that incorporate typed holes are not considered valid OCaml, but
    Merlin and OCaml-LSP support them. One example when such typed holes can occur
    is when one “destructs” a value, e.g., destructing (Some 1) will generate
    code match Some 1 with Some _ -> _ | None -> _. While the first underscore
    is a valid “match-all”/wildcard pattern, the rest of underscores are typed
    holes that one needs to replace with valid OCaml code. These new commands help
    to navigate easily from one hole to another (#643)

  • Rename the extension’s section in VS Code Settings from OCaml configuration
    to OCaml Platform (#674)

  • Add ocaml.server.extraEnv configuration option to pass extra environment
    variables to the language server, i.e., OCaml-LSP (#674)

  • Parsetree exploration and development tools. It is now possible to explore the
    structure of the parsetree in a custom editor. Additionally, it is possible to
    view preprocessed source of any OCaml source file (when applicable). Full
    functionality is available only for dune projects. (#666)

  • Add commands Show OCaml Language Server Output,
    Show OCaml Platform Extension Output, and Show OCaml Commands Output.

  • Fix highlighting of escaped odoc source code braces (#690)

  • opam exec is now called with --set-switch flag; this is useful when we
    launch a terminal within a certain sandbox set in the extension (#744, fixes

  • The currently active OPAM switch in the workspace folder (project root) is
    shown first in the list of sandboxes when selecting a sandbox. (#751)

  • Show a different icon for the currently active OPAM switch in the “OPAM
    Switches” tree view (#751)


Integrated AST explorer is pretty rad!


I typed:

$ opam update
$ opam upgrade
$ eval $(opam env)

and when I launch VSCode, it says: “The installed version of ocamllsp is out of date. You may be missing out on cool features or important bug fixes. Consider upgrading the package ocaml-lsp-server. Source: OCaml Platform (Extension)”

When I click on “Manage Extension”, the page describing OCaml Platform v1.9.0 indicates “build failing” with a link to Actions · ocamllabs/vscode-ocaml-platform · GitHub which has failures.

I checked that my version of ocaml-lsp-server is 1.10.1

Does it mean that the new version is not yet available ?


No, it just means that our check on the client side is a little too aggressive. We’ll fix it or get rid of it shortly. Meanwhile, just ignore it as it is harmless.

1 Like