... and use them with Javascript, JVM, or even native libraries
Status as of August 3rd, 2022: active, but very unstable, use (don't) at your own risk
- API documentation
- SBT:
libraryDependencies += "tech.neander" %% "langoustine-app" % "0.0.21"
- Mill:
ivy"tech.neander::langoustine-app::0.0.21"
- Scala CLI
//> using lib "tech.neander::langoustine-app::0.0.21"
It's a clean room implementation of the LSP protocol definitions.
By "clean room" we mean
- Using only Scala libraries
- Idiomatic Scala code
- Using Scala 3 features
Most of the code is generated directly from the recently published LSP specification in JSON format.
Introducing Quickmaffs, a primitive language with a LSP, REPL, and an interpreter, designed specifically to demonstrate how easy it is to build Language Servers with Langoustine.
Writing a language server for:
-
your own toy language
-
already existing language but with specific requirements
For example, see Grammar.js LSP - written specifically for the
grammar.js
files in the Tree Sitter grammars.It uses the Scala.js artifact of this project, because it's easier to parse JavaScript using a JavaScript library and package the whole server as a Node.js application.
-
markup languages and protocol files, think
- Certain YAML files (LSP with verification for Github Actions YAML files!)
- Avro files
- Protobuf files
- Smithy files (jk a great one already exists)
- LLVM IR text files (for all those compiler engineers!)
- Scala Native's NIR files
- loads and loads more
Even basic Go To Definition implementation for the files you work with for hours on a daily basis can have an immeasurable impact on your productivity.
Depends on how amazing you want the UX to be really, but if you're a lazy sloth like we are, head over the following list :
- neovim, if you hate rodents
- vscode, if you like rodents (provided by yours truly)
- intellij (no commits in a few years, will need a brave soul to step-up)
- emacs, if you have 20 fingers on each of your 8 hands
- sublime, if you're a decent person who pays for software
Please refer to this helpful diagram:
┌──────────────┐
│ YAS KWEEEN │
│ area │ .───────────.
└──────────────┘ _.─' `──.
│ ,─' '─.
│ ╱ ╲
│ ,' People who enjoy `.
│ ╱ using Scala 3 ╲
│ .───────────. ; :
│ _.─' `─;. :
└────────────────────────────┐ :
╱ │ ╲│ .───────────. │
,' │ │._.─' `──. │
╱ : ,┼'╲ '─. ;
; : ╱ │ : ╲ ;
; : ,' │ : `. ;
; ╱ │ : ╲
│ ; ╲ ▼ │ ╱ :
│ People who enjoy ; `. │ ,' :
: creating Language ; ╲ ; ╱ :
: Servers │ '─.; ,─' │
: │ `──. _.─' │
╲ : ╱ `─────────' ;
╲ : ╱ ;
`. : ,' People who are ;
╲ ╲ ╱ ready for ╱
'─. ,╲' disappointment ╱
`──. _.─' `. ,'
`─────────' ╲ ╱
'─. ,─'
`──. _.─'
`─────────'
If you are in the YAS KWEEN area - welcome and let's have some fun!