SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
The New Generic and
Extensible Code Editor
Easily-extendable Eclipse Text Editor for quick
language support and more
Sopot Cela Mickael Istria
Why ‘Generic’ ?
- One Editor & Multiple per-language extensions versus One Editor per language approach
- Instead of creating an editor, ‘smarten up’ the generic editor to sense and support a language
Features
- Extensible autocomplete
- Extensible hover (tooltip) information
- Extensible syntax highlighting
- Similar concept to the way Notepad++ works
The editor is an empty shell, it will do as much as content you provide it through
extensions
“Extensible”, you said?
Content-type centric
- You want to add features for a given language, not much for an editor.
- Extensions register themselves against content-types, the editor picks
the active one according to the content-type of current document.
- You can either create a custom content-type or use a pre-defined one
And how exactly does it work in practice?
1. Get a new or existing plug-in project
2. Add an extension to e.g. org.eclipse.ui.genericeditor.presentationReconcilers
a. Supply a content-type for which this code will work
3. Write the presentation (or autocomplete or hover) logic code
And how does the
code look?
Voila!
Underlying Vision
1. Productivity & Time to market: Make possible quick language support with
very little boilerplate
2. Separation of concerns: Abstract out the provider of the ‘smartness’ for a
given language
a. Opens the road to using language servers
3. Quality, maintenance & DRY: do we need as many text editors as
languages
a. More consistency
b. More factorization (less maintenance cost)
c. Less memory consumption
Language Server Protocol (LSP)
LSP defines a unified way to get edition assist (completion, hover,
rename…) from whatever “blackbox”.
LSP in Eclipse
Many LSP operations already doable with Eclipse commands and
handlers: hook LSP-based handler on commands when supported.
Hooking hover and completion now doable with Eclipse Generic
Editor
LSP in Eclipse (cont’d)
Eclipse IDE user
/ide
Generic
and
extensible
editor
LSP
Integration
Hover
Completion
OmniSharp
Launch Config
VSCode-CSS
Launch Config
VSCode-JSON
Launch Config
Whatever
Launch Config
Local
Local
?
Protocol over * streams
LSP4J
workspace
User to manually associate a language server and a content-type. No code, no
plugin! Requires user to manually define content types
http://bugs.eclipse.org/500892
Move this to Eclipse.org!
Next steps for Eclipse and LSP
Demo schedule
1. Sample .gradle syntax highlighting support
2. Language server demo: C# editor
Demo 1
Demo 2
Use it now!
1. Try it out!
a. We have a plug-in template wizard for that
b. Try it for your use-case and give feedback
2. Contribute basic support for a language
a. It doesn’t have to be a well-defined language
b. E.g. we have a sample for .project file editor
Future Plans
1. Get Generic Editor infrastructure improved
a. improve extensibility areas
b. continuous bug fixes as adoption grows
2. Language Server push
a. project proposal (LSP4E, ecLSP…) in progress. Come to be registered as Interested Parties
Many thanks to those who helped with reviewing
Questions time

Contenu connexe

Tendances

蔡学镛 Rebol漫谈
蔡学镛   Rebol漫谈蔡学镛   Rebol漫谈
蔡学镛 Rebol漫谈
d0nn9n
 
ALPHA Script - Concept
ALPHA Script - ConceptALPHA Script - Concept
ALPHA Script - Concept
PROBOTEK
 
Chapter 1.3
Chapter 1.3Chapter 1.3
Chapter 1.3
sotlsoc
 

Tendances (19)

What is code - Part 1
What is code - Part 1What is code - Part 1
What is code - Part 1
 
Uses for scripting languages,web scripting in perl
Uses for scripting languages,web scripting in perlUses for scripting languages,web scripting in perl
Uses for scripting languages,web scripting in perl
 
Components of .NET Framework
Components of .NET FrameworkComponents of .NET Framework
Components of .NET Framework
 
Log cat kotlindsl
Log cat kotlindslLog cat kotlindsl
Log cat kotlindsl
 
Starting c++
Starting c++Starting c++
Starting c++
 
How to build your own programming language
How to build your own programming language  How to build your own programming language
How to build your own programming language
 
.Net Overview
.Net Overview.Net Overview
.Net Overview
 
Programming paradigm and web programming
Programming paradigm and web programmingProgramming paradigm and web programming
Programming paradigm and web programming
 
Component of .net
Component of .netComponent of .net
Component of .net
 
Swift programming language
Swift programming languageSwift programming language
Swift programming language
 
蔡学镛 Rebol漫谈
蔡学镛   Rebol漫谈蔡学镛   Rebol漫谈
蔡学镛 Rebol漫谈
 
Future of PHP
Future of PHPFuture of PHP
Future of PHP
 
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San JoseTypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
 
Php vs asp.net most valuable differences to learn and select the best one f...
Php vs asp.net   most valuable differences to learn and select the best one f...Php vs asp.net   most valuable differences to learn and select the best one f...
Php vs asp.net most valuable differences to learn and select the best one f...
 
ALPHA Script - Concept
ALPHA Script - ConceptALPHA Script - Concept
ALPHA Script - Concept
 
Chapter 1.3
Chapter 1.3Chapter 1.3
Chapter 1.3
 
Ruby in mule
Ruby in muleRuby in mule
Ruby in mule
 
Introduction to flutter's basic concepts
Introduction to flutter's basic conceptsIntroduction to flutter's basic concepts
Introduction to flutter's basic concepts
 

En vedette

Iterative and-agile-codegen
Iterative and-agile-codegenIterative and-agile-codegen
Iterative and-agile-codegen
Mickael Istria
 

En vedette (20)

Iterative and-agile-codegen
Iterative and-agile-codegenIterative and-agile-codegen
Iterative and-agile-codegen
 
What's up GMF Tooling?
What's up GMF Tooling?What's up GMF Tooling?
What's up GMF Tooling?
 
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...
7 Must-Try User Experience Tactics For Developers (Tiffany Nolan & Catherine ...
 
It's not tools, Stupid
It's not tools, StupidIt's not tools, Stupid
It's not tools, Stupid
 
Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)Agile Is A Four-Letter Word (Jen Krieger)
Agile Is A Four-Letter Word (Jen Krieger)
 
Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)Developer Meet Designer (Andres Galante & Brian Leathem)
Developer Meet Designer (Andres Galante & Brian Leathem)
 
Analyzing Java Applications Using Thermostat (Omair Majid)
Analyzing Java Applications Using Thermostat (Omair Majid)Analyzing Java Applications Using Thermostat (Omair Majid)
Analyzing Java Applications Using Thermostat (Omair Majid)
 
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
Building Reactive Applications With Node.Js And Red Hat JBoss Data Grid (Gald...
 
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
 
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
Putting The 'M' In MBaaS—Red Hat Mobile Client Development Platform (Jay Balu...
 
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
Shenandoah GC: Java Without The Garbage Collection Hiccups (Christine Flood)
 
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)
 
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)
 
High Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices EnvironmentHigh Performance Data Storage in a Microservices Environment
High Performance Data Storage in a Microservices Environment
 
Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)Containers: Under The Hood (Vincent Batts)
Containers: Under The Hood (Vincent Batts)
 
Fight your technical debt with Jenkins, Jacoco and Sonar
Fight your technical debt with Jenkins, Jacoco and SonarFight your technical debt with Jenkins, Jacoco and Sonar
Fight your technical debt with Jenkins, Jacoco and Sonar
 
Building Progressive Web Apps (Kyle Buchanan)
Building Progressive Web Apps (Kyle Buchanan)Building Progressive Web Apps (Kyle Buchanan)
Building Progressive Web Apps (Kyle Buchanan)
 
MicroServices for Java Developers
MicroServices for Java Developers MicroServices for Java Developers
MicroServices for Java Developers
 
Kubernetes for Java Developers
 Kubernetes for Java Developers Kubernetes for Java Developers
Kubernetes for Java Developers
 

Similaire à EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Editor and Language Servers

Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
wpnepal
 
Mps Presentation
Mps PresentationMps Presentation
Mps Presentation
guestaa97d9
 
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Mickael Istria
 

Similaire à EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Editor and Language Servers (20)

[EclipseCon France 2017] Eclipse Platform Generic Editor
[EclipseCon France 2017] Eclipse Platform Generic Editor[EclipseCon France 2017] Eclipse Platform Generic Editor
[EclipseCon France 2017] Eclipse Platform Generic Editor
 
Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?
 
Ide
IdeIde
Ide
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
 
Sanjip Shah: Internationalizing and Localizing WordPress Themes
Sanjip Shah: Internationalizing and Localizing  WordPress ThemesSanjip Shah: Internationalizing and Localizing  WordPress Themes
Sanjip Shah: Internationalizing and Localizing WordPress Themes
 
Internationalizing and localizing wordpress theme
Internationalizing and localizing  wordpress themeInternationalizing and localizing  wordpress theme
Internationalizing and localizing wordpress theme
 
Mps Presentation
Mps PresentationMps Presentation
Mps Presentation
 
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Build Great Networked APIs with Swift, OpenAPI, and gRPC
Build Great Networked APIs with Swift, OpenAPI, and gRPCBuild Great Networked APIs with Swift, OpenAPI, and gRPC
Build Great Networked APIs with Swift, OpenAPI, and gRPC
 
Unit 1
Unit 1Unit 1
Unit 1
 
The Ring programming language version 1.3 book - Part 4 of 88
The Ring programming language version 1.3 book - Part 4 of 88The Ring programming language version 1.3 book - Part 4 of 88
The Ring programming language version 1.3 book - Part 4 of 88
 
The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189The Ring programming language version 1.6 book - Part 6 of 189
The Ring programming language version 1.6 book - Part 6 of 189
 
Epub IDPF update & futures-Garth Conboy
Epub IDPF update & futures-Garth ConboyEpub IDPF update & futures-Garth Conboy
Epub IDPF update & futures-Garth Conboy
 
Type script
Type scriptType script
Type script
 
Code in the cloud with eclipse che and docker / snowcamp.io 2017
Code in the cloud with eclipse che and docker /  snowcamp.io 2017Code in the cloud with eclipse che and docker /  snowcamp.io 2017
Code in the cloud with eclipse che and docker / snowcamp.io 2017
 
Intermediate Languages
Intermediate LanguagesIntermediate Languages
Intermediate Languages
 
The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30
 
The OpenText Translator for Content Suite Platform by Cassia
The OpenText Translator for Content Suite Platform by CassiaThe OpenText Translator for Content Suite Platform by Cassia
The OpenText Translator for Content Suite Platform by Cassia
 
Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"Multilingual Drupal presentation from "Do it With Drupal"
Multilingual Drupal presentation from "Do it With Drupal"
 

Plus de Mickael Istria

Parallel builds in Eclipse IDE workspace - EclispeCon Europe 2018
Parallel builds in Eclipse IDE workspace - EclispeCon Europe 2018Parallel builds in Eclipse IDE workspace - EclispeCon Europe 2018
Parallel builds in Eclipse IDE workspace - EclispeCon Europe 2018
Mickael Istria
 

Plus de Mickael Istria (10)

Parallel builds in Eclipse IDE workspace - EclispeCon Europe 2018
Parallel builds in Eclipse IDE workspace - EclispeCon Europe 2018Parallel builds in Eclipse IDE workspace - EclispeCon Europe 2018
Parallel builds in Eclipse IDE workspace - EclispeCon Europe 2018
 
Parallel builds in Eclipse IDE workspace
Parallel builds in Eclipse IDE workspaceParallel builds in Eclipse IDE workspace
Parallel builds in Eclipse IDE workspace
 
Making Eclipse IDE better at handling real-life projects @EclipseCon NA 2015
Making Eclipse IDE better at handling real-life projects @EclipseCon NA 2015Making Eclipse IDE better at handling real-life projects @EclipseCon NA 2015
Making Eclipse IDE better at handling real-life projects @EclipseCon NA 2015
 
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
[EclipseCon NA 2014] Integration tests for RCP made easy with SWTBot and Tycho
 
Contribute to Eclipse projects
Contribute to Eclipse projectsContribute to Eclipse projects
Contribute to Eclipse projects
 
A journey with Target Platforms
A journey with Target PlatformsA journey with Target Platforms
A journey with Target Platforms
 
Cool stuff in E4 for developers
Cool stuff in E4 for developersCool stuff in E4 for developers
Cool stuff in E4 for developers
 
Modeling With Eclipse @SoftShake 2011
Modeling With Eclipse @SoftShake 2011Modeling With Eclipse @SoftShake 2011
Modeling With Eclipse @SoftShake 2011
 
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
 
Sur la route de l'agilité @Mix-it Lyon 2011
Sur la route de l'agilité @Mix-it Lyon 2011Sur la route de l'agilité @Mix-it Lyon 2011
Sur la route de l'agilité @Mix-it Lyon 2011
 

Dernier

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 

Dernier (20)

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 

EclipseCon Europe 2016, S. Cela, M.Istria: Eclipse Generic and Extensible Editor and Language Servers

  • 1. The New Generic and Extensible Code Editor Easily-extendable Eclipse Text Editor for quick language support and more Sopot Cela Mickael Istria
  • 2. Why ‘Generic’ ? - One Editor & Multiple per-language extensions versus One Editor per language approach - Instead of creating an editor, ‘smarten up’ the generic editor to sense and support a language
  • 3. Features - Extensible autocomplete - Extensible hover (tooltip) information - Extensible syntax highlighting - Similar concept to the way Notepad++ works
  • 4. The editor is an empty shell, it will do as much as content you provide it through extensions “Extensible”, you said?
  • 5. Content-type centric - You want to add features for a given language, not much for an editor. - Extensions register themselves against content-types, the editor picks the active one according to the content-type of current document. - You can either create a custom content-type or use a pre-defined one
  • 6. And how exactly does it work in practice? 1. Get a new or existing plug-in project 2. Add an extension to e.g. org.eclipse.ui.genericeditor.presentationReconcilers a. Supply a content-type for which this code will work 3. Write the presentation (or autocomplete or hover) logic code
  • 7. And how does the code look?
  • 9. Underlying Vision 1. Productivity & Time to market: Make possible quick language support with very little boilerplate 2. Separation of concerns: Abstract out the provider of the ‘smartness’ for a given language a. Opens the road to using language servers 3. Quality, maintenance & DRY: do we need as many text editors as languages a. More consistency b. More factorization (less maintenance cost) c. Less memory consumption
  • 10. Language Server Protocol (LSP) LSP defines a unified way to get edition assist (completion, hover, rename…) from whatever “blackbox”.
  • 11. LSP in Eclipse Many LSP operations already doable with Eclipse commands and handlers: hook LSP-based handler on commands when supported. Hooking hover and completion now doable with Eclipse Generic Editor
  • 12. LSP in Eclipse (cont’d) Eclipse IDE user /ide Generic and extensible editor LSP Integration Hover Completion OmniSharp Launch Config VSCode-CSS Launch Config VSCode-JSON Launch Config Whatever Launch Config Local Local ? Protocol over * streams LSP4J workspace
  • 13. User to manually associate a language server and a content-type. No code, no plugin! Requires user to manually define content types http://bugs.eclipse.org/500892 Move this to Eclipse.org! Next steps for Eclipse and LSP
  • 14. Demo schedule 1. Sample .gradle syntax highlighting support 2. Language server demo: C# editor
  • 17. Use it now! 1. Try it out! a. We have a plug-in template wizard for that b. Try it for your use-case and give feedback 2. Contribute basic support for a language a. It doesn’t have to be a well-defined language b. E.g. we have a sample for .project file editor
  • 18. Future Plans 1. Get Generic Editor infrastructure improved a. improve extensibility areas b. continuous bug fixes as adoption grows 2. Language Server push a. project proposal (LSP4E, ecLSP…) in progress. Come to be registered as Interested Parties
  • 19. Many thanks to those who helped with reviewing