Skip to main content
  • Book
  • © 2022

Language Server Protocol and Implementation

Supporting Language-Smart Editing and Programming Tools

Apress
  • Provides an all-in-one resource on the language server protocol

  • Demonstrates design, user experience, and best practices

  • Covers advanced concepts such as progress reporting, launchers, and extension points

Buy it now

Buying options

eBook USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Other ways to access

This is a preview of subscription content, log in via an institution to check for access.

Table of contents (11 chapters)

  1. Front Matter

    Pages i-xxi
  2. Developer Tools and Language Services

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 1-10
  3. Understanding the Language Server Protocol

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 11-22
  4. Implementing a Language Server

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 23-33
  5. General Messages

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 35-50
  6. Text Synchronization

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 51-63
  7. Diagnostics, Smart Editing, and Documentation

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 65-100
  8. Refactoring and Code Fixes

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 101-129
  9. Code Navigation and Navigation Helpers

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 131-156
  10. Presentation and Selection

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 157-181
  11. Workspace Operations

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 183-209
  12. Advanced Concepts

    • Nadeeshaan Gunasinghe, Nipuna Marcus
    Pages 211-231
  13. Back Matter

    Pages 233-239

About this book

Understand the important aspects of implementing a production-grade language server in support of language-smart tools such as code editors and other programming utilities. This book shows you how to create a single implementation of a language server that can be used by multiple tools, enabling you to do the job once in a way that can be shared and reused. 
This book covers the language server protocol used for communication between programming tools and your language server. The book also provides an in-depth understanding of the design, implementation, and user experience aspects which should be considered when implementing a language server. The book walks you through an example language server implementation to illustrate the basic concepts, then goes on to cover advanced aspects of language server use such as progress reporting, launchers, and extension points. 


User experience is an important aspect of language server implementation and different tooling vendors strive to provide their own unique user experiences. This book explains how the protocol features can be leveraged to address the unique developer experience provided by different tooling vendors. The book also shows how to enhance the smoothness of the editing experience by orchestrating multiple features together.





What You Will Learn
  • Implement a language server from scratch
  • Understand language server protocol and its data models
  • Leverage the protocol while preserving the unique user experience of different editors
  • Extend the protocol to support more than its standard capabilities
  • Run a language server on top of launchers such as standard I/O and TCP socket
  • Seamlessly incorporate language semantics into your protocol features




Who This Book Is For

Developers focused on and passionate about implementing language development tools such as plug-ins and extensions for interactive development environments (IDEs) or other tools that rely upon parsing of language statements and commands, and developers who need an in-depth understanding of the language server protocol as well as how to use the language server protocol to develop extensible language services


Authors and Affiliations

  • Walahanduwa, Sri Lanka

    Nadeeshaan Gunasinghe

  • Mawathagama, Sri Lanka

    Nipuna Marcus

About the authors

​Nadeeshaan Gunasinghe is Technical Lead at WSO2 and has more than five years of experience in enterprise integration, programming languages, and developer tooling. He leads the Ballerina Language Server team and is a key contributor to Ballerina, which is an open-source programming language and platform for the cloud, and he is an active contributor to the WSO2 Enterprise Service Bus.
Nipuna Marcus is Technical Lead at WSO2 and has more than five years of experience in front end development, programming languages, and developer tooling. He was a member of the Ballerina Language Server team and a key contributor to the Ballerina programming language.

Bibliographic Information

Buy it now

Buying options

eBook USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Other ways to access