---
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