Neovim client library and GUI, in Qt5.
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
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
You can set GUI options on startup, in the GUI configuration file (:help ginit.vim).
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()
- To call a function call the corresponding slot
- The result of the call is delivered by the corresponding signal, by convention these signals are named 'on_' + slot_name
- The Neovim() class is automagically generated from the Neovim metadata
- For Neovim functions that take the Object type we use QVariant
- 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
make bindings in Unix or the equivalent build command in Windows.