Skip to main content
  • Log in
  • Manage Cookies
projects.eclipse.org
Download
  • Projects
  • Working Groups
  • Members
  • Community
    • Marketplace
    • Events
    • Planet Eclipse
    • Newsletter
    • Videos
    • Blogs
  • Participate
    • Report a Bug
    • Forums
    • Mailing Lists
    • Wiki
    • IRC
    • Research
  • Eclipse IDE
    • Download
    • Learn More
    • Documentation
    • Getting Started / Support
    • How to Contribute
    • IDE and Tools
    • Newcomer Forum
  • More
      • Community

      • Marketplace
      • Events
      • Planet Eclipse
      • Newsletter
      • Videos
      • Blogs
      • Participate

      • Report a Bug
      • Forums
      • Mailing Lists
      • Wiki
      • IRC
      • Research
      • Eclipse IDE

      • Download
      • Learn More
      • Documentation
      • Getting Started / Support
      • How to Contribute
      • IDE and Tools
      • Newcomer Forum
    • Search

  1. Home
  2. Projects
  3. Eclipse Technology
  4. Eclipse LemMinX
  5. Eclipse LemMinX
×

Informative message

This proposal has been approved and the Eclipse LemMinX project has been created.
Visit the project page for the latest information and development.

Go to Project

Eclipse LemMinX

Basics
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project: 
Eclipse Technology
Background: 

Many editors are now compatible with the Language Server Protocol (LSP). Several languages (Java, TypeScript, etc) now have a full-featured LSP implementation, but a powerful XML language server is missing from the ecosystem.

Scope: 

The  LemMinX project provides an LSP implementation for the XML language (aka XML Language Server). It can be used with any editor that supports the protocol, to offer editing support (completion, hyperlink, validation, hover, codelens, ..) for XML documents (.xml, .xsd, .xslt…), as well as schema-based (XSD and DTD) validation.

 

The XML Language Server is extensible via a plugin system (based on a service provider interface - SPI) to provide completion, validation, etc. 

Description: 

LemMinX provides an implementation of the LSP for XML, written in Java, and based on the Eclipse LSP4J framework.

It implements most of the language server protocol features to provide XML editing support while also exposing extension points for 3rd party adopters to provide custom features via a plugin system. 

Here are some plugin examples:

  • XML syntax/matched grammar validation, via the Xerces XML validator

  • XML completion based on grammar, via Xerces

  • Proof-of-Concept plugins like Maven, emmet or web.xml extensions. 

LemMinX is reusable as a Language Server for downstream projects, but some components, such as the fault-tolerant parser or the service layer can also be reused directly.

Why Here?: 

LemMinX's XML Language Server is based on the Eclipse LSP4J project. Being part of the Eclipse Community would allow closer collaboration and consumption with/from other related projects and communities, like Eclipse Che, Eclipse LSP4E, Eclipse Wild Web Developer.

Additionally, the project would benefit from being inside the Eclipse.org community by attracting more experienced Eclipse developers who're already contributing to some related projects.

Licenses: 
Eclipse Public License 2.0
Legal Issues: 

The project code currently depends on:

  • Eclipse LSP4J, to adhere to the LSP protocol

  • The Apache Xerces 2 parser, for parsing and validating XML documents

  • remark, an HTML-to-Markdown renderer, to provide documentation in the markdown format.

A part of the XML parser has been written as a “transcription” of some code present in the VSCode HTML Language Service (copyright @ Microsoft Corporation, MIT-licensed), from TypeScript to Java.

Such pieces of code are clearly identified in their copyright headers.

Project Scheduling: 

An initial release based on the initial contribution is planned after the project creation.

Future Work: 

Once 

  • Continuous adoption of newer version of the Language Server Protocol and addition of new features from LSP

  • Performance and resource consumption

  • Ease integration in clients

  • Improve features for binding between XML and grammar https://github.com/angelozerr/lsp4xml/issues/373

  • Improve formatting options

  • Fix bugs. See a list of issues for missing features and bugs to fix in LSP4XML. 

People
Project Leads: 
Fred Bricon
Angelo ZERR
Committers: 
Angelo Zerr
David Kwon
Fred Bricon
Nikolas Komonen
Mentors: 
Nitin Dahyabhai
Interested Parties: 

Corporate:

  • Red Hat Inc.
  • Pivotal
  • Liferay Inc.

Interested projects: Here are some clients consuming this XML Language Server:

  • Eclipse IDE with Wild Web Developer

  • VSCode with vscode-xml

  • Theia with theia-xml

  • Spring Tools 4 - re-using the XML parser for Spring-specific analysis and content-assist

  • Vim/Neovim with coc-xml

Source Code
Initial Contribution: 

The initial contribution is a functional implementation, known as LSP4XML, currently hosted on GitHub, with active contributors: https://github.com/angelozerr/lsp4xml. The code provides the necessary code to support known XML features like XML completion, quick fixes, validation (basic and based on XML Schema/DTD)

The copyright mostly belongs to Angelo Zerr and Red Hat, contributions that were made by non-Red Hat contributors were done on files that show the Copyright and license headers, without any concern from contributors. So it's assumed that all contributors have contributed approving the EPL 2 license.

The namespace/package of the project would be org.eclipse.lemminx.

 

Source Repository Type: 
GitHub
Source Repositories: 
https://github.com/angelozerr/lsp4xml
  • Sign in to post comments.
Incubating - Eclipse LemMinX

Related Projects

Project Hierarchy:

  • Eclipse Technology
  • Eclipse LemMinX

Eclipse Foundation

  • About Us
  • Contact Us
  • Sponsor
  • Members
  • Governance
  • Code of Conduct
  • Logo and Artwork
  • Board of Directors
  • Careers

Legal

  • Privacy Policy
  • Terms of Use
  • Copyright Agent
  • Eclipse Public License
  • Legal Resources

Useful Links

  • Report a Bug
  • Documentation
  • How to Contribute
  • Mailing Lists
  • Forums
  • Marketplace

Other

  • IDE and Tools
  • Projects
  • Working Groups
  • Research@Eclipse
  • Report a Vulnerability
  • Service Status

Copyright © Eclipse Foundation. All Rights Reserved.

Back to the top