Giter Site home page Giter Site logo

splinterofchaos / neovim Goto Github PK

View Code? Open in Web Editor NEW

This project forked from neovim/neovim

0.0 0.0 0.0 32.77 MB

vim for the 21st century

Home Page: http://neovim.org/

License: Other

Shell 0.08% CMake 0.41% Python 0.90% CSS 0.15% HTML 0.01% Vim Script 51.27% Ruby 0.01% C 41.60% Awk 0.12% Groff 1.26% PostScript 0.37% Perl 0.07% Lua 3.28% C++ 0.38% Objective-C 0.01% Makefile 0.09%

neovim's People

Contributors

aktau avatar ashleyh avatar atwupack avatar bfredl avatar dougschneider avatar elmart avatar equalsraf avatar felipecrv avatar fmoralesc avatar fornwall avatar fwalch avatar glts avatar hinidu avatar jmehne avatar jszakmeister avatar justinmk avatar lslah avatar mahkoh avatar metrix78 avatar mhinz avatar oni-link avatar rainerborene avatar rjw57 avatar schmee avatar shougo avatar stefan991 avatar tarruda avatar war1025 avatar xu-cheng avatar zyx-i avatar

Watchers

 avatar  avatar

neovim's Issues

Haskell Client

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.