Language Server Protocol (LSP) client for Swift

Overview

LanguageClient

This is a Swift library for abstracting and interacting with language servers that implement the Language Server Protocol. It is built on top of the LanguageServerProtocol library.

Integration

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/ChimeHQ/LanguageClient")
]

Classes

LocalProcessServer

This class manages a locally-running LSP process.

InitializingServer

Server wrapper that provides automatic initialization.

RestartingServer

Server wrapper that provides both transparent server-side state restoration should the underlying process crash.

TextPositionTransformer

A protocol useful for translating between NSRange and LSP's line-relative positioning system.

Suggestions or Feedback

We'd love to hear from you! Get in touch via twitter, an issue, or a pull request.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

You might also like...
A Combine-style wrapper around Network's NWConnection with a UDP protocol

A Combine-style wrapper around Network's NWConnection with a UDP protocol

A resource based, protocol oriented networking library designed for pure-SwiftUI applications.

Monarch 👑 - WIP A resource based, protocol oriented networking library designed for pure-SwiftUI applications. Features: Async/Await Resource Based P

VFNetwork is a protocol-oriented network layer that will help you assemble your requests in just a few steps.
VFNetwork is a protocol-oriented network layer that will help you assemble your requests in just a few steps.

Simple, Fast and Easy. Introduction VFNetwork is a protocol-oriented network layer that will help you assemble your requests in just a few steps. How

Twitter-Client - A twitter client that allow users to view tweets on their iphone

Project 3 - Twitter Client Name of your app is a basic twitter app to read your

RSNetworking is a networking library written entirly for the Swift programming language.

RSNetworking is a networking library written entirly for the Swift programming language.

Login screen using Swift language
Login screen using Swift language

Login Screens Design iOS login Screens, with SwiftUI Designs inspired by Project

C-Xpress is a modern c-like object oriented programming language running on top of the .NET framework

C-Xpress Programming Language The cxpress programming language is a High Level object oriented programming language running on the .NET Framework C-Xp

A dead simple programming language.

checked Checked is a dead simple programming language. Variable declarations with type inference func main() { let constantVariable = 5 var va

Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and more…)
Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and more…)

Perfect: Server-Side Swift 简体中文 Perfect: Server-Side Swift Perfect is a complete and powerful toolbox, framework, and application server for Linux, iO

Comments
  • No such module 'AnyCodable' in 0.3.0

    No such module 'AnyCodable' in 0.3.0

    Hi,

    Just trying out this package. But Xcode complains that there is no module called AnyCodable. I noticed that the last commit says it removed AnyCodable and replaced it with LSPAny, but at the top of the files, AnyCodable is still imported. Should they be removed?

    opened by intitni 1
  • [Request] - Maybe a

    [Request] - Maybe a "LSP 101 - Setup"?

    Hey there, and thanks for your time!

    First off, thank you for sharing this repository and work to open up access to the Swift LSP for more folks to use. It's a great effort, and I've been excited to try and use the tool for a while now.

    Unfortunately, I'm hitting that oft-expected LSP wall of, "There are so many moving pieces I don't know which piece to learn first to start learning more." Between build caches, local process instances, and quite literally everything in between in the Swift build and runtime, I am finding myself continuously at a loss for how to set this thing up.

    My request is for a baby's-first-LSP-call guide or tutorial on how to interact with this client, and how to use it to interact with the server at the other end. Some simple step-by-step guide that shows:

    • Pulling down this library into a repo (easy peasy)
    • Configuring environment / build to point to local SwiftLSP toolchain instance on a standard macOS install or Docker image (uh oh...)
    • Initializing a LSP session akin to an editor opening one or more files (hrm..)
    • Executing requests and handling sample responses, like jump-to-definition or completion (ok not so bad)

    With that corpus of a tutorial, I feel a lot of the other pathways to the LSP are opened. Since setup is a huge portion of the work, and getting into a "working state" is most of the trouble, following those first few requests and gotchas gives a feel for the API surface, and how things are "meant to work".

    In any and all ways I can, I offer support to help write this! If that means reading through some of your suggested tutorials or notes and compiling them into a working document, I'm for it. Or, if it means being on a video call and working through individual steps and documenting it, I'm for that too. I am immensely interested in learning this technology and having others be able to do the same, so take very little salt when I say I really want this to work, haha.

    Thanks for reading the text wall, and again, thanks for the great library and history of development around SwiftLSP.

    opened by tikimcfee 4
Releases(0.3.1)
Owner
Chime
Chime
Tiny http server engine written in Swift programming language.

What is Swifter? Tiny http server engine written in Swift programming language. Branches * stable - lands on CocoaPods and others. Supports the latest

null 3.6k Dec 31, 2022
Restofire is a protocol oriented networking client for Alamofire

Restofire is a protocol oriented networking client for Alamofire. Features Requirements Installation Usage License Features Global Configuration for h

Restofire 381 Sep 29, 2022
A simple GCD based HTTP client and server, written in 'pure' Swift

SwiftyHTTP Note: I'm probably not going to update this any further - If you need a Swift networking toolset for the server side, consider: Macro.swift

Always Right Institute 116 Aug 6, 2022
🔌 Non-blocking TCP socket layer, with event-driven server and client.

Original authors Honza Dvorsky - http://honzadvorsky.com, @czechboy0 Matthias Kreileder - @matthiaskr1 At the request of the original authors, we ask

Vapor Community 574 Dec 7, 2022
WebSocket implementation for use by Client and Server

WebSocket ⚠️ This module contains no networking. To create a WebSocket Server, see WebSocketServer. To create a WebSocket Client, see WebSocketClient.

Zewo Graveyard 63 Jan 29, 2022
Minecraft server RCON client for iOS/macOS

iRCON Minecraft server RCON client for iOS/macOS. Features Full remote console window Player list with ability to easily op, kick, ban, etc. Quickly s

JackMacWindows 7 Dec 26, 2022
Swift implementation of WalletConnect v.2 protocol for native iOS applications

Wallet Connect v.2 - Swift Swift implementation of WalletConnect v.2 protocol for native iOS applications. Requirements iOS 13 XCode 13 Swift 5 Usage

WalletConnect 142 Jan 4, 2023
Alamofire Network Layer written in swift 5 using the protocol oriented, combine, UIKit, MVVM.

CoreAPI-iOS This project Contains Alamofire Network layer Based on Protocol Oriented Concept and Combine Framework. It is created with UIKit, Alamofir

Mehran Kamalifard 27 Nov 11, 2022
FreeRDP is a free remote desktop protocol library and clients

FreeRDP: A Remote Desktop Protocol Implementation FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache lic

null 7.8k Jan 8, 2023
GeminiProtocol - URLSession support for the Gemini Protocol

GeminiProtocol Network.Framework and URLSession support for the Gemini Protocol

Izzy 3 Feb 16, 2022