Skip to content
/ LSPKit Public

Language Server Protocol (LSP) implementation for Cocoa ☕️

License

Notifications You must be signed in to change notification settings

catlan/LSPKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

LSPKit - A Language Server Protocol implementation for Cocoa ☕️

LSPKit is designed to easily integrate into the Cocoa Document Model and Text System.

Document - Simple Reading and Writing

NSDocument LSPClient
- readFromURL: ofType: error: - documentDidOpen: content:
- saveToURL: ofType: forSaveOperation: completionHandler: - documentWillSave:
- writeToURL: ofType: forSaveOperation: originalContentsURL: error: - documentDidSave:
- close - documentDidClose:

Text Synchronization 👯‍♀️

LSPKit supports incremental document changes and uses coalescing on -document:changeTextInRange:replacementString:.

What does that mean? When the user types text and the -textView:shouldChangeTextInRange:replacementString: delegate gets called multiple times, -document:changeTextInRange:replacementString: doesn't post immediately a 'textDocument/didChange' notification, but rather a notification is queued. Coalescing means that if a notification is posted which matches one already in the queue, the two are merged, so that only a single notification is posted to observers. When the user stops typing, the single 'textDocument/didChange' notification in the queue (due to coalescing) is posted when the run loop enters its wait state.

Termination Observer 🧨

-addTerminationObserver:block: makes it easy to restore the language server document state in case the language server process crashes.

Bundles 📦

Bundles are used to add language servers. Currently the two language servers bash-language-server and vscode-html-languageserver are included.

Sample 🧪 - Script Editor

The sample shows how to integrate LSPKit and how to implement NSTextView features like highlight current line, highlighting of line for diagnotics, highlighting of words, and how to layout views left aligned to line content.

See highlight current line (code) and highlighting of words (code):

Postion NSPopover on a word (part1, part2):

Diagnostic view left aligned to line content (code):

License

LSPKit is licensed under the MIT license.

Feedback

Get in touch via twitter, an issue, or a pull request.

About

Language Server Protocol (LSP) implementation for Cocoa ☕️

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published