From b03393a3e0e101f6b4c1997705f0535822c22327 Mon Sep 17 00:00:00 2001 From: Tae Won Ha Date: Wed, 4 Jan 2017 17:38:18 +0100 Subject: [PATCH 1/6] Revert "GH-376 Get buffers in the main loop" This reverts commit d7dfddec04c1de6c656723f719a10d76eee1c6ae. --- NeoVimServer/NeoVimServer.m | 5 +---- NeoVimServer/server_globals.h | 2 +- NeoVimServer/server_ui.m | 27 ++++----------------------- SwiftNeoVim/NeoVimAgent.m | 11 +++-------- 4 files changed, 9 insertions(+), 36 deletions(-) diff --git a/NeoVimServer/NeoVimServer.m b/NeoVimServer/NeoVimServer.m index 49467e19..e76a71e1 100644 --- a/NeoVimServer/NeoVimServer.m +++ b/NeoVimServer/NeoVimServer.m @@ -251,10 +251,7 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD } case NeoVimAgentMsgIdGetBuffers: { - NSUInteger responseId = response_id_from_data(data); - server_buffers(responseId); - - return nil; + return [NSKeyedArchiver archivedDataWithRootObject:server_buffers()]; } case NeoVimAgentMsgIdGetTabs: { diff --git a/NeoVimServer/server_globals.h b/NeoVimServer/server_globals.h index 2419471d..63c40e1c 100644 --- a/NeoVimServer/server_globals.h +++ b/NeoVimServer/server_globals.h @@ -19,7 +19,7 @@ extern void server_resize(int width, int height); extern void server_vim_input_marked_text(NSString *markedText); extern bool server_has_dirty_docs(); extern NSString *server_escaped_filename(NSString *filename); -extern void server_buffers(NSUInteger responseId); +extern NSArray *server_buffers(); extern void server_tabs(NSUInteger responseId); extern void server_get_bool_option(NSUInteger responseId, NSString *option); extern void server_set_bool_option(NSUInteger responseId, NSString *option, bool value); diff --git a/NeoVimServer/server_ui.m b/NeoVimServer/server_ui.m index cf626e95..fba4929a 100644 --- a/NeoVimServer/server_ui.m +++ b/NeoVimServer/server_ui.m @@ -779,36 +779,17 @@ static NeoVimBuffer *buffer_for(buf_T *buf) { return [buffer autorelease]; } -static void neovim_buffers(void **argv) { - NSUInteger *values = (NSUInteger *) argv[0]; - NSUInteger responseId = values[0]; - - NSMutableArray *buffers = [[NSMutableArray new] autorelease]; +NSArray *server_buffers() { + NSMutableArray *result = [[NSMutableArray new] autorelease]; FOR_ALL_BUFFERS(buf) { NeoVimBuffer *buffer = buffer_for(buf); if (buffer == nil) { continue; } - [buffers addObject:buffer]; + [result addObject:buffer]; } - - NSData *resultData = [NSKeyedArchiver archivedDataWithRootObject:buffers]; - NSData *data = data_with_response_id_prefix(responseId, resultData); - - [_neovim_server sendMessageWithId:NeoVimServerMsgIdSyncResult data:data]; - - free(values); // malloc'ed in loop_schedule(&main_loop, ...) (in _queue) somewhere -} - -void server_buffers(NSUInteger responseId) { - queue(^{ - NSUInteger *values = malloc(sizeof(NSUInteger)); - values[0] = responseId; - - // free release in neovim_command - loop_schedule(&main_loop, event_create(1, neovim_buffers, 1, values)); - }); + return result; } static void neovim_tabs(void **argv) { diff --git a/SwiftNeoVim/NeoVimAgent.m b/SwiftNeoVim/NeoVimAgent.m index 07decbdd..2d4ddbca 100644 --- a/SwiftNeoVim/NeoVimAgent.m +++ b/SwiftNeoVim/NeoVimAgent.m @@ -337,17 +337,13 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD } - (NSArray *)buffers { - NSUInteger reqId = [self nextRequestResponseId]; - NSData *data = [NSData dataWithBytes:&reqId length:sizeof(NSUInteger)]; - - [self sendMessageWithId:NeoVimAgentMsgIdGetBuffers data:data expectsReply:NO]; - NSData *responseData = [self responseByWaitingForId:reqId]; - if (responseData == nil) { + NSData *response = [self sendMessageWithId:NeoVimAgentMsgIdGetBuffers data:nil expectsReply:YES]; + if (response == nil) { log4Warn("The response for the msg %lu was nil.", NeoVimAgentMsgIdGetBuffers); return @[]; } - return [NSKeyedUnarchiver unarchiveObjectWithData:responseData]; + return [NSKeyedUnarchiver unarchiveObjectWithData:response]; } - (NSArray *)tabs { @@ -357,7 +353,6 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD [self sendMessageWithId:NeoVimAgentMsgIdGetTabs data:data expectsReply:NO]; NSData *responseData = [self responseByWaitingForId:reqId]; if (responseData == nil) { - log4Warn("The response for the msg %lu was nil.", NeoVimAgentMsgIdGetTabs); return @[]; } From 279a768bf75de76e25d92f47e390f1619d89fcca Mon Sep 17 00:00:00 2001 From: Tae Won Ha Date: Wed, 4 Jan 2017 17:38:28 +0100 Subject: [PATCH 2/6] Revert "GH-376 Compute tabs in the main loop" This reverts commit 5fbc773584ef978838eb8fcb499c575073f12f44. --- NeoVimServer/NeoVimServer.m | 5 +---- NeoVimServer/server_globals.h | 2 +- NeoVimServer/server_ui.m | 22 ++-------------------- SwiftNeoVim/NeoVimAgent.m | 11 ++++------- 4 files changed, 8 insertions(+), 32 deletions(-) diff --git a/NeoVimServer/NeoVimServer.m b/NeoVimServer/NeoVimServer.m index e76a71e1..943297e8 100644 --- a/NeoVimServer/NeoVimServer.m +++ b/NeoVimServer/NeoVimServer.m @@ -255,10 +255,7 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD } case NeoVimAgentMsgIdGetTabs: { - NSUInteger responseId = response_id_from_data(data); - server_tabs(responseId); - - return nil; + return [NSKeyedArchiver archivedDataWithRootObject:server_tabs()]; } case NeoVimAgentMsgIdGetBoolOption: { diff --git a/NeoVimServer/server_globals.h b/NeoVimServer/server_globals.h index 63c40e1c..9d5ad773 100644 --- a/NeoVimServer/server_globals.h +++ b/NeoVimServer/server_globals.h @@ -20,7 +20,7 @@ extern void server_vim_input_marked_text(NSString *markedText); extern bool server_has_dirty_docs(); extern NSString *server_escaped_filename(NSString *filename); extern NSArray *server_buffers(); -extern void server_tabs(NSUInteger responseId); +extern NSArray *server_tabs(); extern void server_get_bool_option(NSUInteger responseId, NSString *option); extern void server_set_bool_option(NSUInteger responseId, NSString *option, bool value); extern void server_select_win(int window_handle); diff --git a/NeoVimServer/server_ui.m b/NeoVimServer/server_ui.m index fba4929a..51dcab9a 100644 --- a/NeoVimServer/server_ui.m +++ b/NeoVimServer/server_ui.m @@ -792,10 +792,7 @@ NSArray *server_buffers() { return result; } -static void neovim_tabs(void **argv) { - NSUInteger *values = (NSUInteger *) argv[0]; - NSUInteger responseId = values[0]; - +NSArray *server_tabs() { NSMutableArray *tabs = [[NSMutableArray new] autorelease]; FOR_ALL_TABS(t) { NSMutableArray *windows = [NSMutableArray new]; @@ -818,22 +815,7 @@ static void neovim_tabs(void **argv) { [tab release]; } - NSData *resultData = [NSKeyedArchiver archivedDataWithRootObject:tabs]; - NSData *data = data_with_response_id_prefix(responseId, resultData); - - [_neovim_server sendMessageWithId:NeoVimServerMsgIdSyncResult data:data]; - - free(values); // malloc'ed in loop_schedule(&main_loop, ...) (in _queue) somewhere -} - -void server_tabs(NSUInteger responseId) { - queue(^{ - NSUInteger *values = malloc(sizeof(NSUInteger)); - values[0] = responseId; - - // free release in neovim_command - loop_schedule(&main_loop, event_create(1, neovim_tabs, 1, values)); - }); + return tabs; } void server_select_win(int window_handle) { diff --git a/SwiftNeoVim/NeoVimAgent.m b/SwiftNeoVim/NeoVimAgent.m index 2d4ddbca..a3199787 100644 --- a/SwiftNeoVim/NeoVimAgent.m +++ b/SwiftNeoVim/NeoVimAgent.m @@ -347,16 +347,13 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD } - (NSArray *)tabs { - NSUInteger reqId = [self nextRequestResponseId]; - NSData *data = [NSData dataWithBytes:&reqId length:sizeof(NSUInteger)]; - - [self sendMessageWithId:NeoVimAgentMsgIdGetTabs data:data expectsReply:NO]; - NSData *responseData = [self responseByWaitingForId:reqId]; - if (responseData == nil) { + NSData *response = [self sendMessageWithId:NeoVimAgentMsgIdGetTabs data:nil expectsReply:YES]; + if (response == nil) { + log4Warn("The response for the msg %lu was nil.", NeoVimAgentMsgIdGetTabs); return @[]; } - return [NSKeyedUnarchiver unarchiveObjectWithData:responseData]; + return [NSKeyedUnarchiver unarchiveObjectWithData:response]; } - (void)runLocalServer { From 5e03a7339daf5448cdbcc73aa12190c841c030ff Mon Sep 17 00:00:00 2001 From: Tae Won Ha Date: Thu, 5 Jan 2017 05:47:37 +0100 Subject: [PATCH 3/6] Update release notes --- resources/release-notes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/release-notes.md b/resources/release-notes.md index f49154e9..b49970c3 100644 --- a/resources/release-notes.md +++ b/resources/release-notes.md @@ -1,6 +1,6 @@ -# next +# 0.12.5-156 -* ... +* GH-376: Fix a part of the bug. There's still an issue, cf. discussions in GH-376. # 0.12.3-154 From eb31fccf5d02f2bcc6b39c488d689b9e06149e19 Mon Sep 17 00:00:00 2001 From: Tae Won Ha Date: Thu, 5 Jan 2017 06:00:01 +0100 Subject: [PATCH 4/6] Bump version: v0.12.4-157 --- OutlineViewTest/Info.plist | 4 ++-- SwiftNeoVim/Info.plist | 4 ++-- SwiftNeoVimTests/Info.plist | 4 ++-- VimR-Workspace-Demo/Info.plist | 4 ++-- VimR.xcodeproj/project.pbxproj | 8 ++++---- VimR/Info.plist | 4 ++-- VimRTests/Info.plist | 4 ++-- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/OutlineViewTest/Info.plist b/OutlineViewTest/Info.plist index ea9cec0e..2e404ca2 100644 --- a/OutlineViewTest/Info.plist +++ b/OutlineViewTest/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.12.3 + 0.12.4 CFBundleVersion - 156 + 157 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright diff --git a/SwiftNeoVim/Info.plist b/SwiftNeoVim/Info.plist index d403eb59..5611874c 100644 --- a/SwiftNeoVim/Info.plist +++ b/SwiftNeoVim/Info.plist @@ -15,11 +15,11 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.12.3 + 0.12.4 CFBundleSignature ???? CFBundleVersion - 156 + 157 NSHumanReadableCopyright Copyright © 2016 Tae Won Ha. All rights reserved. NSPrincipalClass diff --git a/SwiftNeoVimTests/Info.plist b/SwiftNeoVimTests/Info.plist index 16ecfdd2..bdbf1d1d 100644 --- a/SwiftNeoVimTests/Info.plist +++ b/SwiftNeoVimTests/Info.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 0.12.3 + 0.12.4 CFBundleSignature ???? CFBundleVersion - 156 + 157 diff --git a/VimR-Workspace-Demo/Info.plist b/VimR-Workspace-Demo/Info.plist index 4895cf07..aa3e0c6d 100644 --- a/VimR-Workspace-Demo/Info.plist +++ b/VimR-Workspace-Demo/Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.12.3 + 0.12.4 CFBundleSignature ???? CFBundleVersion - 156 + 157 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright diff --git a/VimR.xcodeproj/project.pbxproj b/VimR.xcodeproj/project.pbxproj index 551bf770..8580b00b 100644 --- a/VimR.xcodeproj/project.pbxproj +++ b/VimR.xcodeproj/project.pbxproj @@ -1327,7 +1327,7 @@ COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 156; + DYLIB_CURRENT_VERSION = 157; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1351,7 +1351,7 @@ COMBINE_HIDPI_IMAGES = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 156; + DYLIB_CURRENT_VERSION = 157; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1543,7 +1543,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 156; + CURRENT_PROJECT_VERSION = 157; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -1593,7 +1593,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 156; + CURRENT_PROJECT_VERSION = 157; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; diff --git a/VimR/Info.plist b/VimR/Info.plist index 039aec77..53284a5a 100644 --- a/VimR/Info.plist +++ b/VimR/Info.plist @@ -36,7 +36,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.12.3 + 0.12.4 CFBundleSignature ???? CFBundleURLTypes @@ -53,7 +53,7 @@ CFBundleVersion - 156 + 157 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright diff --git a/VimRTests/Info.plist b/VimRTests/Info.plist index 16ecfdd2..bdbf1d1d 100644 --- a/VimRTests/Info.plist +++ b/VimRTests/Info.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 0.12.3 + 0.12.4 CFBundleSignature ???? CFBundleVersion - 156 + 157 From 1161c2ec1ecc37d967ded924000d4ecbe2f03a87 Mon Sep 17 00:00:00 2001 From: Tae Won Ha Date: Thu, 5 Jan 2017 06:01:49 +0100 Subject: [PATCH 5/6] Bump appcast to v0.12.4-157 --- appcast.xml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/appcast.xml b/appcast.xml index 22cca426..5e9ab51a 100644 --- a/appcast.xml +++ b/appcast.xml @@ -7,23 +7,22 @@ Most recent changes with links to updates for VimR. en - v0.12.3-156 + v0.12.4-157 -
  • GH-376: Bugfix: Exiting full-screen sometimes causes crashes.
  • -
  • Update RxSwift to 3.1.0
  • +
  • GH-376: Fix a part of the bug. There's still an issue, cf. discussions in GH-376.
  • ]]>
    - https://github.com/qvacua/vimr/releases/tag/v0.12.3-156 + https://github.com/qvacua/vimr/releases/tag/v0.12.4-157 - 2017-01-04T17:20:06.803676 + 2017-01-05T06:01:49.512565 10.10.0 -
    From 7932c8afe9b72162a4edbf13b7c1cb53e19e3858 Mon Sep 17 00:00:00 2001 From: Tae Won Ha Date: Thu, 5 Jan 2017 06:38:13 +0100 Subject: [PATCH 6/6] Typo --- resources/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/release-notes.md b/resources/release-notes.md index b49970c3..b468d803 100644 --- a/resources/release-notes.md +++ b/resources/release-notes.md @@ -1,4 +1,4 @@ -# 0.12.5-156 +# 0.12.4-156 * GH-376: Fix a part of the bug. There's still an issue, cf. discussions in GH-376.