1
1
mirror of https://github.com/qvacua/vimr.git synced 2024-11-24 11:37:32 +03:00
VimR — Neovim GUI for macOS in Swift
Go to file
Tae Won Ha 2623b351c6
Restructure the project
- 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
2016-07-10 11:38:34 +02:00
docs Add a note on text input 2016-07-03 15:55:11 +02:00
neovim@e0c8e5101b Update neovim 2016-07-06 20:20:55 +02:00
NeoVimServer Restructure the project 2016-07-10 11:38:34 +02:00
NeoVimXpc Establish bidirectional communication channel 2016-07-09 14:05:04 +02:00
nvox Restructure the project 2016-07-10 11:38:34 +02:00
nvox.xcodeproj Restructure the project 2016-07-10 11:38:34 +02:00
nvoxTests Initial commit with content 2016-06-03 23:43:39 +02:00
SwiftNeoVim Restructure the project 2016-07-10 11:38:34 +02:00
SwiftNeoVimTests Add Quick/Nimble and a stub test 2016-07-03 21:37:12 +02:00
.gitignore Add RxSwift via Carthage 2016-06-03 23:45:15 +02:00
.gitmodules Use https for neovim submodule 2016-07-05 21:48:42 +02:00
Cartfile Add Quick/Nimble and a stub test 2016-07-03 21:37:12 +02:00
Cartfile.resolved Add Quick/Nimble and a stub test 2016-07-03 21:37:12 +02:00
LICENSE Initial commit with content 2016-06-03 23:43:39 +02:00
local.mk Add SwiftNeoVim framework target 2016-06-05 17:46:05 +02:00
README.md Update README.md 2016-07-06 18:36:57 +02:00

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 by homebrew 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.