All Projects → catlan → LSPKit

catlan / LSPKit

Licence: MIT license
Language Server Protocol (LSP) implementation for Cocoa ☕️

Programming Languages

objective c
16641 projects - #2 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to LSPKit

WebPKit
A framework that extends a variety of Cocoa APIs with capabilities for encoding and decoding WebP files for all of Apple's platforms.
Stars: ✭ 29 (-12.12%)
Mutual labels:  cocoa, appkit
TextViewPlus
Collection of useful extensions when working with NSTextView
Stars: ✭ 28 (-15.15%)
Mutual labels:  cocoa, appkit
react-native-macos
Fork of https://github.com/ptmt/react-native-macos with more features
Stars: ✭ 22 (-33.33%)
Mutual labels:  cocoa, appkit
ProcessEnv
Capture the shell environment of a Foundation app
Stars: ✭ 16 (-51.52%)
Mutual labels:  cocoa, appkit
XcoatOfPaint
Replace your Xcode icon with colorful variants
Stars: ✭ 131 (+296.97%)
Mutual labels:  cocoa, appkit
Subethaedit
General purpose plain text editor for macOS. Widely known for its live collaboration feature.
Stars: ✭ 1,183 (+3484.85%)
Mutual labels:  text-editor, cocoa
OutlineViewDiffableDataSource
Stop looking for NSOutlineViewDiffableDataSource, it’s here 👌
Stars: ✭ 96 (+190.91%)
Mutual labels:  cocoa, appkit
NoticeBoard
请使用功能更强大的ProHUD: https://github.com/xaoxuu/ProHUD
Stars: ✭ 15 (-54.55%)
Mutual labels:  cocoa
PredictEd
A rich edit control based text editor with text prediction and other smart features.
Stars: ✭ 32 (-3.03%)
Mutual labels:  text-editor
Note.it
A Cut Down, Simple, Text Editor For Mac And iOS. Built With SwiftUI (Mostly).
Stars: ✭ 20 (-39.39%)
Mutual labels:  text-editor
kodbox
kodbox is a file manager for web. It is a newly designed product based on kodexplorer. It is also a web code editor, which allows you to develop websites directly within the web browser.You can run kodbox either online or locally,on Linux, Windows or Mac based platforms
Stars: ✭ 1,188 (+3500%)
Mutual labels:  text-editor
CuteMarkEd-NG
Markdown Editor in Qt 5
Stars: ✭ 55 (+66.67%)
Mutual labels:  text-editor
fhash
fHash - an open source files hash calculator for Windows and macOS
Stars: ✭ 222 (+572.73%)
Mutual labels:  cocoa
TimeWriter
An online collaborative text editor based on event sourcing architecture.
Stars: ✭ 41 (+24.24%)
Mutual labels:  text-editor
mg
OpenBSD Mg editor. Portable Public Domain Micro Emacs for *BSD, Cygwin, Linux, Mac OS X.
Stars: ✭ 99 (+200%)
Mutual labels:  text-editor
lime-termbox
LimeText termbox frontend
Stars: ✭ 58 (+75.76%)
Mutual labels:  text-editor
Wireworld
A simple Wireworld cellular automaton explorer in Swift
Stars: ✭ 12 (-63.64%)
Mutual labels:  cocoa
AppKitFocusOverlay
Add hotkey(s) to display the key focus path for any window in your AppKit application.
Stars: ✭ 42 (+27.27%)
Mutual labels:  appkit
penme
Penme is a lightweight open source note taking app focused on privacy!
Stars: ✭ 25 (-24.24%)
Mutual labels:  text-editor
multitextor
Multiplatform command line text editor.
Stars: ✭ 27 (-18.18%)
Mutual labels:  text-editor

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].