lxtk-org / lxtk

Language Client/Server Toolkit
Eclipse Public License 2.0
33 stars 2 forks source link
eclipse eclipse-plugin java language-client language-server-client language-server-protocol lsp lsp-client

LXTK: Language Client/Server Toolkit Build

LXTK is an open source toolkit for implementing language clients talking to language servers according to the Language Server Protocol (LSP). Currently, it targets Java and Eclipse IDE, and as such, sits between Eclipse LSP4J and Eclipse LSP4E in its abstraction level: it is built using LSP4J, while LSP4E could in theory have been built using LXTK. In other words, it provides a higher level of abstraction than LSP4J and more flexibility than LSP4E.

Why LXTK?

Features

The current LXTK version (0.4) provides client-side support for the following LSP features:

Architectural Overview

Currently, there are two main architectural layers in LXTK:

LXTK Core Framework (org.lxtk bundle) is a Java class library for building LSP clients. It is built on top of LSP4J. Rather than exposing LSP4J services directly, LXTK provides its own service layer. This layer is somewhat similar to the Extension API of Visual Studio Code, but is tailored specifically to LSP. In particular, its API directly reuses protocol data types of LSP4J. The Core Framework can be used in any Java-based client (Eclipse, IntelliJ, etc.)

LXTK Integration for Eclipse (LX4E) is subdivided into the Core layer (org.lxtk.lx4e bundle) and the UI layer (org.lxtk.lx4e.ui bundle). LX4E is not a tool, i.e. it does not provide a generic LSP client for Eclipse. Instead, it provides a platform for building Eclipse-based development tools using LSP-based services provided by the Core Framework. To that end, it extends the Core Framework and integrates it with the Eclipse Platform. Although LX4E can be used for building a generic LSP client for Eclipse, its main goal is to facilitate tight integration of specific language servers in a full-featured custom Eclipse-based IDE.

LX4E includes several examples (org.lxtk.lx4e.examples.* bundles) that demonstrate main aspects of its usage.

For additional information on how to use some of the features of LXTK Core Framework and LX4E, see FAQ.

For an overview of the API provided by LXTK Core Framework and LX4E, please see the Javadocs for the exported packages of the respective bundles.

Developer Resources

Contacts

License

LXTK is licensed under the Eclipse Public License 2.0. See LICENSE for the full license text.