Code Monkey home page Code Monkey logo

neovim-qt's Introduction

Neovim client library and GUI, in Qt5.

Build Status Build status Build Status codecov Status Build Status Downloads

Requirements

  • Qt5
  • Neovim

Building

You can build using CMake and your build system of choice. It should build in any system where Qt5 and Msgpack can build.

For Unix call

$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make

for Windows both MSVC and Mingw are supported. Use the following

$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ cmake --build .

For MSVC build you may have to specify the VS version and build type. Always make sure the VS versions matches your Qt libraries.

$ mkdir build
$ cd build
$ cmake -G "Visual Studio 14" -DCMAKE_BUILD_TYPE=Release ..
$ cmake --build . --config Release --target install

The binaries will be under build/bin/. The GUI binary is called nvim-qt. Run make install to install it, or execute from the source setting the environment variable NVIM_QT_RUNTIME as the path holding the GUI shim plugin

$ NVIM_QT_RUNTIME_PATH=../src/gui/runtime bin/nvim-qt

See the wiki for detailed build instructions.

Using the GUI

Run nvim-qt, the nvim binary must be in your $PATH. Check nvim-qt --help for additional options.

Commands for interacting with the GUI are regular commands, available in the documentation :help nvim-gui-shim. For example to change the font call

:Guifont DejaVu Sans Mono:h13

To disable the GUI tabline and use the nvim TUI tabline, call

:GuiTabline 0

You can set GUI options on startup, in the GUI configuration file (:help ginit.vim).

In recent versions of Neovim you can also use regular options (in init.vim) that have the same effect:

  • set guifont=DejaVu\ Sans\ Mono:h11
  • set linespace=4

Development

The NeovimConnector class is used to setup the connection to Neovim. It also provides you with low level methods for RPC - in general you should be using the signals/slots in the QObject returned by NeovimConnector::neovimObject()

  1. To call a function call the corresponding slot
  2. The result of the call is delivered by the corresponding signal, by convention these signals are named 'on_' + slot_name
  3. The Neovim() class is automagically generated from the Neovim metadata
  4. For Neovim functions that take the Object type we use QVariant
  5. To catch Neovim Notifications connect to the Neovim::neovimNotification signal

To Update the RPC bindings

Part of the code is auto-generated by calling Neovim to get the API metadata, and generating C++ code. This is done using a python script (generate_bindings.py) if you just want to use neovim-qt as is you don't need to worry about this, I already include the generated code in the repository.

The bindings source templates are stored under the bindings/ folder the generated code is in src/auto/.

To generate the bindings yourself you need

  • python
  • python-msgpack
  • jinja2

Just run make bindings in Unix or the equivalent build command in Windows.

neovim-qt's People

Contributors

equalsraf avatar jgehrig avatar gagbo avatar bkoropoff avatar khalidchawtany avatar ferranpm avatar jamessan avatar statiolake avatar lambdalisue avatar zhaozg avatar rkitover avatar roflcopter4 avatar erw7 avatar sprainbrains avatar michaeljones avatar koalefant avatar justinmk avatar jpleau avatar medek avatar nowrep avatar davidgaleano avatar major-kolz avatar neilgirdhar avatar nilsmartel avatar nuclearo avatar diefans avatar paulondc avatar rdnetto avatar sassanh avatar tmiasko avatar

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.