Skip to content

Instantly share code, notes, and snippets.

@Sciss
Last active January 3, 2018 19:07
Show Gist options
  • Save Sciss/5033477fa6a38ca62283598008144a16 to your computer and use it in GitHub Desktop.
Save Sciss/5033477fa6a38ca62283598008144a16 to your computer and use it in GitHub Desktop.

Existing Systems

(Apologies for "opinionated" remarks; this is just helpers for my memory)

Scaled

  • 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

SyntaxPane

  • 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

IntelliJ Scala-plugin

  • 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

Ensime

  • 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

NetBeans

Ammonite

Amora

Scastie

ScalaFiddle

Coursier

IntelliJ LSP plugin

Scala LSP server

Project 1

Project 2

Scaps

ToyIDE

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

Bacala

scalaconsole

ScalaIDE

Scalariform

Scala Presentation Compiler

  • part of the scala-compiler itself (scala.tools.nsc.interactive.Global)
  • no documentation
  • API may break from minor to minor version.

Examples, etc.:

SlateIDE

ScalaEdit

Browse

LSP Client

Implementations

LSP does not support syntax highlight, which must be implemented by the client itself: microsoft/language-server-protocol#33

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment