From ee76ec921af343c4bff16984a7ab9c72b02020f6 Mon Sep 17 00:00:00 2001 From: Akuli Date: Mon, 22 Jan 2024 12:06:17 +0200 Subject: [PATCH 1/3] Update README --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index aa05593..4812a69 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,35 @@ # sansio-lsp-client -An implementation of the client side of the LSP protocol, useful for embedding +This is an implementation of the client side of the langserver (LSP) protocol, useful for embedding easily in your editor. +It is used in [Porcupine](https://github.com/Akuli/porcupine), +and will soon be used in [Biscuit](https://github.com/billyeatcookies/Biscuit) too. + +The "sans io" part of the name means "without IO". +It means that you read data from the stdout of a langserver process, +and this library gives you data to write to its stdin. +This way, this library is very flexible: +you can use it regardless of how you are running the langserver. + + +## Usage + +Unfortunately, there isn't much documentation. Hopefully someone will write some docs eventually :) + +If you want to add langserver support to a text editor, you could look at +[Porcupine's langserver plugin](https://github.com/Akuli/porcupine/blob/main/porcupine/plugins/langserver.py) +to get started. Porcupine is MIT licensed, so you can use its code in your projects as long as you credit Porcupine accordingly. +You can also look at [this project's tests](tests/), which are simple in principle, but kind of messy in practice. + + +## Maintenance Status + +Currently (2024) there are two maintainers (Akuli and PurpleMyst) who merge and review pull requests. +Also, the project cannot become totally broken, because Akuli uses Porcupine almost every day. +and [Porcupine's langserver plugin](https://github.com/Akuli/porcupine/blob/main/porcupine/plugins/langserver.py) uses this library. + +New features are usually added by someone else than the two maintainers. +We recommend just adding what you need for your use case. ## Developing From 5707f0cd45c853dc143007a6798c296bcb7c7169 Mon Sep 17 00:00:00 2001 From: Akuli Date: Mon, 22 Jan 2024 12:10:55 +0200 Subject: [PATCH 2/3] Fixed --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4812a69..2f3e53c 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,11 @@ You can also look at [this project's tests](tests/), which are simple in princip ## Maintenance Status Currently (2024) there are two maintainers (Akuli and PurpleMyst) who merge and review pull requests. -Also, the project cannot become totally broken, because Akuli uses Porcupine almost every day. -and [Porcupine's langserver plugin](https://github.com/Akuli/porcupine/blob/main/porcupine/plugins/langserver.py) uses this library. +Also, the project cannot become totally broken, because Akuli uses Porcupine almost every day, +and langserver support is an essential part of Porcupine. New features are usually added by someone else than the two maintainers. -We recommend just adding what you need for your use case. +We recommend just adding what you need for your use case and making a pull request. ## Developing From 5d363676288fa788e6017f4169a17d3fb47b0e25 Mon Sep 17 00:00:00 2001 From: Akuli Date: Mon, 22 Jan 2024 12:13:35 +0200 Subject: [PATCH 3/3] clarify sans io --- README.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2f3e53c..9227914 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,18 @@ It is used in [Porcupine](https://github.com/Akuli/porcupine), and will soon be used in [Biscuit](https://github.com/billyeatcookies/Biscuit) too. The "sans io" part of the name means "without IO". -It means that you read data from the stdout of a langserver process, -and this library gives you data to write to its stdin. -This way, this library is very flexible: -you can use it regardless of how you are running the langserver. +It means that this library doesn't do IO, and you do it instead. +Specifically: +- You start a langserver process +- You read data from the stdout of the langserver process +- You feed the data to this library +- This library returns data to be written to the stdin of the langserver process +- You write the data to the stdin of the langserver process. + +This way, this library is very flexible. +It assumes nothing about how IO works, +so you can use it with threads, without threads, with sync code, with async code, +or with any other kind of IO thing. ## Usage