All Projects → sebsebmc → Kakoune Languageclient

sebsebmc / Kakoune Languageclient

Licence: unlicense
Small implementation of a language client for kakoune.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Kakoune Languageclient

Elm Language Server
Language server implementation for Elm
Stars: ✭ 298 (+3211.11%)
Mutual labels:  language-server-protocol
Atom Languageclient
Language Server Protocol support for Atom (the basis of Atom-IDE)
Stars: ✭ 385 (+4177.78%)
Mutual labels:  language-server-protocol
Spyder
Official repository for Spyder - The Scientific Python Development Environment
Stars: ✭ 6,712 (+74477.78%)
Mutual labels:  language-server-protocol
Languageclient Neovim
Language Server Protocol (LSP) support for vim and neovim.
Stars: ✭ 3,352 (+37144.44%)
Mutual labels:  language-server-protocol
Kak Lsp
Kakoune Language Server Protocol Client
Stars: ✭ 363 (+3933.33%)
Mutual labels:  language-server-protocol
Monaco Languageclient
NPM module to connect Monaco editor with language servers
Stars: ✭ 419 (+4555.56%)
Mutual labels:  language-server-protocol
Scry
Scry is a code analysis server for https://crystal-lang.org
Stars: ✭ 294 (+3166.67%)
Mutual labels:  language-server-protocol
Jupyterlab Lsp
Coding assistance for JupyterLab (code navigation + hover suggestions + linters + autocompletion + rename) using Language Server Protocol
Stars: ✭ 796 (+8744.44%)
Mutual labels:  language-server-protocol
Erlang ls
The Erlang Language Server
Stars: ✭ 363 (+3933.33%)
Mutual labels:  language-server-protocol
Elixir Ls
A frontend-independent IDE "smartness" server for Elixir. Implements the "Language Server Protocol" standard and provides debugger support via the "Debug Adapter Protocol"
Stars: ✭ 587 (+6422.22%)
Mutual labels:  language-server-protocol
Lsp Mode
Emacs client/library for the Language Server Protocol
Stars: ✭ 3,691 (+40911.11%)
Mutual labels:  language-server-protocol
Languageserver
An implementation of the Language Server Protocol for R
Stars: ✭ 330 (+3566.67%)
Mutual labels:  language-server-protocol
Typescript Language Server
TypeScript & JavaScript Language Server
Stars: ✭ 462 (+5033.33%)
Mutual labels:  language-server-protocol
Sqls
SQL language server written in Go.
Stars: ✭ 301 (+3244.44%)
Mutual labels:  language-server-protocol
Python Language Server
Microsoft Language Server for Python
Stars: ✭ 778 (+8544.44%)
Mutual labels:  language-server-protocol
Lsp4j
A Java implementation of the language server protocol intended to be consumed by tools and language servers implemented in Java.
Stars: ✭ 293 (+3155.56%)
Mutual labels:  language-server-protocol
Powershelleditorservices
A common platform for PowerShell development support in any editor or application!
Stars: ✭ 394 (+4277.78%)
Mutual labels:  language-server-protocol
Eclipse.jdt.ls
Java language server
Stars: ✭ 888 (+9766.67%)
Mutual labels:  language-server-protocol
Pylance Release
Documentation and issues for Pylance
Stars: ✭ 782 (+8588.89%)
Mutual labels:  language-server-protocol
Vim Lsc
A vim plugin for communicating with a language server
Stars: ✭ 545 (+5955.56%)
Mutual labels:  language-server-protocol

kakoune-languageclient

About

Small implementation of a language client for Kakoune.

Uses a small Go binary to handle LSP JSONRPC translation to Kakoune commands.

Design

There are 3 parts to using LSP for Kakoune: Kakoune itself, a helper binary, and the language servers. Since the protocol communicates using JSON RPC 2.0 a helper binary is used manage the language servers and parsing the JSON.

The helper binary interfaces with Kakoune by writing commands into a fifo file that is being read by the binary, the binary then translates the commands into LSP commands and talks to the language servers. Finally, the binary connects to the running Kakoune instance and executes Kakoue commands to render results/perform the requested actions.

The setup process can be automated using a kak config file, the current setup is in lsc.kak. The language-client is currently not being started automatically due to stability issues, and requires pressing 0 to start.

Development

Currently the server is hardcoded to run only the go language-server for testing. One of the next tasks will be to add configurations into the config file to handle language servers for more languages.

The recommended setup for now is to symlink the lsc.kak file into your config files so all the source files are in one folder for committing.

To aid in debugging the binary there is a manual launch method that can be used to display the output from the binary. The recommended method is to launch a Kakoune instance in one terminal, and then in another terminal launch the go binary, passing the session and client name (These values are shown in the bottom right of Kakoune by default). This way you can use print statements, etc. from the binary to help in debugging.

Things are moving slowly, expect updates sporadically.

Thanks

Thanks to mawww for creating Kakoune and being so open about the development process.

Inspired by https://github.com/danr/libkak/ where I got a few ideas from.

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].