mirror of
https://github.com/qvacua/vimr.git
synced 2024-12-25 06:43:24 +03:00
Merge remote-tracking branch 'origin/develop' into update-neovim
This commit is contained in:
commit
60615aa245
4
.gitignore
vendored
4
.gitignore
vendored
@ -177,8 +177,4 @@ Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
# -------------------------------------------
|
||||
*.generated.h
|
||||
*.generated.m
|
||||
|
||||
.deps
|
||||
|
2
Brewfile
2
Brewfile
@ -6,3 +6,5 @@ brew 'cmake'
|
||||
brew 'pkg-config'
|
||||
brew 'gettext'
|
||||
brew 'ninja'
|
||||
|
||||
brew 'python3'
|
||||
|
@ -218,7 +218,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 257;
|
||||
CURRENT_PROJECT_VERSION = 258;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
@ -278,7 +278,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 257;
|
||||
CURRENT_PROJECT_VERSION = 258;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
@ -308,7 +308,7 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 257;
|
||||
DYLIB_CURRENT_VERSION = 258;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = MsgPackRpc/Info.plist;
|
||||
@ -331,7 +331,7 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 257;
|
||||
DYLIB_CURRENT_VERSION = 258;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = MsgPackRpc/Info.plist;
|
||||
|
@ -15,9 +15,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>SNAPSHOT-257</string>
|
||||
<string>SNAPSHOT-258</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>257</string>
|
||||
<string>258</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
@ -10,7 +10,7 @@
|
||||
4B9E33711FCB475600E0C4BC /* NvimMsgPack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B9E336F1FCB475600E0C4BC /* NvimMsgPack.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
4B9E33781FCB476D00E0C4BC /* MsgPackRpc.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9E33791FCB476D00E0C4BC /* MsgPackRpc.framework */; };
|
||||
4B9E337C1FCB47B300E0C4BC /* NvimApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B9E337A1FCB47B300E0C4BC /* NvimApi.swift */; };
|
||||
4B9E337D1FCB47B300E0C4BC /* NvimApiMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B9E337B1FCB47B300E0C4BC /* NvimApiMethods.swift */; };
|
||||
4B9E337D1FCB47B300E0C4BC /* NvimApiMethods.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B9E337B1FCB47B300E0C4BC /* NvimApiMethods.generated.swift */; };
|
||||
4B9E33831FCB47F900E0C4BC /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4B9E337F1FCB47F900E0C4BC /* Info.plist */; };
|
||||
4B9E33841FCB47F900E0C4BC /* Result.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B9E33801FCB47F900E0C4BC /* Result.h */; };
|
||||
4B9E33851FCB47F900E0C4BC /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B9E33811FCB47F900E0C4BC /* Result.swift */; };
|
||||
@ -23,7 +23,7 @@
|
||||
4B9E33701FCB475600E0C4BC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4B9E33791FCB476D00E0C4BC /* MsgPackRpc.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MsgPackRpc.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4B9E337A1FCB47B300E0C4BC /* NvimApi.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NvimApi.swift; sourceTree = "<group>"; };
|
||||
4B9E337B1FCB47B300E0C4BC /* NvimApiMethods.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NvimApiMethods.swift; sourceTree = "<group>"; };
|
||||
4B9E337B1FCB47B300E0C4BC /* NvimApiMethods.generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NvimApiMethods.generated.swift; sourceTree = "<group>"; };
|
||||
4B9E337F1FCB47F900E0C4BC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4B9E33801FCB47F900E0C4BC /* Result.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Result.h; sourceTree = "<group>"; };
|
||||
4B9E33811FCB47F900E0C4BC /* Result.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Result.swift; sourceTree = "<group>"; };
|
||||
@ -66,7 +66,7 @@
|
||||
children = (
|
||||
4B9E336F1FCB475600E0C4BC /* NvimMsgPack.h */,
|
||||
4B9E337A1FCB47B300E0C4BC /* NvimApi.swift */,
|
||||
4B9E337B1FCB47B300E0C4BC /* NvimApiMethods.swift */,
|
||||
4B9E337B1FCB47B300E0C4BC /* NvimApiMethods.generated.swift */,
|
||||
4B9E337E1FCB47F900E0C4BC /* Result */,
|
||||
4B9E33701FCB475600E0C4BC /* Info.plist */,
|
||||
);
|
||||
@ -112,6 +112,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4B9E33741FCB475600E0C4BC /* Build configuration list for PBXNativeTarget "NvimMsgPack" */;
|
||||
buildPhases = (
|
||||
4BA60C2220172D8F002DBFB7 /* ShellScript */,
|
||||
4B9E33671FCB475600E0C4BC /* Sources */,
|
||||
4B9E33681FCB475600E0C4BC /* Frameworks */,
|
||||
4B9E33691FCB475600E0C4BC /* Headers */,
|
||||
@ -172,6 +173,22 @@
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
4BA60C2220172D8F002DBFB7 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = ../bin/generate_api_methods.py;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
4B9E33671FCB475600E0C4BC /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
@ -179,7 +196,7 @@
|
||||
files = (
|
||||
4B9E33861FCB47F900E0C4BC /* ResultProtocol.swift in Sources */,
|
||||
4B9E33851FCB47F900E0C4BC /* Result.swift in Sources */,
|
||||
4B9E337D1FCB47B300E0C4BC /* NvimApiMethods.swift in Sources */,
|
||||
4B9E337D1FCB47B300E0C4BC /* NvimApiMethods.generated.swift in Sources */,
|
||||
4B9E337C1FCB47B300E0C4BC /* NvimApi.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -218,7 +235,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 257;
|
||||
CURRENT_PROJECT_VERSION = 258;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
@ -278,7 +295,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 257;
|
||||
CURRENT_PROJECT_VERSION = 258;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
@ -308,7 +325,7 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 257;
|
||||
DYLIB_CURRENT_VERSION = 258;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = NvimMsgPack/Info.plist;
|
||||
@ -331,7 +348,7 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 257;
|
||||
DYLIB_CURRENT_VERSION = 258;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = NvimMsgPack/Info.plist;
|
||||
|
@ -15,9 +15,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>SNAPSHOT-257</string>
|
||||
<string>SNAPSHOT-258</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>257</string>
|
||||
<string>258</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
@ -2825,4 +2825,3 @@ extension Dictionary {
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
@ -14,8 +14,8 @@
|
||||
remoteServerName:(NSString *)remoteServerName
|
||||
nvimArgs:(NSArray<NSString *> *)nvimArgs;
|
||||
|
||||
- (void)sendMessageWithId:(NeoVimServerMsgId)msgid;
|
||||
- (void)sendMessageWithId:(NeoVimServerMsgId)msgid data:(NSData *)data;
|
||||
- (void)sendMessageWithId:(NvimServerMsgId)msgid;
|
||||
- (void)sendMessageWithId:(NvimServerMsgId)msgid data:(NSData *)data;
|
||||
- (void)notifyReadiness;
|
||||
|
||||
@end
|
||||
|
@ -59,25 +59,25 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
|
||||
switch (msgid) {
|
||||
|
||||
case NeoVimAgentMsgIdAgentReady: {
|
||||
case NvimBridgeMsgIdAgentReady: {
|
||||
NSInteger *values = (NSInteger *) CFDataGetBytePtr(data);
|
||||
start_neovim(values[0], values[1], neoVimServer.nvimArgs);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
case NeoVimAgentMsgIdScroll: return data_sync(data, outputCondition, neovim_scroll);
|
||||
case NvimBridgeMsgIdScroll: return data_sync(data, outputCondition, neovim_scroll);
|
||||
|
||||
case NeoVimAgentMsgIdGetEscapeFileNames: return data_sync(data, outputCondition, neovim_escaped_filenames);
|
||||
case NvimBridgeMsgIdGetEscapeFileNames: return data_sync(data, outputCondition, neovim_escaped_filenames);
|
||||
|
||||
case NeoVimAgentMsgIdResize: return data_sync(data, outputCondition, neovim_resize);
|
||||
case NvimBridgeMsgIdResize: return data_sync(data, outputCondition, neovim_resize);
|
||||
|
||||
case NeoVimAgentMsgIdInput: return data_sync(data, outputCondition, neovim_vim_input);
|
||||
case NvimBridgeMsgIdInput: return data_sync(data, outputCondition, neovim_vim_input);
|
||||
|
||||
case NeoVimAgentMsgIdInputMarked: return data_sync(data, outputCondition, neovim_vim_input_marked_text);
|
||||
case NvimBridgeMsgIdInputMarked: return data_sync(data, outputCondition, neovim_vim_input_marked_text);
|
||||
|
||||
case NeoVimAgentMsgIdDelete: return data_sync(data, outputCondition, neovim_delete);
|
||||
case NvimBridgeMsgIdDelete: return data_sync(data, outputCondition, neovim_delete);
|
||||
|
||||
case NeoVimAgentMsgIdFocusGained: return data_sync(data, outputCondition, neovim_focus_gained);
|
||||
case NvimBridgeMsgIdFocusGained: return data_sync(data, outputCondition, neovim_focus_gained);
|
||||
|
||||
default: return NULL;
|
||||
|
||||
@ -183,11 +183,11 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
CFRunLoopRun();
|
||||
}
|
||||
|
||||
- (void)sendMessageWithId:(NeoVimServerMsgId)msgid {
|
||||
- (void)sendMessageWithId:(NvimServerMsgId)msgid {
|
||||
[self sendMessageWithId:msgid data:nil];
|
||||
}
|
||||
|
||||
- (void)sendMessageWithId:(NeoVimServerMsgId)msgid data:(NSData *)data {
|
||||
- (void)sendMessageWithId:(NvimServerMsgId)msgid data:(NSData *)data {
|
||||
#ifdef DEBUG_NEOVIM_SERVER_STANDALONE
|
||||
return;
|
||||
#endif
|
||||
@ -210,7 +210,7 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
|
||||
- (void)notifyReadiness {
|
||||
#ifndef DEBUG_NEOVIM_SERVER_STANDALONE
|
||||
[self sendMessageWithId:NeoVimServerMsgIdServerReady data:nil];
|
||||
[self sendMessageWithId:NvimServerMsgIdServerReady data:nil];
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ static void send_dirty_status() {
|
||||
_dirty = new_dirty_status;
|
||||
DLOG("sending dirty status: %d", _dirty);
|
||||
NSData *data = [[NSData alloc] initWithBytes:&_dirty length:sizeof(bool)];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdDirtyStatusChanged data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdDirtyStatusChanged data:data];
|
||||
[data release];
|
||||
}
|
||||
|
||||
@ -122,14 +122,14 @@ static void send_cwd() {
|
||||
char_u *temp = xmalloc(MAXPATHL);
|
||||
if (os_dirname(temp, MAXPATHL) == FAIL) {
|
||||
xfree(temp);
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdCwdChanged];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdCwdChanged];
|
||||
}
|
||||
|
||||
NSString *pwd = [NSString stringWithCString:(const char *) temp encoding:NSUTF8StringEncoding];
|
||||
xfree(temp);
|
||||
|
||||
NSData *resultData = [pwd dataUsingEncoding:NSUTF8StringEncoding];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdCwdChanged data:resultData];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdCwdChanged data:resultData];
|
||||
}
|
||||
|
||||
static HlAttrs HlAttrsFromAttrCode(int attr_code) {
|
||||
@ -180,7 +180,7 @@ static void send_colorscheme() {
|
||||
};
|
||||
NSData *resultData = [NSData dataWithBytes:values length:5 * sizeof(NSInteger)];
|
||||
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdColorSchemeChanged data:resultData];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdColorSchemeChanged data:resultData];
|
||||
}
|
||||
|
||||
static void insert_marked_text(NSString *markedText) {
|
||||
@ -278,7 +278,7 @@ static void server_ui_flush(UI *ui __unused) {
|
||||
return;
|
||||
}
|
||||
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdFlush
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdFlush
|
||||
data:[NSKeyedArchiver archivedDataWithRootObject:render_data]];
|
||||
[render_data removeAllObjects];
|
||||
}
|
||||
@ -290,7 +290,7 @@ static void server_ui_resize(UI *ui __unused, Integer width, Integer height) {
|
||||
|
||||
NSInteger values[] = {width, height};
|
||||
NSData *data = [[NSData alloc] initWithBytes:values length:(2 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdResize data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdResize data:data];
|
||||
[data release];
|
||||
}
|
||||
}
|
||||
@ -300,7 +300,7 @@ static void server_ui_clear(UI *ui __unused) {
|
||||
server_ui_flush(NULL);
|
||||
}
|
||||
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdClear];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdClear];
|
||||
}
|
||||
|
||||
static void server_ui_eol_clear(UI *ui __unused) {
|
||||
@ -308,7 +308,7 @@ static void server_ui_eol_clear(UI *ui __unused) {
|
||||
server_ui_flush(NULL);
|
||||
}
|
||||
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdEolClear];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdEolClear];
|
||||
}
|
||||
|
||||
static void server_ui_cursor_goto(UI *ui __unused, Integer row, Integer col) {
|
||||
@ -330,23 +330,23 @@ static void server_ui_cursor_goto(UI *ui __unused, Integer row, Integer col) {
|
||||
}
|
||||
|
||||
static void server_ui_update_menu(UI *ui __unused) {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetMenu];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetMenu];
|
||||
}
|
||||
|
||||
static void server_ui_busy_start(UI *ui __unused) {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdBusyStart];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdBusyStart];
|
||||
}
|
||||
|
||||
static void server_ui_busy_stop(UI *ui __unused) {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdBusyStop];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdBusyStop];
|
||||
}
|
||||
|
||||
static void server_ui_mouse_on(UI *ui __unused) {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdMouseOn];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdMouseOn];
|
||||
}
|
||||
|
||||
static void server_ui_mouse_off(UI *ui __unused) {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdMouseOff];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdMouseOff];
|
||||
}
|
||||
|
||||
static void server_ui_mode_info_set(UI *ui __unused, Boolean enabled __unused,
|
||||
@ -358,7 +358,7 @@ static void server_ui_mode_change(UI *ui __unused, String mode_str __unused, Int
|
||||
@autoreleasepool {
|
||||
NSInteger value = mode;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdModeChange data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdModeChange data:data];
|
||||
[data release];
|
||||
}
|
||||
}
|
||||
@ -371,7 +371,7 @@ static void server_ui_set_scroll_region(UI *ui __unused, Integer top, Integer bo
|
||||
|
||||
NSInteger values[] = {top, bot, left, right};
|
||||
NSData *data = [[NSData alloc] initWithBytes:values length:(4 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetScrollRegion data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetScrollRegion data:data];
|
||||
[data release];
|
||||
}
|
||||
}
|
||||
@ -382,7 +382,7 @@ static void server_ui_scroll(UI *ui __unused, Integer count) {
|
||||
|
||||
NSInteger value = count;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdScroll data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdScroll data:data];
|
||||
[data release];
|
||||
}
|
||||
}
|
||||
@ -454,11 +454,11 @@ static void server_ui_put(UI *ui __unused, String str) {
|
||||
}
|
||||
|
||||
static void server_ui_bell(UI *ui __unused) {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdBell];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdBell];
|
||||
}
|
||||
|
||||
static void server_ui_visual_bell(UI *ui __unused) {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdVisualBell];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdVisualBell];
|
||||
}
|
||||
|
||||
static void server_ui_update_fg(UI *ui __unused, Integer fg) {
|
||||
@ -468,7 +468,7 @@ static void server_ui_update_fg(UI *ui __unused, Integer fg) {
|
||||
if (fg == -1) {
|
||||
value[0] = _default_foreground;
|
||||
NSData *data = [[NSData alloc] initWithBytes:value length:(1 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetForeground data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetForeground data:data];
|
||||
[data release];
|
||||
|
||||
return;
|
||||
@ -478,7 +478,7 @@ static void server_ui_update_fg(UI *ui __unused, Integer fg) {
|
||||
|
||||
value[0] = fg;
|
||||
NSData *data = [[NSData alloc] initWithBytes:value length:(1 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetForeground data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetForeground data:data];
|
||||
[data release];
|
||||
}
|
||||
}
|
||||
@ -490,7 +490,7 @@ static void server_ui_update_bg(UI *ui __unused, Integer bg) {
|
||||
if (bg == -1) {
|
||||
value[0] = _default_background;
|
||||
NSData *data = [[NSData alloc] initWithBytes:value length:(1 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetBackground data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetBackground data:data];
|
||||
[data release];
|
||||
|
||||
return;
|
||||
@ -499,7 +499,7 @@ static void server_ui_update_bg(UI *ui __unused, Integer bg) {
|
||||
_default_background = bg;
|
||||
value[0] = bg;
|
||||
NSData *data = [[NSData alloc] initWithBytes:value length:(1 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetBackground data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetBackground data:data];
|
||||
[data release];
|
||||
}
|
||||
}
|
||||
@ -511,7 +511,7 @@ static void server_ui_update_sp(UI *ui __unused, Integer sp) {
|
||||
if (sp == -1) {
|
||||
value[0] = _default_special;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetSpecial data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetSpecial data:data];
|
||||
[data release];
|
||||
|
||||
return;
|
||||
@ -520,7 +520,7 @@ static void server_ui_update_sp(UI *ui __unused, Integer sp) {
|
||||
_default_special = sp;
|
||||
value[0] = sp;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetSpecial data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetSpecial data:data];
|
||||
[data release];
|
||||
}
|
||||
}
|
||||
@ -532,7 +532,7 @@ static void server_ui_set_title(UI *ui __unused, String title) {
|
||||
}
|
||||
|
||||
NSString *string = [[NSString alloc] initWithCString:title.data encoding:NSUTF8StringEncoding];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetTitle
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetTitle
|
||||
data:[string dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
[string release];
|
||||
}
|
||||
@ -545,7 +545,7 @@ static void server_ui_set_icon(UI *ui __unused, String icon) {
|
||||
}
|
||||
|
||||
NSString *string = [[NSString alloc] initWithCString:icon.data encoding:NSUTF8StringEncoding];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetIcon
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdSetIcon
|
||||
data:[string dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
[string release];
|
||||
}
|
||||
@ -557,7 +557,7 @@ static void server_ui_option_set(UI *ui __unused, String name, Object value) {
|
||||
}
|
||||
|
||||
static void server_ui_stop(UI *ui __unused) {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdStop];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdStop];
|
||||
|
||||
ServerUiData *data = (ServerUiData *) ui->data;
|
||||
data->stop = true;
|
||||
@ -649,7 +649,7 @@ void custom_ui_autocmds_groups(
|
||||
[data appendBytes:&bufHandle length:sizeof(NSInteger)];
|
||||
}
|
||||
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdAutoCommandEvent data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdAutoCommandEvent data:data];
|
||||
|
||||
[data release];
|
||||
}
|
||||
@ -690,7 +690,7 @@ void start_neovim(NSInteger width, NSInteger height, NSArray<NSString *> *args)
|
||||
|
||||
bool value = msg_didany > 0;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:sizeof(bool)];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdNeoVimReady data:data];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdNvimReady data:data];
|
||||
[data release];
|
||||
}
|
||||
|
||||
@ -817,7 +817,7 @@ void neovim_vim_input(void **argv) {
|
||||
NSInteger values[] = {_put_row, MAX(_put_column - i, 0)};
|
||||
|
||||
NSData *unmarkData = [[NSData alloc] initWithBytes:values length:(2 * sizeof(NSInteger))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdUnmark data:unmarkData];
|
||||
[_neovim_server sendMessageWithId:NvimServerMsgIdUnmark data:unmarkData];
|
||||
[unmarkData release];
|
||||
}
|
||||
}
|
||||
|
@ -275,6 +275,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4B90F00C1FD2AF59008A39E0 /* Build configuration list for PBXNativeTarget "NvimView" */;
|
||||
buildPhases = (
|
||||
4BA60C2120172AB8002DBFB7 /* ShellScript */,
|
||||
4B90EFFF1FD2AF59008A39E0 /* Sources */,
|
||||
4B90F0001FD2AF59008A39E0 /* Frameworks */,
|
||||
4B90F0011FD2AF59008A39E0 /* Headers */,
|
||||
@ -297,7 +298,6 @@
|
||||
buildConfigurationList = 4B90F0531FD2AFD3008A39E0 /* Build configuration list for PBXNativeTarget "NvimServer" */;
|
||||
buildPhases = (
|
||||
4BE45C091FD2D92D005C0A95 /* ShellScript */,
|
||||
4BE45C0A1FD2D941005C0A95 /* ShellScript */,
|
||||
4B90F04B1FD2AFD3008A39E0 /* Sources */,
|
||||
4B90F04C1FD2AFD3008A39E0 /* Frameworks */,
|
||||
4B90F04D1FD2AFD3008A39E0 /* CopyFiles */,
|
||||
@ -359,6 +359,19 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
4BA60C2120172AB8002DBFB7 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = ../bin/generate_source.py;
|
||||
};
|
||||
4BE45C091FD2D92D005C0A95 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@ -372,19 +385,6 @@
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "pushd neovim\n../../bin/build_libnvim.sh\npopd";
|
||||
};
|
||||
4BE45C0A1FD2D941005C0A95 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = ../bin/generate_source.py;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
@ -472,7 +472,7 @@
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 257;
|
||||
CURRENT_PROJECT_VERSION = 258;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
@ -530,7 +530,7 @@
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 257;
|
||||
CURRENT_PROJECT_VERSION = 258;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
@ -557,7 +557,7 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 257;
|
||||
DYLIB_CURRENT_VERSION = 258;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
|
||||
FRAMEWORK_VERSION = A;
|
||||
@ -579,7 +579,7 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 257;
|
||||
DYLIB_CURRENT_VERSION = 258;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
|
||||
FRAMEWORK_VERSION = A;
|
||||
|
@ -15,9 +15,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>SNAPSHOT-257</string>
|
||||
<string>SNAPSHOT-258</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>257</string>
|
||||
<string>258</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
|
@ -1,3 +1,5 @@
|
||||
// Auto generated for nvim version 0.2.2.
|
||||
// See bin/generate_source.py
|
||||
|
||||
enum NvimAutoCommandEvent: Int {
|
||||
case bufadd = 0
|
||||
|
@ -179,27 +179,24 @@ extension NvimView {
|
||||
|
||||
/// Closes the current window.
|
||||
public func closeCurrentTab() {
|
||||
// We don't have to wait here even when neovim quits since we wait in gui.async() block in neoVimStopped().
|
||||
self.nvim.command(command: "q", expectsReturnValue: false)
|
||||
self.nvim.command(command: "q", expectsReturnValue: true)
|
||||
}
|
||||
|
||||
public func saveCurrentTab() {
|
||||
self.nvim.command(command: "w", expectsReturnValue: false)
|
||||
self.nvim.command(command: "w", expectsReturnValue: true)
|
||||
}
|
||||
|
||||
public func saveCurrentTab(url: URL) {
|
||||
self.nvim.command(command: "w \(url.path)", expectsReturnValue: false)
|
||||
self.nvim.command(command: "w \(url.path)", expectsReturnValue: true)
|
||||
}
|
||||
|
||||
public func closeCurrentTabWithoutSaving() {
|
||||
self.nvim.command(command: "q!", expectsReturnValue: false)
|
||||
self.nvim.command(command: "q!", expectsReturnValue: true)
|
||||
}
|
||||
|
||||
public func quitNeoVimWithoutSaving() {
|
||||
self.nvim.command(command: "qa!", expectsReturnValue: false)
|
||||
self.eventsSubject.onNext(.neoVimStopped)
|
||||
self.eventsSubject.onCompleted()
|
||||
self.waitForNeoVimToQuit()
|
||||
self.bridgeLogger.mark()
|
||||
self.nvim.command(command: "qa!", expectsReturnValue: true)
|
||||
}
|
||||
|
||||
public func vimOutput(of command: String) -> String {
|
||||
|
@ -39,7 +39,6 @@ extension NvimView {
|
||||
|
||||
let dirtyRects = self.rectsBeingDrawn()
|
||||
|
||||
self.drawBaseBackground(rects: dirtyRects, in: context)
|
||||
self.rowRunIntersecting(rects: dirtyRects).forEach { self.draw(rowRun: $0, in: context) }
|
||||
self.drawCursor(context: context)
|
||||
}
|
||||
@ -127,14 +126,6 @@ extension NvimView {
|
||||
self.shouldDrawCursor = false
|
||||
}
|
||||
|
||||
private func drawBaseBackground(rects: [CGRect], in context: CGContext) {
|
||||
context.saveGState()
|
||||
defer { context.restoreGState() }
|
||||
|
||||
context.setFillColor(ColorUtils.cgColorIgnoringAlpha(self.grid.background))
|
||||
context.fill(rects)
|
||||
}
|
||||
|
||||
private func drawBackground(rowRun: RowRun, in context: CGContext) {
|
||||
if rowRun.attrs.background == self.grid.background {
|
||||
return
|
||||
@ -212,7 +203,7 @@ extension NvimView {
|
||||
}
|
||||
|
||||
private func rowRunsFor(rowRange: CountableClosedRange<Int>,
|
||||
columnRange: CountableClosedRange<Int>) -> [RowRun] {
|
||||
columnRange: CountableClosedRange<Int>) -> [RowRun] {
|
||||
|
||||
return rowRange
|
||||
.map { (row) -> [RowRun] in
|
||||
@ -318,7 +309,8 @@ extension NvimView {
|
||||
}
|
||||
}
|
||||
|
||||
private let emojiAttrs = [ NSAttributedStringKey.font: NSFont(name: "AppleColorEmoji", size: 72)! ]
|
||||
private let emojiAttrs = [NSAttributedStringKey.font: NSFont(name: "AppleColorEmoji", size: 72)!]
|
||||
|
||||
private let resizeTextAttrs = [
|
||||
NSAttributedStringKey.font: NSFont.systemFont(ofSize: 18),
|
||||
NSAttributedStringKey.foregroundColor: NSColor.darkGray
|
||||
|
@ -9,28 +9,28 @@ import RxSwift
|
||||
|
||||
extension NvimView {
|
||||
|
||||
func resize(width width: Int, height: Int) {
|
||||
gui.async {
|
||||
self.bridgeLogger.debug("\(width) x \(height)")
|
||||
func resize(width: Int, height: Int) {
|
||||
self.bridgeLogger.debug("\(width) x \(height)")
|
||||
|
||||
gui.async {
|
||||
self.grid.resize(Size(width: width, height: height))
|
||||
self.markForRenderWholeView()
|
||||
}
|
||||
}
|
||||
|
||||
func clear() {
|
||||
gui.async {
|
||||
self.bridgeLogger.mark()
|
||||
self.bridgeLogger.mark()
|
||||
|
||||
gui.async {
|
||||
self.grid.clear()
|
||||
self.markForRenderWholeView()
|
||||
}
|
||||
}
|
||||
|
||||
func eolClear() {
|
||||
gui.async {
|
||||
self.bridgeLogger.mark()
|
||||
self.bridgeLogger.mark()
|
||||
|
||||
gui.async {
|
||||
self.grid.eolClear()
|
||||
|
||||
let putPosition = self.grid.position
|
||||
@ -43,25 +43,26 @@ extension NvimView {
|
||||
}
|
||||
|
||||
func modeChange(_ mode: CursorModeShape) {
|
||||
self.bridgeLogger.debug(name(of: mode))
|
||||
|
||||
gui.async {
|
||||
self.bridgeLogger.debug(name(of: mode))
|
||||
self.mode = mode
|
||||
}
|
||||
}
|
||||
|
||||
func setScrollRegion(top: Int, bottom: Int, left: Int, right: Int) {
|
||||
gui.async {
|
||||
self.bridgeLogger.debug("\(top):\(bottom):\(left):\(right)")
|
||||
self.bridgeLogger.debug("\(top):\(bottom):\(left):\(right)")
|
||||
|
||||
gui.async {
|
||||
let region = Region(top: top, bottom: bottom, left: left, right: right)
|
||||
self.grid.setScrollRegion(region)
|
||||
}
|
||||
}
|
||||
|
||||
func scroll(_ count: Int) {
|
||||
gui.async {
|
||||
self.bridgeLogger.debug(count)
|
||||
self.bridgeLogger.debug(count)
|
||||
|
||||
gui.async {
|
||||
self.grid.scroll(count)
|
||||
self.markForRender(region: self.grid.region)
|
||||
// Do not send msgs to agent -> neovim in the delegate method. It causes spinning
|
||||
@ -71,9 +72,9 @@ extension NvimView {
|
||||
}
|
||||
|
||||
func unmark(row: Int, column: Int) {
|
||||
gui.async {
|
||||
self.bridgeLogger.debug("\(row):\(column)")
|
||||
self.bridgeLogger.debug("\(row):\(column)")
|
||||
|
||||
gui.async {
|
||||
let position = Position(row: row, column: column)
|
||||
|
||||
self.grid.unmarkCell(position)
|
||||
@ -82,9 +83,9 @@ extension NvimView {
|
||||
}
|
||||
|
||||
func flush(_ renderData: [Data]) {
|
||||
gui.async {
|
||||
self.bridgeLogger.hr()
|
||||
self.bridgeLogger.hr()
|
||||
|
||||
gui.async {
|
||||
renderData.forEach { data in
|
||||
data.withUnsafeBytes { (pointer: UnsafePointer<RenderDataType>) in
|
||||
let sizeOfType = MemoryLayout<RenderDataType>.size
|
||||
@ -135,24 +136,26 @@ extension NvimView {
|
||||
}
|
||||
|
||||
func update(foreground fg: Int) {
|
||||
self.bridgeLogger.debug(ColorUtils.colorIgnoringAlpha(fg))
|
||||
|
||||
gui.async {
|
||||
self.bridgeLogger.debug(ColorUtils.colorIgnoringAlpha(fg))
|
||||
self.grid.foreground = fg
|
||||
}
|
||||
}
|
||||
|
||||
func update(background bg: Int) {
|
||||
gui.async {
|
||||
self.bridgeLogger.debug(ColorUtils.colorIgnoringAlpha(bg))
|
||||
self.bridgeLogger.debug(ColorUtils.colorIgnoringAlpha(bg))
|
||||
|
||||
gui.async {
|
||||
self.grid.background = bg
|
||||
self.layer?.backgroundColor = ColorUtils.colorIgnoringAlpha(self.grid.background).cgColor
|
||||
}
|
||||
}
|
||||
|
||||
func update(special sp: Int) {
|
||||
self.bridgeLogger.debug(ColorUtils.colorIgnoringAlpha(sp))
|
||||
|
||||
gui.async {
|
||||
self.bridgeLogger.debug(ColorUtils.colorIgnoringAlpha(sp))
|
||||
self.grid.special = sp
|
||||
}
|
||||
}
|
||||
@ -196,10 +199,10 @@ extension NvimView {
|
||||
}
|
||||
|
||||
func ipcBecameInvalid(_ reason: String) {
|
||||
gui.async {
|
||||
self.bridgeLogger.debug(reason)
|
||||
self.bridgeLogger.debug(reason)
|
||||
|
||||
if self.uiBridge.isNvimQuitting == 1 || self.uiBridge.isNvimQuit {
|
||||
gui.async {
|
||||
if self.uiBridge.isNvimQuitting || self.uiBridge.isNvimQuit {
|
||||
return
|
||||
}
|
||||
|
||||
@ -274,10 +277,10 @@ extension NvimView {
|
||||
self.eventsSubject.onNext(.cwdChanged)
|
||||
}
|
||||
func colorSchemeChanged(_ values: [Int]) {
|
||||
gui.async {
|
||||
let theme = Theme(values)
|
||||
self.bridgeLogger.debug(theme)
|
||||
let theme = Theme(values)
|
||||
self.bridgeLogger.debug(theme)
|
||||
|
||||
gui.async {
|
||||
self.theme = theme
|
||||
self.eventsSubject.onNext(.colorschemeChanged(theme))
|
||||
}
|
||||
|
@ -174,7 +174,7 @@ public class NvimView: NSView,
|
||||
|
||||
public init(frame rect: NSRect, config: Config) {
|
||||
self.drawer = TextDrawer(font: self._font)
|
||||
self.uiBridge = UiBridge(uuid: self.uuid)
|
||||
self.uiBridge = UiBridge(uuid: self.uuid, config: config)
|
||||
|
||||
let sockPath = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("vimr_\(self.uuid).sock").path
|
||||
guard let nvim = NvimApi(at: sockPath) else {
|
||||
@ -193,9 +193,6 @@ public class NvimView: NSView,
|
||||
|
||||
// We cannot set bridge in init since self is not available before super.init()...
|
||||
self.uiBridge.nvimView = self
|
||||
self.uiBridge.useInteractiveZsh = config.useInteractiveZsh
|
||||
self.uiBridge.cwd = config.cwd
|
||||
self.uiBridge.nvimArgs = config.nvimArgs ?? []
|
||||
}
|
||||
|
||||
convenience override public init(frame rect: NSRect) {
|
||||
|
@ -9,19 +9,19 @@ class UiBridge {
|
||||
|
||||
weak var nvimView: NvimView?
|
||||
|
||||
var isNvimQuitting = UInt32(0)
|
||||
var isNvimQuit = false
|
||||
let nvimQuitCondition = NSCondition()
|
||||
|
||||
var useInteractiveZsh = false
|
||||
private(set) var isNvimQuitting = false
|
||||
private(set) var isNvimQuit = false
|
||||
|
||||
var cwd = URL(fileURLWithPath: NSHomeDirectory())
|
||||
var nvimArgs = [String]()
|
||||
|
||||
init(uuid: String) {
|
||||
init(uuid: String, config: NvimView.Config) {
|
||||
self.uuid = uuid
|
||||
self.messageHandler = MessageHandler()
|
||||
|
||||
self.useInteractiveZsh = config.useInteractiveZsh
|
||||
self.nvimArgs = config.nvimArgs ?? []
|
||||
self.cwd = config.cwd
|
||||
|
||||
self.messageHandler.bridge = self
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ class UiBridge {
|
||||
}
|
||||
|
||||
func quit() {
|
||||
OSAtomicOr32Barrier(1, &self.isNvimQuitting)
|
||||
self.isNvimQuitting = true
|
||||
|
||||
self.closePorts()
|
||||
|
||||
@ -86,7 +86,7 @@ class UiBridge {
|
||||
func forceQuit() {
|
||||
self.logger.info("Force-exiting NvimServer \(self.uuid).")
|
||||
|
||||
OSAtomicOr32Barrier(1, &self.isNvimQuitting)
|
||||
self.isNvimQuitting = true
|
||||
|
||||
self.closePorts()
|
||||
self.forceExitNvimServer()
|
||||
@ -106,7 +106,7 @@ class UiBridge {
|
||||
}
|
||||
|
||||
fileprivate func handleMessage(msgId: Int32, data: Data?) {
|
||||
guard let msg = NeoVimServerMsgId(rawValue: Int(msgId)) else {
|
||||
guard let msg = NvimServerMsgId(rawValue: Int(msgId)) else {
|
||||
return
|
||||
}
|
||||
|
||||
@ -115,7 +115,7 @@ class UiBridge {
|
||||
case .serverReady:
|
||||
self.establishNvimConnection()
|
||||
|
||||
case .neoVimReady:
|
||||
case .nvimReady:
|
||||
self.isInitErrorPresent = data?.asArray(ofType: Bool.self, count: 1)?[0] ?? false
|
||||
self.nvimReadyCondition.lock()
|
||||
self.isNvimReady = true
|
||||
@ -131,7 +131,6 @@ class UiBridge {
|
||||
|
||||
self.nvimView?.resize(width: values[0], height: values[1])
|
||||
|
||||
|
||||
case .clear:
|
||||
self.nvimView?.clear()
|
||||
|
||||
@ -296,13 +295,13 @@ class UiBridge {
|
||||
}
|
||||
|
||||
private func establishNvimConnection() {
|
||||
self.remoteServerPort = CFMessagePortCreateRemote(kCFAllocatorDefault, self.remoteServerName.CFStr)
|
||||
self.remoteServerPort = CFMessagePortCreateRemote(kCFAllocatorDefault, self.remoteServerName.cfStr)
|
||||
self.sendMessage(msgId: .agentReady, data: [self.initialWidth, self.initialHeight].data())
|
||||
}
|
||||
|
||||
/// Does not wait for reply.
|
||||
private func sendMessage(msgId: NeoVimAgentMsgId, data: Data?) {
|
||||
if self.isNvimQuitting == 1 {
|
||||
private func sendMessage(msgId: NvimBridgeMsgId, data: Data?) {
|
||||
if self.isNvimQuitting {
|
||||
self.logger.info("NvimServer is quitting, but trying to send msg: \(msgId).")
|
||||
return
|
||||
}
|
||||
@ -320,7 +319,7 @@ class UiBridge {
|
||||
nil,
|
||||
nil)
|
||||
|
||||
if self.isNvimQuitting == 1 {
|
||||
if self.isNvimQuitting {
|
||||
return
|
||||
}
|
||||
|
||||
@ -328,7 +327,7 @@ class UiBridge {
|
||||
let msg = "Remote server responded with \(name(of: responseCode)) for msg \(msgId)."
|
||||
|
||||
self.logger.error(msg)
|
||||
if self.isNvimQuitting == 0 {
|
||||
if !self.isNvimQuitting {
|
||||
self.nvimView?.ipcBecameInvalid(msg)
|
||||
}
|
||||
}
|
||||
@ -353,23 +352,26 @@ class UiBridge {
|
||||
shellArgs.append("-i")
|
||||
}
|
||||
|
||||
let inputPipe = Pipe()
|
||||
self.nvimServerProc = Process()
|
||||
|
||||
let listenAddress = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("vimr_\(self.uuid).sock")
|
||||
var env = selfEnv
|
||||
env["NVIM_LISTEN_ADDRESS"] = listenAddress.path
|
||||
|
||||
self.nvimServerProc?.environment = env
|
||||
self.nvimServerProc?.standardInput = inputPipe
|
||||
self.nvimServerProc?.currentDirectoryPath = self.cwd.path
|
||||
self.nvimServerProc?.launchPath = shellPath.path
|
||||
self.nvimServerProc?.arguments = shellArgs
|
||||
self.nvimServerProc?.launch()
|
||||
let inputPipe = Pipe()
|
||||
let process = Process()
|
||||
process.environment = env
|
||||
process.standardInput = inputPipe
|
||||
process.currentDirectoryPath = self.cwd.path
|
||||
process.launchPath = shellPath.path
|
||||
process.arguments = shellArgs
|
||||
process.launch()
|
||||
|
||||
self.nvimServerProc = process
|
||||
|
||||
nvimArgs.append("--headless")
|
||||
let cmd = "exec '\(self.nvimServerExecutablePath())' '\(self.localServerName)' '\(self.remoteServerName)' "
|
||||
.appending(self.nvimArgs.map { "\($0)" }.joined(separator: " "))
|
||||
.appending(self.nvimArgs.map { "'\($0)'" }.joined(separator: " "))
|
||||
|
||||
self.logger.debug(cmd)
|
||||
|
||||
let writeHandle = inputPipe.fileHandleForWriting
|
||||
guard let cmdData = cmd.data(using: .utf8) else {
|
||||
@ -396,7 +398,7 @@ class UiBridge {
|
||||
|
||||
self.localServerPort = CFMessagePortCreateLocal(
|
||||
kCFAllocatorDefault,
|
||||
self.localServerName.CFStr,
|
||||
self.localServerName.cfStr,
|
||||
{ _, msgid, data, info in
|
||||
return info?
|
||||
.load(as: MessageHandler.self)
|
||||
@ -416,6 +418,10 @@ class UiBridge {
|
||||
|
||||
private let uuid: String
|
||||
|
||||
private let useInteractiveZsh: Bool
|
||||
private let cwd: URL
|
||||
private var nvimArgs: [String]
|
||||
|
||||
private var remoteServerPort: CFMessagePort?
|
||||
|
||||
private var localServerPort: CFMessagePort?
|
||||
@ -463,7 +469,7 @@ private extension CFData {
|
||||
|
||||
private extension String {
|
||||
|
||||
var CFStr: CFString {
|
||||
var cfStr: CFString {
|
||||
return self as NSString
|
||||
}
|
||||
}
|
||||
|
@ -56,50 +56,50 @@ typedef NS_ENUM(NSInteger, RenderDataType) {
|
||||
RenderDataTypeHighlight
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, NeoVimServerMsgId) {
|
||||
NeoVimServerMsgIdServerReady = 0,
|
||||
NeoVimServerMsgIdNeoVimReady,
|
||||
NeoVimServerMsgIdResize,
|
||||
NeoVimServerMsgIdClear,
|
||||
NeoVimServerMsgIdEolClear,
|
||||
NeoVimServerMsgIdSetMenu,
|
||||
NeoVimServerMsgIdBusyStart,
|
||||
NeoVimServerMsgIdBusyStop,
|
||||
NeoVimServerMsgIdMouseOn,
|
||||
NeoVimServerMsgIdMouseOff,
|
||||
NeoVimServerMsgIdModeChange,
|
||||
NeoVimServerMsgIdSetScrollRegion,
|
||||
NeoVimServerMsgIdScroll,
|
||||
NeoVimServerMsgIdUnmark,
|
||||
NeoVimServerMsgIdBell,
|
||||
NeoVimServerMsgIdVisualBell,
|
||||
NeoVimServerMsgIdFlush,
|
||||
NeoVimServerMsgIdSetForeground,
|
||||
NeoVimServerMsgIdSetBackground,
|
||||
NeoVimServerMsgIdSetSpecial,
|
||||
NeoVimServerMsgIdSetTitle,
|
||||
NeoVimServerMsgIdSetIcon,
|
||||
NeoVimServerMsgIdStop,
|
||||
typedef NS_ENUM(NSInteger, NvimServerMsgId) {
|
||||
NvimServerMsgIdServerReady = 0,
|
||||
NvimServerMsgIdNvimReady,
|
||||
NvimServerMsgIdResize,
|
||||
NvimServerMsgIdClear,
|
||||
NvimServerMsgIdEolClear,
|
||||
NvimServerMsgIdSetMenu,
|
||||
NvimServerMsgIdBusyStart,
|
||||
NvimServerMsgIdBusyStop,
|
||||
NvimServerMsgIdMouseOn,
|
||||
NvimServerMsgIdMouseOff,
|
||||
NvimServerMsgIdModeChange,
|
||||
NvimServerMsgIdSetScrollRegion,
|
||||
NvimServerMsgIdScroll,
|
||||
NvimServerMsgIdUnmark,
|
||||
NvimServerMsgIdBell,
|
||||
NvimServerMsgIdVisualBell,
|
||||
NvimServerMsgIdFlush,
|
||||
NvimServerMsgIdSetForeground,
|
||||
NvimServerMsgIdSetBackground,
|
||||
NvimServerMsgIdSetSpecial,
|
||||
NvimServerMsgIdSetTitle,
|
||||
NvimServerMsgIdSetIcon,
|
||||
NvimServerMsgIdStop,
|
||||
|
||||
NeoVimServerMsgIdDirtyStatusChanged,
|
||||
NeoVimServerMsgIdCwdChanged,
|
||||
NeoVimServerMsgIdColorSchemeChanged,
|
||||
NeoVimServerMsgIdAutoCommandEvent,
|
||||
NvimServerMsgIdDirtyStatusChanged,
|
||||
NvimServerMsgIdCwdChanged,
|
||||
NvimServerMsgIdColorSchemeChanged,
|
||||
NvimServerMsgIdAutoCommandEvent,
|
||||
|
||||
NeoVimServerMsgIdDebug1,
|
||||
NvimServerMsgIdDebug1,
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, NeoVimAgentMsgId) {
|
||||
NeoVimAgentMsgIdAgentReady = 0,
|
||||
NeoVimAgentMsgIdInput,
|
||||
NeoVimAgentMsgIdInputMarked,
|
||||
NeoVimAgentMsgIdDelete,
|
||||
NeoVimAgentMsgIdResize,
|
||||
NeoVimAgentMsgIdScroll,
|
||||
typedef NS_ENUM(NSInteger, NvimBridgeMsgId) {
|
||||
NvimBridgeMsgIdAgentReady = 0,
|
||||
NvimBridgeMsgIdInput,
|
||||
NvimBridgeMsgIdInputMarked,
|
||||
NvimBridgeMsgIdDelete,
|
||||
NvimBridgeMsgIdResize,
|
||||
NvimBridgeMsgIdScroll,
|
||||
|
||||
NeoVimAgentMsgIdGetEscapeFileNames,
|
||||
NvimBridgeMsgIdGetEscapeFileNames,
|
||||
|
||||
NeoVimAgentMsgIdFocusGained,
|
||||
NvimBridgeMsgIdFocusGained,
|
||||
|
||||
NeoVimAgentMsgIdDebug1,
|
||||
NvimBridgeMsgIdDebug1,
|
||||
};
|
||||
|
@ -1032,7 +1032,7 @@
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 257;
|
||||
CURRENT_PROJECT_VERSION = 258;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
@ -1087,7 +1087,7 @@
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 257;
|
||||
CURRENT_PROJECT_VERSION = 258;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
|
@ -32,7 +32,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>SNAPSHOT-257</string>
|
||||
<string>SNAPSHOT-258</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
@ -49,7 +49,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>257</string>
|
||||
<string>258</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.productivity</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
@ -15,10 +15,10 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>SNAPSHOT-257</string>
|
||||
<string>SNAPSHOT-258</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>257</string>
|
||||
<string>258</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
@ -7,30 +7,24 @@
|
||||
<description>Most recent changes with links to updates for VimR.</description>
|
||||
<language>en</language>
|
||||
<item>
|
||||
<title>SNAPSHOT-257</title>
|
||||
<title>SNAPSHOT-258</title>
|
||||
<description><![CDATA[
|
||||
<ul>
|
||||
<li><em>WARNING</em>: This snapshot may be unstable.</li>
|
||||
<li>Migrate one of the few Objective-C parts to Swift.</li>
|
||||
<li>GH-605: Slightly improve scroll performance.</li>
|
||||
<li>Dependencies updates:<ul>
|
||||
<li>ReactiveX/RxSwift@4.1.1</li>
|
||||
<li>sindresorhus/github-markdown-css@2.10.0</li>
|
||||
<li>Quick/Nimble@7.0.3</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>GH-605: Further (slightly) improved scrolling. </li>
|
||||
<li>Bugfix: Quote <code>--nvim</code> arguments correctly (this was introduced in the last snapshot).</li>
|
||||
</ul>
|
||||
]]></description>
|
||||
<releaseNotesLink>
|
||||
https://github.com/qvacua/vimr/releases/tag/snapshot/257
|
||||
https://github.com/qvacua/vimr/releases/tag/snapshot/258
|
||||
</releaseNotesLink>
|
||||
<pubDate>2018-01-22T19:35:09.975390</pubDate>
|
||||
<pubDate>2018-01-25T23:12:29.260007</pubDate>
|
||||
<minimumSystemVersion>10.10.0</minimumSystemVersion>
|
||||
<enclosure url="https://github.com/qvacua/vimr/releases/download/snapshot/257/VimR-SNAPSHOT-257.tar.bz2"
|
||||
sparkle:version="257"
|
||||
sparkle:shortVersionString="SNAPSHOT-257"
|
||||
sparkle:dsaSignature="MC4CFQDU5plbXXSLDfjxHdaa8BVIDSczLAIVAOSMo+hC92C07HMViUu9iOMjlBVN"
|
||||
length="11921363"
|
||||
<enclosure url="https://github.com/qvacua/vimr/releases/download/snapshot/258/VimR-SNAPSHOT-258.tar.bz2"
|
||||
sparkle:version="258"
|
||||
sparkle:shortVersionString="SNAPSHOT-258"
|
||||
sparkle:dsaSignature="MC4CFQDrjPqwMEh8UK9jjMNs2G1AUgxdhgIVAMdfOHH+FUcBdsYepmZGvVFhl/O5"
|
||||
length="11919728"
|
||||
type="application/octet-stream"/>
|
||||
</item>
|
||||
</channel>
|
||||
|
@ -7,6 +7,7 @@ from string import Template
|
||||
import re
|
||||
import textwrap
|
||||
import os
|
||||
import io
|
||||
|
||||
|
||||
void_func_template = Template('''\
|
||||
@ -396,14 +397,31 @@ def parse_version(version):
|
||||
|
||||
|
||||
def parse_error_types(error_types):
|
||||
return textwrap.indent('\n'.join([f'private static let {t.lower()}RawValue = UInt64({v["id"]})' for t, v in error_types.items()]), ' ').lstrip()
|
||||
return textwrap.indent(
|
||||
'\n'.join(
|
||||
[f'private static let {t.lower()}RawValue = UInt64({v["id"]})' for t, v in error_types.items()]
|
||||
),
|
||||
' '
|
||||
).lstrip()
|
||||
|
||||
|
||||
def parse_error_cases(error_types):
|
||||
return textwrap.indent('\n'.join([f'case Error.{t.lower()}RawValue: self = .{t.lower()}(message: message)' for t, v in error_types.items()]), ' ').lstrip()
|
||||
return textwrap.indent(
|
||||
'\n'.join(
|
||||
[f'case Error.{t.lower()}RawValue: self = .{t.lower()}(message: message)' for t, v in error_types.items()]
|
||||
),
|
||||
' '
|
||||
).lstrip()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
result_file_path = './NvimMsgPack/NvimApiMethods.generated.swift'
|
||||
|
||||
if 'CONFIGURATION' in os.environ and os.environ['CONFIGURATION'] == 'Debug':
|
||||
if os.path.isfile(result_file_path):
|
||||
print("Files already there and DEBUG, exiting...")
|
||||
exit(0)
|
||||
|
||||
nvim_path = os.environ['NVIM_PATH'] if 'NVIM_PATH' in os.environ else 'nvim'
|
||||
|
||||
nvim_output = subprocess.run([nvim_path, '--api-info'], stdout=subprocess.PIPE)
|
||||
@ -413,7 +431,7 @@ if __name__ == '__main__':
|
||||
functions = [f for f in api['functions'] if 'deprecated_since' not in f]
|
||||
body = '\n'.join([parse_function(f) for f in functions])
|
||||
|
||||
print(extension_template.substitute(
|
||||
result = extension_template.substitute(
|
||||
body=body,
|
||||
version=version,
|
||||
error_types=parse_error_types(api['error_types']),
|
||||
@ -421,4 +439,7 @@ if __name__ == '__main__':
|
||||
buffer_type=api['types']['Buffer']['id'],
|
||||
window_type=api['types']['Window']['id'],
|
||||
tabpage_type=api['types']['Tabpage']['id']
|
||||
))
|
||||
)
|
||||
|
||||
with io.open(result_file_path, 'w') as api_methods_file:
|
||||
api_methods_file.write(result)
|
||||
|
@ -5,34 +5,41 @@ import io
|
||||
import re
|
||||
from string import Template
|
||||
|
||||
print(os.getcwd())
|
||||
if 'CONFIGURATION' in os.environ and os.environ['CONFIGURATION'] == 'Debug':
|
||||
if os.path.isfile('./NvimView/NvimAutoCommandEvent.generated.swift'):
|
||||
print("Files already there, exiting...")
|
||||
exit(0)
|
||||
|
||||
with io.open('./neovim/build/include/auevents_enum.generated.h', 'r') as auto_cmds_file:
|
||||
raw_auto_cmds = [line.strip() for line in auto_cmds_file.readlines() if re.match(r'^EVENT_', line.strip())]
|
||||
|
||||
|
||||
def convert(line):
|
||||
result = re.match(r'^EVENT_(.*) = (.*)', line.replace(',', ''))
|
||||
return result.group(1), result.group(2)
|
||||
|
||||
|
||||
auto_cmds = [convert(line) for line in raw_auto_cmds]
|
||||
auto_cmds_template = Template(
|
||||
'''
|
||||
def swift_auto_cmds():
|
||||
with io.open('./neovim/build/include/auevents_enum.generated.h', 'r') as auto_cmds_file:
|
||||
raw_auto_cmds = [line.strip() for line in auto_cmds_file.readlines() if re.match(r'^EVENT_', line.strip())]
|
||||
|
||||
auto_cmds = [convert(line) for line in raw_auto_cmds]
|
||||
auto_cmds_template = Template(
|
||||
'''// Auto generated for nvim version 0.2.2.
|
||||
// See bin/generate_source.py
|
||||
|
||||
enum NvimAutoCommandEvent: Int {
|
||||
${event_cases}
|
||||
}
|
||||
'''
|
||||
)
|
||||
)
|
||||
|
||||
header = auto_cmds_template.substitute(
|
||||
event_cases='\n'.join(
|
||||
[' case {} = {}'.format(event[0].lower(), event[1]) for event in auto_cmds]
|
||||
),
|
||||
)
|
||||
with io.open('./NvimView/NvimAutoCommandEvent.generated.swift', 'w') as auto_cmds_header_file:
|
||||
auto_cmds_header_file.write(header)
|
||||
return auto_cmds_template.substitute(
|
||||
event_cases='\n'.join(
|
||||
[' case {} = {}'.format(event[0].lower(), event[1]) for event in auto_cmds]
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
result_file_path = './NvimView/NvimAutoCommandEvent.generated.swift'
|
||||
|
||||
if 'CONFIGURATION' in os.environ and os.environ['CONFIGURATION'] == 'Debug':
|
||||
if os.path.isfile(result_file_path):
|
||||
print("Files already there, exiting...")
|
||||
exit(0)
|
||||
|
||||
with io.open(result_file_path, 'w') as auto_cmds_header_file:
|
||||
auto_cmds_header_file.write(swift_auto_cmds())
|
||||
|
Loading…
Reference in New Issue
Block a user