From https://www.eclipsecon.org/france2018/session/ignite-talks
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE relying on LSP, TextMate and CLI
C# and Rust case studies
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE relying on LSP, TextMate and CLI
1. IDE as a Front-end and Fast time-to-market
language support in Eclipse IDE relying on LSP,
TextMate and CLI
C# and Rust case studies
Mickael Istria - @mickaelistria CC0 – No rights reserved
2. Language Server Protocol
Request/response/notifications based between client (IDE) and LS
Dedicated to text edition
Standardized messages and protocol.
IDE /
Text Editor
Language and code
Analysis smartness
Provides:
● Validation
● Quickfixes
● Completion
● Hover
● Outline
● References
● Rename
● ….
3. Java JS TS C# XText JSon Ceylon Rust ...
Eclipse IDE
VSCode
Eclipse Che
Emacs
Eclipse Theia
Gnome-Builder
...
Eclipse IDE
VSCode
Eclipse Che
Emacs
Eclipse Theia
Gnome-Builder
...
Java
JS
TS
C#
XText
JSON
Ceylon
Rust
...
Language Server Protocol
M languages (12)
N IDEs/Editors (63)
x
Complex and specific
Integrations (756)
M languages (12)
N IDEs/Editors (63)
+ Simpler and reusable
Integrations (75)
5. TextMate for syntax highlighting
A grammar file configures syntax highlighting for one language
6. TextMate ecosystem
● 240 repos under https://github.com/textmate
● At least 4 clients: Eclipse IDE (TM4E),
TextMate, VSCode, Atom
N x M
960 specific integrations
N + M
244 reusable integrations
9. Eclipse IDE – Generic Editor
Pure legacy JFace interfaces → old and new
code reusable in whole Eclipse Platform
Generic Editor
...
completion
hover
Mark occurences
Syntax highlighting / presentation reconciler
16. Where is my LS? Mulitple strategies
Assume it’s a pre-requisite and find it on filesystem,
or
Ship it inside a plugin/fragment (aCute),
or
Provision it on user’s machine
from the IDE (Corrosion)
17. IDE as a “front-end” vs
reimplementing language logic
Easier to implement +++
As feature rich ===
Consistent UX across plugins ++
Reusability of various layers ++++++
Factorization ++++
Faster time to market ++++
18. What now?
● Applies to so many languages
● Applies to other IDEs (including Eclipse Che,
Eclipse Theia, Eclipse Orion..)
● ADOPT NOW!
19. What’s next?
Debug Adapter Protocol (already supported in
LSP4E)
Test Server Protocol (experimental WIP)
Provisioning Project Protocol (experimental
WIP)
Build Server Protocol (experimental WIP)
…
20. Mickael Istria - @mickaelistria CC0 – No rights reserved
TL (seriously?); DR:
● ADOPT existing standardized devtools artifacts
(LS, TextMate,…)
● CREATE reusable standard-ish artifacts for you
languages
● CREATE clients for these artifacts
● INTEGRATE more language in your favorite
IDEs!