Add Dune (OCaml build system)
Description
Dune is a build system for OCaml, used in a large number of OCaml projects. This PR adds classification and syntax highlighting support for it.
I specified ace_mode: lisp because Dune is an Sexp-based language. I'm guessing that this is appropriate.
Checklist:
- [x] I am adding a new language.
- [x] The ~~extension~~ filename of the new language is used in hundreds of repositories on GitHub.com.
- Search results for each file name:
- https://github.com/search?type=code&q=NOT+is%3Afork+path%3A%2F%5Edune%24%2F
- ~~https://github.com/search?type=code&q=NOT+is%3Afork+path%3A%2F%5Edune-file%24%2F~~
- ~~This one is probably justified as it's used by Dune itself, even if just once.~~
- This has now been removed from this PR.
- https://github.com/search?type=code&q=NOT+is%3Afork+path%3A%2F%5Edune-project%24%2F
- https://github.com/search?type=code&q=NOT+is%3Afork+path%3A%2F%5Edune-workspace%24%2F
- "dune-workspace" is the name that has a special meaning in Dune, but it's more common to write it in
dune-workspace.devthen explicitly tell Dune to use that file.
- "dune-workspace" is the name that has a special meaning in Dune, but it's more common to write it in
- https://github.com/search?type=code&q=NOT+is%3Afork+path%3A%2F%5Edune-workspace%5C.dev%24%2F
- Search results for each file name:
- [x] I have included a real-world usage sample for all extensions added in this PR:
- Sample source(s):
- Sample license(s):
- [x] I have included a syntax highlighting grammar: https://github.com/maelvls/vscode-dune
- ocamllabs/vscode-ocaml-platform might be more suitable in the long run, but it errored out when I tried to add it. It also provides grammars for OCaml itself within the same repository, which makes using it more complicated right now.
- [x] I have added a color
- Hex value: #89421e
- Rationale: This is the main color of the Dune logo.
- [ ] I have updated the heuristics to distinguish my language from others using the same extension.
- [x] The ~~extension~~ filename of the new language is used in hundreds of repositories on GitHub.com.
Merged the three previously declared languages into one and rebased onto master.
The split was left over from when I was trying to use ocamllabs/vscode-ocaml-platform (which has the split for different vocabulary), and I left it in by mistake when I switched to maelvls/vscode-dune due to errors when I tried the former.
As an FYI, dune-project currently meets our usage requirements. dune is close. The other two are miles off. In short, everything but dune-project is preventing this PR from being merged.
If you want, you can make this PR just for dune-project and add support for the others as popularity grows. User will be able to use an override in the meantime.
I've dropped the other three file names besides dune-project. Evidently I've misjudged the usage requirements to be way lower than what they actually are.