--- tags: drafts --- # VSCode Roadmap (drafts) ## Milestone 1 - Tools bootstrapping - [X] Automatic installation of platform tools - LSP - ocamlformat - odoc - utop - [ ] Automatic installation of Opam ## Milestone 2 - Newcomers ♥️ - [ ] Generate new OCaml projects - [ ] Explore Opam libraries - [ ] Documentation preview with docs.ocaml.org - [ ] Welcome page ## Milestone 3 - RPC FTW - [ ] Integrate Dune RPC for error reporting - [ ] Integrate Dune RPC for promotions - [ ] Integrate Dune RPC for executable lists - [ ] Integrate Dune RPC for tests lists ## Backlog ### LSP - Support OCaml 4.12 - Semantic highlighting - Integrate Dune RPC for error reporting (WIP @rgrinberg @tmattio) - Integrate Dune RPC for promotions (WIP @rgrinberg @tmattio) - Support requests - textDocument/signatureHelp - textDocument/implementation - textDocument/documentColor - textDocument/colorPresentation - textDocument/formatting - textDocument/rangeFormatting - textDocument/onTypeFormatting - textDocument/prepareRename - textDocument/foldingRange - textDocument/selectionRange - workspace/symbol - Support remote LSP server ### VSCode extension - Interactive development with notebooks - Documentation preview with docs.ocaml.org - Improve REPL - Run file - Evaluate expression in editor (no terminal) - Improve UI - Pin/unpin packages - Display outdated packages - Generate new OCaml projects - Debugger (WIP @hackwaly) - PPX inlining (WIP @artemiy) - Explore AST (WIP @artemiy) - Automatic installation of Opam - Support running tests for CRAM files - Support running tests for dune tests - Support running binaries for dune executables - Support multi-root workspaces - Welcome page ### Platform tools With VSCode use case in mind, here is a list of improvements on the different tools that would make the integration in VSCode easier: - OCaml compiler does not have to be recompiled for every switch - There is no sandbox selection workflow: one project = one sandbox / switch - The state of the environment can be read from Opam / Dune in a machine readable form - Installed packages - Pinned packages - Outdated packages - Opam is available on Windows - Platform tools don't conflict with project dependencies - Utop is installed when running dune utop if not installed - Odoc is installed when running dune @doc if not installed - ocamlformat can format projects with older versions of ocamlformat - ocamlformat can format projects without `.ocamlformat` files