mirror of
https://github.com/qvacua/vimr.git
synced 2024-11-24 11:37:32 +03:00
VimR — Neovim GUI for macOS in Swift
cocoamacosneovimneovim-clientsneovim-experienceneovim-guisobjective-cstarred-qvacua-repostarred-reposwiftvim
2623b351c6
- add the NeoVimServer binary - we're on our way to remove the XPC service since only 1-to-1 correspondence possible between an XPC and the main app - NeoVimServer communicates with the main app via two CFMessagePorts - Use enums to distinguish between messages |
||
---|---|---|
docs | ||
neovim@e0c8e5101b | ||
NeoVimServer | ||
NeoVimXpc | ||
nvox | ||
nvox.xcodeproj | ||
nvoxTests | ||
SwiftNeoVim | ||
SwiftNeoVimTests | ||
.gitignore | ||
.gitmodules | ||
Cartfile | ||
Cartfile.resolved | ||
LICENSE | ||
local.mk | ||
README.md |
nvox
NeoVim for OS X
About
There are other working NeoVim GUIs for OS X, e.g. NyaoVim, neovim-dot-app, etc., why another? Well, nvox is a toy project, meaning e.g. no tests whatsoever, for me to:
- play around (obviously) with NeoVim,
- play around with the
XPC
-architecture and to find out whether this is a viable choice for an OSX-NeoVim-GUI-app, - play around with Swift (and especially with RxSwift) and
- (most importantly) have fun!
It could very well be that nothing useful comes out of it.
How to Build
First install homebrew
, then:
xcode-select --install # install the Xcode command line tools
brew install carthage # install Carthage for dependency management
brew install libtool automake cmake pkg-config gettext ninja # install libs and tools for neovim
carthage update --platform osx
git submodule update --init
cd neovim
ln -s ../NeoVimXpc/local.mk .
make CMAKE_BUILD_TYPE=Release libnvim # optional, the nvox target in Xcode also does this
Run the nvox
-target in Xcode.
Project Setup
Artifacts Hierarchy
nvox.app
+-- SwiftNeoVim.framework
+-- NeoVimView
+-- NeoVimXpc.xpc
+-- libnvim
+-- other libs for NeoVim
+-- runtime files for NeoVim
Libraries for NeoVim
- The library
libiconv
is linked by the linker flag-liconv
. The version bundled with OSX will be linked. - The library
libintl
should be installed byhomebrew
and is statically linked by explicitly using the linker flag/usr/local/opt/gettext/lib/libintl.a
. - Other libraries used by NeoVim, which are automatically built by building
libnvim
, are linked by adding them to the Xcode project.