1
1
mirror of https://github.com/qvacua/vimr.git synced 2024-11-23 19:21:53 +03:00
VimR — Neovim GUI for macOS in Swift
Go to file
Tae Won Ha 1ca45e84c5
Manually memory-manage in the XPC implementation
- Input events are fed and processed in two different threads. We want
  to be sure that our NSStrings are released only after the processing
  of the event has been done.
2016-06-07 19:47:27 +02:00
neovim@a4922a2e9e Update neovim 2016-06-05 17:50:43 +02:00
NeoVimXpc Manually memory-manage in the XPC implementation 2016-06-07 19:47:27 +02:00
nvox Call vim_input on the main_loop 2016-06-06 21:50:35 +02:00
nvox.xcodeproj Manually memory-manage in the XPC implementation 2016-06-07 19:47:27 +02:00
nvoxTests Initial commit with content 2016-06-03 23:43:39 +02:00
SwiftNeoVim Manually memory-manage in the XPC implementation 2016-06-07 19:47:27 +02:00
.gitignore Add RxSwift via Carthage 2016-06-03 23:45:15 +02:00
.gitmodules Initial commit with content 2016-06-03 23:43:39 +02:00
Cartfile Use RxSwift to react to some of the UI events 2016-06-05 17:49:16 +02:00
Cartfile.resolved Use RxSwift to react to some of the UI events 2016-06-05 17:49:16 +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-06-06 23:29:36 +02:00

nvox

NeoVim for OS X

About

nvox is a toy project, meaning e.g. no tests whatsoever, for me to:

  • play around with NeoVim,
  • play around with the XPC-architecture and to find out whether this is a viable choice for an OSX-NeoVim-GUI-app and
  • play around with Swift (and RxSwift).

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