splinterofchaos / neovim Goto Github PK
View Code? Open in Web Editor NEWThis project forked from neovim/neovim
vim for the 21st century
Home Page: http://neovim.org/
License: Other
This project forked from neovim/neovim
vim for the 21st century
Home Page: http://neovim.org/
License: Other
I will use this space for myself to jot down notes I have about writing a Haskell client.
First problem: msgpack-rpc has not been updated for Haskell in a long time.
I could not successfully install msgpack-rpc with Cabal, and it's likely others would have the same problem. Inconsistencies between installed versions as documents, and the almost complete lack of documentation, makes this an unlikely path for getting anything done soon.
Solution: Write all the relevant msgpack stuff in C and link to that from Haskell.
There should be no issue in writing a C API that abstracts the message passing interface and write a Haskell client that defines the transformations from C types to Haskell types. This may also potentially be more convenient for writing clients in other languages as well.
The Haskell client should look something like this:
main = do
connection <- neovimServer "/tmp/neovim"
buf <- getBuffer connection 0
setBuffer connection 0 buf
disconect connection
Where connection
has a type encoding the socket to "/tmp/neovim", getBuffer
requests the buffer at idx
(like the Python client's vim.buffer[x]
) through the socket and waits on the response, and setBuffer
sends a message to the socket telling neovim to replace the buffer with buf
. The type of buf
itself could be as simple as [String]
, however Data.Text
or ByteString
may prove more efficient.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.