(Apologies for "opinionated" remarks; this is just helpers for my memory)
- org: https://github.com/scaled/
- JavaFX based editor, mostly Scala code-base with Java'ish feel, some Java
- supports multiple languages
- uses custom build system (pacman)
- Emacs as a philosophy
- currently no IDE features such as code completion, error highlighting etc.?
- project seems quite large and rather impenetrable / idiosyncratic (custom build system, non-standard code formatting)
- author seems to be working on LSP integration
- probably the best foundation so far
- repo: https://github.com/Sciss/SyntaxPane
- simple Swing editor with lexer based on JFlex
- almost no IDE features, code completion is a hack
- relatively simple and managable code base
- makes no use of Scala presentation compiler
- repo: https://github.com/JetBrains/intellij-scala
- while it has a platform API, it is too large to embed in our system
- dead-end road because it reimplements the Scala compiler instead of using existing infra-structure
- most excellent IDE features
- Java2D / Swing based
- org: https://github.com/ensime/
- author has stepped down as project maintainer
- impenetrable code base / not documented
- Emacs heritage cruft
- editor-agnostic language server
- thus, we still need a Swing based editor component (no client exists)
- uses Scala presentation compiler AFAIK
- repo: https://github.com/dcaoyuan/nbscala
- kind of dead project
- Swing based
- mostly written in Java :(
- platform API probably too complex for us / too Java'ish
- repo: https://github.com/lihaoyi/Ammonite
- shell / REPL based
- had some privacy issues (phones home)
- might help with some infra-structure, but not really help with the editor
- fork: https://github.com/jupyter-scala/ammonium
- repo: https://github.com/sschaef/amora
- seems to be some grand plan, but hasn't materialised yet, seems dead
- repo: https://github.com/scalacenter/scastie
- supported by Scala Center
- JavaScript infected web application
- not sure how much work it will be to have a desktop editor
- org: https://github.com/scalafiddle
- approach similar to Scastie, i.e. web front-end
- uses scalac directly, not sbt
- repo: https://github.com/coursier/coursier
- dependency management / library resolver
- Scalaz dependent :(
- repo: https://github.com/gtache/intellij-lsp
- not sure if and how that would help us (perhaps as a blue-print to understand how to implement LSP clients)
- repo: https://github.com/dragos/dragos-vscode-scala
- is it tied to VS Code? Probably not
- experimental state
- repo 2: https://github.com/scalameta/language-server
- seems to be an independent effort
- "alpha" state
- repo: https://github.com/scala-search/scaps
- "Scaps is a search engine for discovering functionality in Scala libraries. You can use both type signatures and keywords to search for definitions."
- repo: https://github.com/pavelfatin/toyide
- a small 'IDE from scratch' in Scala
- doesn't directly support Scala, but might still provide a good basis for creating an editor, as it has AWT based painting, decorators etc.
- GPL v3, project is "frozen"
- repo: https://github.com/liufengyun/bacala
- "Bacala is an experimental package dependency manager for Scala projects."
- project most likely dead
- repo: https://github.com/Centaur/scalaconsole
- documentation seems to be in Chinese only
- apparently a REPL in a JavaFX GUI (version 1 used Swing)
- author says project is abandoned, one should use Scastie
- repo: https://github.com/scala-ide/scala-ide
- Eclipse :(
- repo: https://github.com/scala-ide/scalariform
- has a lexer/parser for Scala; not sure if it's 100% compatible to scalac?
- abandoned?
- part of the scala-compiler itself (
scala.tools.nsc.interactive.Global
) - no documentation
- API may break from minor to minor version.
Examples, etc.:
- https://stackoverflow.com/questions/16538791/scala-presentation-compiler-minimal-example
- http://ensime.blogspot.de/2010/08/building-ide-with-scala-presentation.html
- repo: https://github.com/asinghal/SlateIDE
- says its Play based, but quick glance suggests it uses Swing
- abandoned at Scala 2.10
- repo: https://github.com/kjellwinblad/ScalaEdit
- probably a thin wrapper around RSyntaxPane, abandoned
- repo: https://github.com/harrah/browse
- Scala source code browser (HTML) with syntax highlighting
- olafurpg points out this example for token scanning: https://github.com/harrah/browse/blob/8ffa3d4ece87daa8f0e2247f15332d76c8942f65/src/main/scala/Browse.scala#L107-L148
- aka sxr: https://github.com/sbt/sxr
- https://microsoft.github.io/language-server-protocol/howItWorks
- https://tomassetti.me/language-server-dot-visual-studio/
- List: https://microsoft.github.io/language-server-protocol/implementors/tools/
- Python: https://github.com/tbelaire/lang-server-client
- Neovim: https://github.com/autozimu/LanguageClient-neovim/
- Haskell: https://github.com/noughtmare/haskell-lsp-client
- JavaScript: https://github.com/Microsoft/monaco-editor
- Ensime (GPL 3!): https://github.com/ensime/ensime-server/blob/3.0/lsp/src/main/scala/org/ensime/lsp/rpc/messages.scala -- this is probably a server not a client
- IntelliJ: https://github.com/gtache/intellij-lsp
- lsp4j: Java bindings for both client and server (?): https://github.com/eclipse/lsp4j
LSP does not support syntax highlight, which must be implemented by the client itself: microsoft/language-server-protocol#33