1
1
mirror of https://github.com/qvacua/vimr.git synced 2024-12-25 14:52:19 +03:00

Merge remote-tracking branch 'origin/develop' into update-neovim

This commit is contained in:
Tae Won Ha 2017-12-15 08:21:24 +01:00
commit 2ed34fb136
29 changed files with 248 additions and 265 deletions

View File

@ -5,7 +5,7 @@ github "sparkle-project/Sparkle" == 1.18.1
github "qvacua/CocoaFontAwesome" "master"
github "qvacua/CocoaMarkdown" "master"
github "sindresorhus/github-markdown-css" == 2.9.0
github "httpswift/swifter" == 1.3.3
github "httpswift/swifter" "stable"
github "a2/MessagePack.swift" == 3.0.0
github "antitypical/Result" == 3.2.4

View File

@ -4,7 +4,7 @@ github "ReactiveX/RxSwift" "4.0.0"
github "a2/MessagePack.swift" "3.0.0"
github "antitypical/Result" "3.2.4"
github "eonil/FileSystemEvents" "85a089104af37f04a6bf7f2d07d7a93cac0b4fe1"
github "httpswift/swifter" "1.3.3"
github "httpswift/swifter" "6e996387f14dc6f5d573591dfeb3fdffc5986103"
github "qvacua/CocoaFontAwesome" "71865fc2c0275ebc5c8601edc23290e85aca9979"
github "qvacua/CocoaMarkdown" "5d1c1e3dd74486dfc358c9cc3ddd7e993842113d"
github "sindresorhus/github-markdown-css" "v2.9.0"

View File

@ -218,7 +218,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 248;
CURRENT_PROJECT_VERSION = 249;
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 = 248;
CURRENT_PROJECT_VERSION = 249;
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 = 248;
DYLIB_CURRENT_VERSION = 249;
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 = 248;
DYLIB_CURRENT_VERSION = 249;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
INFOPLIST_FILE = MsgPackRpc/Info.plist;

View File

@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>SNAPSHOT-248</string>
<string>SNAPSHOT-249</string>
<key>CFBundleVersion</key>
<string>248</string>
<string>249</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
<key>NSPrincipalClass</key>

View File

@ -5,7 +5,7 @@
import Foundation
public enum MessageType: Int {
public enum MessageType: UInt64 {
case request = 0
case response = 1
@ -24,6 +24,11 @@ public struct Response {
public class Connection {
public struct Error: Swift.Error {
let message: String
}
public var notificationCallback: ((MessageType, String, [Value]) -> Void)?
public var unknownMessageCallback: (([Value]) -> Void)?
public var errorCallback: ((Value) -> Void)?
@ -42,30 +47,34 @@ public class Connection {
self.init(with: session)
}
public func run() {
self.session.connectAndRun()
public func run() throws {
guard let error = self.session.connectAndRun() else {
return
}
throw Error(message: error.localizedDescription)
}
public func stop() {
self.stopped = true
locked(with: self.sessionLock) {
locked(with: self.conditionsLock) {
self.conditions.values.forEach { condition in
locked(with: condition) { condition.broadcast() }
}
}
locked(with: self.sessionLock) {
self.stopped = true
self.session.disconnectAndStop()
}
}
@discardableResult
public func request(type: Int = 0,
public func request(type: UInt64 = MessageType.request.rawValue,
msgid: UInt32,
method: String,
params: [Value],
expectsReturnValue: Bool)
-> MsgPackRpc.Response {
expectsReturnValue: Bool) -> MsgPackRpc.Response {
let packed = pack(
[
@ -139,7 +148,7 @@ public class Connection {
switch type {
case 1:
case MessageType.response.rawValue:
// response
guard let msgid64 = array[1].unsignedIntegerValue else {
NSLog("Warning: could not get the request ID")
@ -161,7 +170,7 @@ public class Connection {
condition.broadcast()
}
case 2:
case MessageType.notification.rawValue:
// notification
guard let method = array[1].stringValue else {
return

View File

@ -10,13 +10,13 @@
@required
@property CFTimeInterval timeout;
@property (nonatomic, copy, nullable) void (^dataCallback)(NSData * __nonnull);
@property (nonatomic, copy, nullable) void (^dataCallback)(NSData * _Nonnull);
@property (readonly, getter=isRunning) bool running;
- (void)connectAndRun;
- (NSError * _Nullable)connectAndRun;
- (void)disconnectAndStop;
- (CFSocketError)writeData:(NSData * __nonnull)data;
- (CFSocketError)writeData:(NSData * _Nonnull)data;
@end
@ -24,12 +24,12 @@
@property CFTimeInterval timeout;
@property (nonatomic, nonnull) CFSocketRef socket;
@property (nonatomic, copy, nullable) void (^dataCallback)(NSData * __nonnull);
@property (nonatomic, copy, nullable) void (^dataCallback)(NSData * _Nonnull);
- (instancetype __nullable)initWithPath:(NSString * __nonnull)path;
- (instancetype _Nullable)initWithPath:(NSString * _Nonnull)path;
- (void)connectAndRun;
- (NSError * _Nullable)connectAndRun;
- (void)disconnectAndStop;
- (CFSocketError)writeData:(NSData * __nonnull)data;
- (CFSocketError)writeData:(NSData * _Nonnull)data;
@end

View File

@ -85,10 +85,12 @@ static void socket_call_back(
close(_native_socket);
}
- (void)connectAndRun {
- (NSError *)connectAndRun {
if ((_native_socket = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
NSLog(@"Error: Unix domain socket NULL!");
[NSException raise:@"UnixDomainSocketConnectionException" format:@"Unix domain socket NULL!"];
return [NSError errorWithDomain:NSPOSIXErrorDomain code:-1 userInfo:@{
NSLocalizedDescriptionKey: @"Could not create unix domain socket.",
}];
}
_sockaddr.sun_family = AF_UNIX;
@ -96,7 +98,9 @@ static void socket_call_back(
if (connect(_native_socket, (struct sockaddr *) &_sockaddr, (socklen_t) SUN_LEN(&_sockaddr)) == -1) {
NSLog(@"Error: Could not connect to the socket!");
close(_native_socket);
[NSException raise:@"UnixDomainSocketConnectionException" format:@"Could not connect to socket!"];
return [NSError errorWithDomain:NSPOSIXErrorDomain code:-1 userInfo:@{
NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Could not connect to socket %s", _sockaddr.sun_path]
}];
}
CFSocketContext context;
@ -117,16 +121,20 @@ static void socket_call_back(
if (_socket == nil) {
NSLog(@"Error: CFSocket is NULL!");
close(_native_socket);
[NSException raise:@"UnixDomainSocketConnectionException" format:@"CFSocket is NULL!"];
return [NSError errorWithDomain:NSPOSIXErrorDomain code:-1 userInfo:@{
NSLocalizedDescriptionKey: [NSString stringWithFormat:@"CFSocket is NULL for %s", _sockaddr.sun_path]
}];
}
_run_loop_source = CFSocketCreateRunLoopSource(NULL, _socket, 0);
_thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadMain) object:nil];
[_thread start];
return nil;
}
- (void)disconnectAndStop {
if (CFSocketIsValid(_socket)) {
if (_socket != NULL && CFSocketIsValid(_socket)) {
CFRunLoopStop(_run_loop);
CFSocketInvalidate(_socket);
[_thread cancel];
@ -140,8 +148,8 @@ static void socket_call_back(
}
- (CFSocketError)writeData:(NSData *)data {
if (!CFSocketIsValid(_socket)) {
NSLog(@"Socket invalid, but trying to send %@", data);
if (_socket == NULL || !CFSocketIsValid(_socket)) {
NSLog(@"Socket NULL or invalid, but trying to send %@", data);
return kCFSocketError;
}

View File

@ -218,7 +218,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 248;
CURRENT_PROJECT_VERSION = 249;
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 = 248;
CURRENT_PROJECT_VERSION = 249;
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 = 248;
DYLIB_CURRENT_VERSION = 249;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
INFOPLIST_FILE = NvimMsgPack/Info.plist;
@ -331,7 +331,7 @@
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 248;
DYLIB_CURRENT_VERSION = 249;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A;
INFOPLIST_FILE = NvimMsgPack/Info.plist;

View File

@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>SNAPSHOT-248</string>
<string>SNAPSHOT-249</string>
<key>CFBundleVersion</key>
<string>248</string>
<string>249</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
<key>NSPrincipalClass</key>

View File

@ -151,8 +151,8 @@ public class NvimApi {
self.connection = connection
}
public func run() {
self.connection.run()
public func run() throws {
try self.connection.run()
}
public func stop() {
@ -206,8 +206,8 @@ public class NvimApi {
self.session = session
}
public func connect() {
self.session.run()
public func connect() throws {
try self.session.run()
}
public func disconnect() {

View File

@ -20,7 +20,7 @@
4B90F0341FD2AFAE008A39E0 /* CocoaExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0161FD2AFAC008A39E0 /* CocoaExtensions.swift */; };
4B90F0351FD2AFAE008A39E0 /* NvimView+Mouse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0171FD2AFAC008A39E0 /* NvimView+Mouse.swift */; };
4B90F0361FD2AFAE008A39E0 /* NvimViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0181FD2AFAC008A39E0 /* NvimViewDelegate.swift */; };
4B90F0371FD2AFAE008A39E0 /* NvimAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B90F0191FD2AFAC008A39E0 /* NvimAgent.h */; settings = {ATTRIBUTES = (Public, ); }; };
4B90F0371FD2AFAE008A39E0 /* UiClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B90F0191FD2AFAC008A39E0 /* UiClient.h */; settings = {ATTRIBUTES = (Public, ); }; };
4B90F0381FD2AFAE008A39E0 /* ColorUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F01A1FD2AFAC008A39E0 /* ColorUtils.swift */; };
4B90F0391FD2AFAE008A39E0 /* NvimView+Api.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F01B1FD2AFAC008A39E0 /* NvimView+Api.swift */; };
4B90F03A1FD2AFAE008A39E0 /* NvimView+Key.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F01C1FD2AFAC008A39E0 /* NvimView+Key.swift */; };
@ -37,7 +37,7 @@
4B90F0461FD2AFAE008A39E0 /* Grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0281FD2AFAD008A39E0 /* Grid.swift */; };
4B90F0481FD2AFAE008A39E0 /* NvimUiBridgeProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F02A1FD2AFAD008A39E0 /* NvimUiBridgeProtocol.m */; };
4B90F0491FD2AFAE008A39E0 /* CellAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F02B1FD2AFAD008A39E0 /* CellAttributes.swift */; };
4B90F04A1FD2AFAE008A39E0 /* NvimAgent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F02C1FD2AFAE008A39E0 /* NvimAgent.m */; };
4B90F04A1FD2AFAE008A39E0 /* UiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F02C1FD2AFAE008A39E0 /* UiClient.m */; };
4B90F0521FD2AFD3008A39E0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0511FD2AFD3008A39E0 /* main.m */; };
4B90F0661FD2AFF7008A39E0 /* server_ui.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0561FD2AFF7008A39E0 /* server_ui.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
4B90F0681FD2AFF7008A39E0 /* CocoaCategories.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F05A1FD2AFF7008A39E0 /* CocoaCategories.m */; };
@ -110,7 +110,7 @@
4B90F0161FD2AFAC008A39E0 /* CocoaExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CocoaExtensions.swift; sourceTree = "<group>"; };
4B90F0171FD2AFAC008A39E0 /* NvimView+Mouse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NvimView+Mouse.swift"; sourceTree = "<group>"; };
4B90F0181FD2AFAC008A39E0 /* NvimViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NvimViewDelegate.swift; sourceTree = "<group>"; };
4B90F0191FD2AFAC008A39E0 /* NvimAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NvimAgent.h; sourceTree = "<group>"; };
4B90F0191FD2AFAC008A39E0 /* UiClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UiClient.h; sourceTree = "<group>"; };
4B90F01A1FD2AFAC008A39E0 /* ColorUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorUtils.swift; sourceTree = "<group>"; };
4B90F01B1FD2AFAC008A39E0 /* NvimView+Api.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NvimView+Api.swift"; sourceTree = "<group>"; };
4B90F01C1FD2AFAC008A39E0 /* NvimView+Key.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NvimView+Key.swift"; sourceTree = "<group>"; };
@ -128,7 +128,7 @@
4B90F0281FD2AFAD008A39E0 /* Grid.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Grid.swift; sourceTree = "<group>"; };
4B90F02A1FD2AFAD008A39E0 /* NvimUiBridgeProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NvimUiBridgeProtocol.m; sourceTree = "<group>"; };
4B90F02B1FD2AFAD008A39E0 /* CellAttributes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CellAttributes.swift; sourceTree = "<group>"; };
4B90F02C1FD2AFAE008A39E0 /* NvimAgent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NvimAgent.m; sourceTree = "<group>"; };
4B90F02C1FD2AFAE008A39E0 /* UiClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UiClient.m; sourceTree = "<group>"; };
4B90F04F1FD2AFD3008A39E0 /* NvimServer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = NvimServer; sourceTree = BUILT_PRODUCTS_DIR; };
4B90F0511FD2AFD3008A39E0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
4B90F0561FD2AFF7008A39E0 /* server_ui.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = server_ui.m; sourceTree = "<group>"; };
@ -208,8 +208,8 @@
4B90F0271FD2AFAD008A39E0 /* Logger.swift */,
4B90F0261FD2AFAD008A39E0 /* MMCoreTextView.h */,
4B90F0201FD2AFAD008A39E0 /* MMCoreTextView.m */,
4B90F0191FD2AFAC008A39E0 /* NvimAgent.h */,
4B90F02C1FD2AFAE008A39E0 /* NvimAgent.m */,
4B90F0191FD2AFAC008A39E0 /* UiClient.h */,
4B90F02C1FD2AFAE008A39E0 /* UiClient.m */,
4B2016ED1FD45EED0038528A /* NvimAutoCommandEvent.generated.h */,
4B2016EC1FD45EED0038528A /* NvimAutoCommandEvent.generated.m */,
4B90F01D1FD2AFAC008A39E0 /* NvimObjectsExtensions.swift */,
@ -270,7 +270,7 @@
files = (
4BF18C5D1FD2EEE400DF95D1 /* NvimView.h in Headers */,
4B90F0411FD2AFAE008A39E0 /* TextDrawer.h in Headers */,
4B90F0371FD2AFAE008A39E0 /* NvimAgent.h in Headers */,
4B90F0371FD2AFAE008A39E0 /* UiClient.h in Headers */,
4B90F02D1FD2AFAE008A39E0 /* NvimUiBridgeProtocol.h in Headers */,
4B2016EF1FD45EED0038528A /* NvimAutoCommandEvent.generated.h in Headers */,
4B90F0441FD2AFAE008A39E0 /* MMCoreTextView.h in Headers */,
@ -416,7 +416,7 @@
4B90F03C1FD2AFAE008A39E0 /* NvimView+TouchBar.swift in Sources */,
4B2016EE1FD45EED0038528A /* NvimAutoCommandEvent.generated.m in Sources */,
4B90F03B1FD2AFAE008A39E0 /* NvimObjectsExtensions.swift in Sources */,
4B90F04A1FD2AFAE008A39E0 /* NvimAgent.m in Sources */,
4B90F04A1FD2AFAE008A39E0 /* UiClient.m in Sources */,
4B90F0351FD2AFAE008A39E0 /* NvimView+Mouse.swift in Sources */,
4B90F0431FD2AFAE008A39E0 /* NvimView+MenuItems.swift in Sources */,
4B90F0391FD2AFAE008A39E0 /* NvimView+Api.swift in Sources */,
@ -484,7 +484,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 248;
CURRENT_PROJECT_VERSION = 249;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@ -542,7 +542,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 248;
CURRENT_PROJECT_VERSION = 249;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@ -569,7 +569,7 @@
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 248;
DYLIB_CURRENT_VERSION = 249;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
FRAMEWORK_VERSION = A;
@ -591,7 +591,7 @@
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 248;
DYLIB_CURRENT_VERSION = 249;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
FRAMEWORK_VERSION = A;

View File

@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>SNAPSHOT-248</string>
<string>SNAPSHOT-249</string>
<key>CFBundleVersion</key>
<string>248</string>
<string>249</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
<key>NSPrincipalClass</key>

View File

@ -51,7 +51,7 @@ extension NvimView {
}
public func newTab() {
self.exec(command: "tabe")
self.nvim.command(command: "tabe", expectsReturnValue: false)
}
public func `open`(urls: [URL]) {
@ -101,41 +101,35 @@ extension NvimView {
}
}
self.nvim.command(command: "tab sb \(buffer.handle)")
self.nvim.command(command: "tab sb \(buffer.handle)", expectsReturnValue: false)
}
/// 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.exec(command: "q")
self.nvim.command(command: "q", expectsReturnValue: false)
}
public func saveCurrentTab() {
self.exec(command: "w")
self.nvim.command(command: "w", expectsReturnValue: false)
}
public func saveCurrentTab(url: URL) {
let path = url.path
guard let escapedFileName = self.agent.escapedFileName(path) else {
self.logger.fault("Escaped file name returned nil.")
return
}
self.exec(command: "w \(escapedFileName)")
self.nvim.command(command: "w \(url.path)", expectsReturnValue: false)
}
public func closeCurrentTabWithoutSaving() {
self.exec(command: "q!")
self.nvim.command(command: "q!", expectsReturnValue: false)
}
public func quitNeoVimWithoutSaving() {
self.exec(command: "qa!")
self.nvim.command(command: "qa!", expectsReturnValue: false)
self.delegate?.neoVimStopped()
self.waitForNeoVimToQuit()
}
public func vimOutput(of command: String) -> String {
return self.nvim.commandOutput(str: command) ?? ""
return self.nvim.commandOutput(str: command).value ?? ""
}
public func cursorGo(to position: Position) {
@ -147,45 +141,22 @@ extension NvimView {
}
public func didBecomeMain() {
self.agent.focusGained(true)
self.uiClient.focusGained(true)
}
public func didResignMain() {
self.agent.focusGained(false)
self.uiClient.focusGained(false)
}
func waitForNeoVimToQuit() {
self.agent.neoVimQuitCondition.lock()
defer { self.agent.neoVimQuitCondition.unlock() }
while self.agent.neoVimHasQuit == false
&& self.agent.neoVimQuitCondition.wait(until: Date(timeIntervalSinceNow: neoVimQuitTimeout)) {}
}
/**
Does the following
- normal mode: `:command<CR>`
- else: `:<Esc>:command<CR>`
We don't use NvimAgent.vimCommand because if we do for example "e /some/file"
and its swap file already exists, then NeoVimServer spins and become unresponsive.
*/
private func exec(command cmd: String) {
switch self.mode {
case .normal:
self.agent.vimInput(":\(cmd)<CR>")
default:
self.agent.vimInput("<Esc>:\(cmd)<CR>")
}
self.uiClient.neoVimQuitCondition.lock()
defer { self.uiClient.neoVimQuitCondition.unlock() }
while self.uiClient.neoVimHasQuit == false
&& self.uiClient.neoVimQuitCondition.wait(until: Date(timeIntervalSinceNow: neoVimQuitTimeout)) {}
}
private func `open`(_ url: URL, cmd: String) {
let path = url.path
guard let escapedFileName = self.agent.escapedFileName(path) else {
self.logger.fault("Escaped file name returned nil.")
return
}
self.exec(command: "\(cmd) \(escapedFileName)")
self.nvim.command(command: "\(cmd) \(url.path)", expectsReturnValue: false)
}
private func neoVimBuffer(for buf: NvimApi.Buffer, currentBuffer: NvimApi.Buffer?) -> NvimView.Buffer? {

View File

@ -38,7 +38,7 @@ extension NvimView {
? self.wrapNamedKeys(flags + namedChars)
: self.vimPlainString(chars)
self.agent.vimInput(finalInput)
self.uiClient.vimInput(finalInput)
self.keyDownDone = true
}
@ -47,9 +47,9 @@ extension NvimView {
switch aString {
case let string as String:
self.agent.vimInput(self.vimPlainString(string))
self.uiClient.vimInput(self.vimPlainString(string))
case let attributedString as NSAttributedString:
self.agent.vimInput(self.vimPlainString(attributedString.string))
self.uiClient.vimInput(self.vimPlainString(attributedString.string))
default:
break;
}
@ -98,7 +98,7 @@ extension NvimView {
// Control code \0 causes rpc parsing problems.
// So we escape as early as possible
if chars == "\0" {
self.agent.vimInput(self.wrapNamedKeys("Nul"))
self.uiClient.vimInput(self.wrapNamedKeys("Nul"))
return true
}
@ -106,12 +106,12 @@ extension NvimView {
// See special cases in vim/os_win32.c from vim sources
// Also mentioned in MacVim's KeyBindings.plist
if .control == flags && chars == "6" {
self.agent.vimInput("\u{1e}") // AKA ^^
self.uiClient.vimInput("\u{1e}") // AKA ^^
return true
}
if .control == flags && chars == "2" {
// <C-2> should generate \0, escaping as above
self.agent.vimInput(self.wrapNamedKeys("Nul"))
self.uiClient.vimInput(self.wrapNamedKeys("Nul"))
return true
}
// NsEvent already sets \u{1f} for <C--> && <C-_>
@ -126,7 +126,7 @@ extension NvimView {
// eg -> hanja popup, cf comment for self.lastMarkedText
if replacementRange.length > 0 {
self.agent.deleteCharacters(replacementRange.length)
self.uiClient.deleteCharacters(replacementRange.length)
}
switch aString {
@ -140,7 +140,7 @@ extension NvimView {
// self.logger.debug("\(#function): \(self.markedText), \(selectedRange), \(replacementRange)")
self.agent.vimInputMarkedText(self.markedText!)
self.uiClient.vimInputMarkedText(self.markedText!)
self.keyDownDone = true
}

View File

@ -48,9 +48,9 @@ extension NvimView {
@IBAction func undo(_ sender: AnyObject?) {
switch self.mode {
case .insert, .replace:
self.agent.vimInput("<Esc>ui")
self.uiClient.vimInput("<Esc>ui")
case .normal, .visual:
self.agent.vimInput("u")
self.uiClient.vimInput("u")
default:
return
}
@ -59,9 +59,9 @@ extension NvimView {
@IBAction func redo(_ sender: AnyObject?) {
switch self.mode {
case .insert, .replace:
self.agent.vimInput("<Esc><C-r>i")
self.uiClient.vimInput("<Esc><C-r>i")
case .normal, .visual:
self.agent.vimInput("<C-r>")
self.uiClient.vimInput("<C-r>")
default:
return
}
@ -70,7 +70,7 @@ extension NvimView {
@IBAction func cut(_ sender: AnyObject?) {
switch self.mode {
case .visual, .normal:
self.agent.vimInput("\"+d")
self.uiClient.vimInput("\"+d")
default:
return
}
@ -79,7 +79,7 @@ extension NvimView {
@IBAction func copy(_ sender: AnyObject?) {
switch self.mode {
case .visual, .normal:
self.agent.vimInput("\"+y")
self.uiClient.vimInput("\"+y")
default:
return
}
@ -93,7 +93,7 @@ extension NvimView {
if self.mode == .cmdline || self.mode == .cmdlineInsert || self.mode == .cmdlineReplace
|| self.mode == .replace
|| self.mode == .termFocus {
self.agent.vimInput(self.vimPlainString(content))
self.uiClient.vimInput(self.vimPlainString(content))
return
}
@ -113,9 +113,9 @@ extension NvimView {
switch self.mode {
case .insert:
self.agent.vimInput("<ESC>\"+pa")
self.uiClient.vimInput("<ESC>\"+pa")
case .normal, .visual:
self.agent.vimInput("\"+p")
self.uiClient.vimInput("\"+p")
default:
return
}
@ -128,7 +128,7 @@ extension NvimView {
@IBAction func delete(_ sender: AnyObject?) {
switch self.mode {
case .normal, .visual:
self.agent.vimInput("x")
self.uiClient.vimInput("x")
default:
return
}
@ -137,9 +137,9 @@ extension NvimView {
@IBAction public override func selectAll(_ sender: Any?) {
switch self.mode {
case .insert, .visual:
self.agent.vimInput("<Esc>ggVG")
self.uiClient.vimInput("<Esc>ggVG")
default:
self.agent.vimInput("ggVG")
self.uiClient.vimInput("ggVG")
}
}
}

View File

@ -32,15 +32,15 @@ extension NvimView {
let (vimInputX, vimInputY) = self.vimScrollInputFor(deltaX: deltaX, deltaY: deltaY,
modifierFlags: event.modifierFlags,
cellPosition: cellPosition)
self.agent.vimInput(vimInputX)
self.agent.vimInput(vimInputY)
self.uiClient.vimInput(vimInputX)
self.uiClient.vimInput(vimInputY)
return
}
let (absDeltaX, absDeltaY) = (min(Int(ceil(abs(deltaX) / 5.0)), maxScrollDeltaX),
min(Int(ceil(abs(deltaY) / 5.0)), maxScrollDeltaY))
let (horizSign, vertSign) = (deltaX > 0 ? 1 : -1, deltaY > 0 ? 1 : -1)
self.agent.scrollHorizontal(horizSign * absDeltaX, vertical: vertSign * absDeltaY, at: cellPosition)
self.uiClient.scrollHorizontal(horizSign * absDeltaX, vertical: vertSign * absDeltaY, at: cellPosition)
}
override public func magnify(with event: NSEvent) {
@ -97,7 +97,7 @@ extension NvimView {
}
// self.logger.debug("\(#function): \(result)")
self.agent.vimInput(result)
self.uiClient.vimInput(result)
}
fileprivate func shouldFireVimInputFor(event: NSEvent, newCellPosition: Position) -> Bool {

View File

@ -4,6 +4,7 @@
*/
import Cocoa
import NvimMsgPack
extension NvimView {
@ -50,14 +51,21 @@ extension NvimView {
self.xOffset = floor((size.width - self.cellSize.width * CGFloat(discreteSize.width)) / 2)
self.yOffset = floor((size.height - self.cellSize.height * CGFloat(discreteSize.height)) / 2)
self.agent.resize(toWidth: Int32(discreteSize.width), height: Int32(discreteSize.height))
self.uiClient.resize(toWidth: Int32(discreteSize.width), height: Int32(discreteSize.height))
}
fileprivate func launchNeoVim(_ size: Size) {
self.logger.info("=== Starting neovim...")
let noErrorDuringInitialization = self.agent.runLocalServerAndNeoVim(withWidth: size.width, height: size.height)
let noErrorDuringInitialization = self.uiClient.runLocalServerAndNeoVim(withWidth: size.width, height: size.height)
self.nvim.connect()
do {
try self.nvim.connect()
} catch {
logger.fault("Could not connect to nvim: \(error)")
self.nvim.disconnect()
self.ipcBecameInvalid(String(describing: error))
return
}
if noErrorDuringInitialization == false {
self.logger.fault("There was an error launching neovim.")

View File

@ -181,7 +181,7 @@ extension NvimView {
public func stop() {
self.bridgeLogger.hr()
self.nvim.disconnect()
self.agent.quit()
self.uiClient.quit()
gui.async {
self.waitForNeoVimToQuit()
@ -211,14 +211,15 @@ extension NvimView {
gui.async {
self.bridgeLogger.debug(reason)
if self.agent.neoVimIsQuitting || self.agent.neoVimHasQuit {
if self.uiClient.neoVimIsQuitting || self.uiClient.neoVimHasQuit {
return
}
self.delegate?.ipcBecameInvalid(reason: reason)
self.bridgeLogger.error("Force-closing due to IPC error.")
self.agent.forceQuit()
self.nvim.disconnect()
self.uiClient.forceQuit()
}
}
}

View File

@ -19,5 +19,5 @@ FOUNDATION_EXPORT const unsigned char NvimViewVersionString[];
#import <NvimView/NvimUiBridgeProtocol.h>
// TODO: this header should not be public, but we cannot use a bridging header in a framework.
#import <NvimView/TextDrawer.h>
#import <NvimView/NvimAgent.h>
#import <NvimView/UiClient.h>
#import <NvimView/NvimAutoCommandEvent.generated.h>

View File

@ -133,7 +133,7 @@ public class NvimView: NSView,
set {
let path = newValue.path
guard let escapedCwd = self.agent.escapedFileName(path) else {
guard let escapedCwd = self.uiClient.escapedFileName(path) else {
// this happens when VimR is quitting with some main windows open...
self.logger.fault("Escaped file name returned nil.")
return
@ -151,7 +151,7 @@ public class NvimView: NSView,
public init(frame rect: NSRect, config: Config) {
self.drawer = TextDrawer(font: self._font)
self.agent = NvimAgent(uuid: self.uuid)
self.uiClient = UiClient(uuid: self.uuid)
let sockPath = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("vimr_\(self.uuid).sock").path
guard let nvim = NvimApi(at: sockPath) else {
@ -169,10 +169,10 @@ public class NvimView: NSView,
self.leading = self.drawer.leading
// We cannot set bridge in init since self is not available before super.init()...
self.agent.bridge = self
self.agent.useInteractiveZsh = config.useInteractiveZsh
self.agent.cwd = config.cwd
self.agent.nvimArgs = config.nvimArgs
self.uiClient.bridge = self
self.uiClient.useInteractiveZsh = config.useInteractiveZsh
self.uiClient.cwd = config.cwd
self.uiClient.nvimArgs = config.nvimArgs
}
convenience override public init(frame rect: NSRect) {
@ -185,7 +185,7 @@ public class NvimView: NSView,
@IBAction public func debug1(_ sender: Any?) {
self.logger.debug("DEBUG 1 - Start")
self.agent.debug()
self.uiClient.debug()
self.logger.debug("DEBUG 1 - End")
}
@ -206,7 +206,7 @@ public class NvimView: NSView,
let bridgeLogger = LogContext.fileLogger(as: NvimView.self,
with: URL(fileURLWithPath: "/tmp/nvv-bridge.log"),
shouldLogDebug: nil)
let agent: NvimAgent
let uiClient: UiClient
let nvim: NvimApi
let grid = Grid()

View File

@ -11,7 +11,7 @@
NS_ASSUME_NONNULL_BEGIN
@interface NvimAgent : NSObject
@interface UiClient : NSObject
@property (nonatomic) bool useInteractiveZsh;
@property (nonatomic) NSURL *cwd;

View File

@ -3,7 +3,7 @@
* See LICENSE
*/
#import "NvimAgent.h"
#import "UiClient.h"
#import "NeoVimMsgIds.h"
#import "Logger.h"
@ -50,7 +50,7 @@ static void log_cfmachport_error(SInt32 err, NeoVimAgentMsgId msgid, NSData *inp
}
@interface NvimAgent ()
@interface UiClient ()
- (void)handleMessageWithId:(SInt32)msgid data:(NSData *)data;
@ -59,7 +59,7 @@ static void log_cfmachport_error(SInt32 err, NeoVimAgentMsgId msgid, NSData *inp
static CFDataRef local_server_callback(CFMessagePortRef local __unused, SInt32 msgid, CFDataRef data, void *info) {
@autoreleasepool {
NvimAgent *agent = (__bridge NvimAgent *) info;
UiClient *agent = (__bridge UiClient *) info;
[agent handleMessageWithId:msgid data:(__bridge NSData *) (data)];
}
@ -67,7 +67,7 @@ static CFDataRef local_server_callback(CFMessagePortRef local __unused, SInt32 m
}
@implementation NvimAgent {
@implementation UiClient {
NSString *_uuid;
CFMessagePortRef _remoteServerPort;

View File

@ -100,6 +100,25 @@
4B96FB411EBBC56F00E4E164 /* RxSwiftCommons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB1BEA81D48773200463C29 /* RxSwiftCommons.swift */; };
4B96FB421EBBC56F00E4E164 /* SwiftCommons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6A70951D6100E300E12030 /* SwiftCommons.swift */; };
4B97E2CC1D33F53D00FC0660 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B97E2CE1D33F53D00FC0660 /* MainWindow.xib */; };
4BA753FE1FDDDE64008EE7DC /* HttpServerIO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753EB1FDDDE63008EE7DC /* HttpServerIO.swift */; };
4BA753FF1FDDDE64008EE7DC /* HttpServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753EC1FDDDE63008EE7DC /* HttpServer.swift */; };
4BA754001FDDDE64008EE7DC /* String+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753ED1FDDDE63008EE7DC /* String+File.swift */; };
4BA754011FDDDE64008EE7DC /* String+Misc.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753EE1FDDDE63008EE7DC /* String+Misc.swift */; };
4BA754021FDDDE64008EE7DC /* DemoServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753EF1FDDDE63008EE7DC /* DemoServer.swift */; };
4BA754031FDDDE64008EE7DC /* Scopes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F01FDDDE63008EE7DC /* Scopes.swift */; };
4BA754041FDDDE64008EE7DC /* Socket+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F11FDDDE63008EE7DC /* Socket+File.swift */; };
4BA754051FDDDE64008EE7DC /* Errno.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F21FDDDE63008EE7DC /* Errno.swift */; };
4BA754061FDDDE64008EE7DC /* HttpRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F31FDDDE63008EE7DC /* HttpRouter.swift */; };
4BA754071FDDDE64008EE7DC /* HttpResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F41FDDDE63008EE7DC /* HttpResponse.swift */; };
4BA754081FDDDE64008EE7DC /* HttpParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F51FDDDE63008EE7DC /* HttpParser.swift */; };
4BA754091FDDDE64008EE7DC /* Socket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F61FDDDE63008EE7DC /* Socket.swift */; };
4BA7540A1FDDDE64008EE7DC /* Process.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F71FDDDE64008EE7DC /* Process.swift */; };
4BA7540B1FDDDE64008EE7DC /* HttpRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F81FDDDE64008EE7DC /* HttpRequest.swift */; };
4BA7540C1FDDDE64008EE7DC /* String+BASE64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753F91FDDDE64008EE7DC /* String+BASE64.swift */; };
4BA7540D1FDDDE64008EE7DC /* String+SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753FA1FDDDE64008EE7DC /* String+SHA1.swift */; };
4BA7540E1FDDDE64008EE7DC /* WebSockets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753FB1FDDDE64008EE7DC /* WebSockets.swift */; };
4BA7540F1FDDDE64008EE7DC /* Socket+Server.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753FC1FDDDE64008EE7DC /* Socket+Server.swift */; };
4BA754101FDDDE64008EE7DC /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BA753FD1FDDDE64008EE7DC /* Files.swift */; };
4BB1BEA91D48773200463C29 /* RxSwiftCommons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB1BEA81D48773200463C29 /* RxSwiftCommons.swift */; };
4BB409E51DD68CCC005F39A2 /* FileBrowserMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BB409E71DD68CCC005F39A2 /* FileBrowserMenu.xib */; };
4BB409EE1DDA77E9005F39A2 /* ProxyWorkspaceBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB409ED1DDA77E9005F39A2 /* ProxyWorkspaceBar.swift */; };
@ -120,7 +139,6 @@
4BF18C3A1FD2E2AB00DF95D1 /* PureLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C321FD2E2AA00DF95D1 /* PureLayout.framework */; };
4BF18C3B1FD2E2AB00DF95D1 /* CocoaMarkdown.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C331FD2E2AA00DF95D1 /* CocoaMarkdown.framework */; };
4BF18C3C1FD2E2AB00DF95D1 /* CocoaFontAwesome.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C341FD2E2AA00DF95D1 /* CocoaFontAwesome.framework */; };
4BF18C3D1FD2E2AB00DF95D1 /* Swifter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C351FD2E2AB00DF95D1 /* Swifter.framework */; };
4BF18C3E1FD2E2AB00DF95D1 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C361FD2E2AB00DF95D1 /* RxSwift.framework */; };
4BF18C3F1FD2E2AB00DF95D1 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C371FD2E2AB00DF95D1 /* Sparkle.framework */; };
4BF18C401FD2E2AB00DF95D1 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C381FD2E2AB00DF95D1 /* RxCocoa.framework */; };
@ -131,7 +149,6 @@
4BF18C451FD2E2C900DF95D1 /* RxCocoa.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C381FD2E2AB00DF95D1 /* RxCocoa.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
4BF18C461FD2E2C900DF95D1 /* RxSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C361FD2E2AB00DF95D1 /* RxSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
4BF18C471FD2E2C900DF95D1 /* Sparkle.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C371FD2E2AB00DF95D1 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
4BF18C481FD2E2C900DF95D1 /* Swifter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C351FD2E2AB00DF95D1 /* Swifter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
4BF18C4A1FD2E2DE00DF95D1 /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF18C491FD2E2DE00DF95D1 /* Nimble.framework */; };
4BF18C4C1FD2E4CE00DF95D1 /* NvimView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BC1642B1FD2DEE1001903BE /* NvimView.framework */; };
4BF18C4D1FD2E4D200DF95D1 /* MsgPackRpc.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BC164291FD2DEE1001903BE /* MsgPackRpc.framework */; };
@ -172,7 +189,6 @@
4BF18C451FD2E2C900DF95D1 /* RxCocoa.framework in Embed Frameworks */,
4BF18C461FD2E2C900DF95D1 /* RxSwift.framework in Embed Frameworks */,
4BF18C471FD2E2C900DF95D1 /* Sparkle.framework in Embed Frameworks */,
4BF18C481FD2E2C900DF95D1 /* Swifter.framework in Embed Frameworks */,
4BC1642C1FD2DEEA001903BE /* MsgPackRpc.framework in Embed Frameworks */,
4BC1642D1FD2DEEA001903BE /* NvimMsgPack.framework in Embed Frameworks */,
4BC1642E1FD2DEEA001903BE /* NvimView.framework in Embed Frameworks */,
@ -283,6 +299,25 @@
4B6A70931D60E04200E12030 /* AppKitCommons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppKitCommons.swift; sourceTree = "<group>"; };
4B6A70951D6100E300E12030 /* SwiftCommons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftCommons.swift; sourceTree = "<group>"; };
4B97E2CD1D33F53D00FC0660 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = "<group>"; };
4BA753EB1FDDDE63008EE7DC /* HttpServerIO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HttpServerIO.swift; path = ../../Carthage/Checkouts/swifter/Sources/HttpServerIO.swift; sourceTree = "<group>"; };
4BA753EC1FDDDE63008EE7DC /* HttpServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HttpServer.swift; path = ../../Carthage/Checkouts/swifter/Sources/HttpServer.swift; sourceTree = "<group>"; };
4BA753ED1FDDDE63008EE7DC /* String+File.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "String+File.swift"; path = "../../Carthage/Checkouts/swifter/Sources/String+File.swift"; sourceTree = "<group>"; };
4BA753EE1FDDDE63008EE7DC /* String+Misc.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "String+Misc.swift"; path = "../../Carthage/Checkouts/swifter/Sources/String+Misc.swift"; sourceTree = "<group>"; };
4BA753EF1FDDDE63008EE7DC /* DemoServer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DemoServer.swift; path = ../../Carthage/Checkouts/swifter/Sources/DemoServer.swift; sourceTree = "<group>"; };
4BA753F01FDDDE63008EE7DC /* Scopes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Scopes.swift; path = ../../Carthage/Checkouts/swifter/Sources/Scopes.swift; sourceTree = "<group>"; };
4BA753F11FDDDE63008EE7DC /* Socket+File.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Socket+File.swift"; path = "../../Carthage/Checkouts/swifter/Sources/Socket+File.swift"; sourceTree = "<group>"; };
4BA753F21FDDDE63008EE7DC /* Errno.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Errno.swift; path = ../../Carthage/Checkouts/swifter/Sources/Errno.swift; sourceTree = "<group>"; };
4BA753F31FDDDE63008EE7DC /* HttpRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HttpRouter.swift; path = ../../Carthage/Checkouts/swifter/Sources/HttpRouter.swift; sourceTree = "<group>"; };
4BA753F41FDDDE63008EE7DC /* HttpResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HttpResponse.swift; path = ../../Carthage/Checkouts/swifter/Sources/HttpResponse.swift; sourceTree = "<group>"; };
4BA753F51FDDDE63008EE7DC /* HttpParser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HttpParser.swift; path = ../../Carthage/Checkouts/swifter/Sources/HttpParser.swift; sourceTree = "<group>"; };
4BA753F61FDDDE63008EE7DC /* Socket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Socket.swift; path = ../../Carthage/Checkouts/swifter/Sources/Socket.swift; sourceTree = "<group>"; };
4BA753F71FDDDE64008EE7DC /* Process.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Process.swift; path = ../../Carthage/Checkouts/swifter/Sources/Process.swift; sourceTree = "<group>"; };
4BA753F81FDDDE64008EE7DC /* HttpRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HttpRequest.swift; path = ../../Carthage/Checkouts/swifter/Sources/HttpRequest.swift; sourceTree = "<group>"; };
4BA753F91FDDDE64008EE7DC /* String+BASE64.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "String+BASE64.swift"; path = "../../Carthage/Checkouts/swifter/Sources/String+BASE64.swift"; sourceTree = "<group>"; };
4BA753FA1FDDDE64008EE7DC /* String+SHA1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "String+SHA1.swift"; path = "../../Carthage/Checkouts/swifter/Sources/String+SHA1.swift"; sourceTree = "<group>"; };
4BA753FB1FDDDE64008EE7DC /* WebSockets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WebSockets.swift; path = ../../Carthage/Checkouts/swifter/Sources/WebSockets.swift; sourceTree = "<group>"; };
4BA753FC1FDDDE64008EE7DC /* Socket+Server.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Socket+Server.swift"; path = "../../Carthage/Checkouts/swifter/Sources/Socket+Server.swift"; sourceTree = "<group>"; };
4BA753FD1FDDDE64008EE7DC /* Files.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Files.swift; path = ../../Carthage/Checkouts/swifter/Sources/Files.swift; sourceTree = "<group>"; };
4BB1BEA81D48773200463C29 /* RxSwiftCommons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxSwiftCommons.swift; sourceTree = "<group>"; };
4BB409E61DD68CCC005F39A2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/FileBrowserMenu.xib; sourceTree = "<group>"; };
4BB409ED1DDA77E9005F39A2 /* ProxyWorkspaceBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ProxyWorkspaceBar.swift; path = Workspace/ProxyWorkspaceBar.swift; sourceTree = "<group>"; };
@ -305,7 +340,6 @@
4BF18C321FD2E2AA00DF95D1 /* PureLayout.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PureLayout.framework; path = ../Carthage/Build/Mac/PureLayout.framework; sourceTree = "<group>"; };
4BF18C331FD2E2AA00DF95D1 /* CocoaMarkdown.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CocoaMarkdown.framework; path = ../Carthage/Build/Mac/CocoaMarkdown.framework; sourceTree = "<group>"; };
4BF18C341FD2E2AA00DF95D1 /* CocoaFontAwesome.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CocoaFontAwesome.framework; path = ../Carthage/Build/Mac/CocoaFontAwesome.framework; sourceTree = "<group>"; };
4BF18C351FD2E2AB00DF95D1 /* Swifter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Swifter.framework; path = ../Carthage/Build/Mac/Swifter.framework; sourceTree = "<group>"; };
4BF18C361FD2E2AB00DF95D1 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxSwift.framework; path = ../Carthage/Build/Mac/RxSwift.framework; sourceTree = "<group>"; };
4BF18C371FD2E2AB00DF95D1 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = ../Carthage/Build/Mac/Sparkle.framework; sourceTree = "<group>"; };
4BF18C381FD2E2AB00DF95D1 /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RxCocoa.framework; path = ../Carthage/Build/Mac/RxCocoa.framework; sourceTree = "<group>"; };
@ -322,7 +356,6 @@
4BF18C3A1FD2E2AB00DF95D1 /* PureLayout.framework in Frameworks */,
4BF18C3B1FD2E2AB00DF95D1 /* CocoaMarkdown.framework in Frameworks */,
4BF18C3C1FD2E2AB00DF95D1 /* CocoaFontAwesome.framework in Frameworks */,
4BF18C3D1FD2E2AB00DF95D1 /* Swifter.framework in Frameworks */,
4BF18C3E1FD2E2AB00DF95D1 /* RxSwift.framework in Frameworks */,
4BF18C3F1FD2E2AB00DF95D1 /* Sparkle.framework in Frameworks */,
4BF18C401FD2E2AB00DF95D1 /* RxCocoa.framework in Frameworks */,
@ -509,7 +542,6 @@
4BF18C381FD2E2AB00DF95D1 /* RxCocoa.framework */,
4BF18C361FD2E2AB00DF95D1 /* RxSwift.framework */,
4BF18C371FD2E2AB00DF95D1 /* Sparkle.framework */,
4BF18C351FD2E2AB00DF95D1 /* Swifter.framework */,
4BC164291FD2DEE1001903BE /* MsgPackRpc.framework */,
4BC1642A1FD2DEE1001903BE /* NvimMsgPack.framework */,
4BC1642B1FD2DEE1001903BE /* NvimView.framework */,
@ -549,6 +581,32 @@
name = resources;
sourceTree = "<group>";
};
4BA753EA1FDDDE55008EE7DC /* swifter */ = {
isa = PBXGroup;
children = (
4BA753EF1FDDDE63008EE7DC /* DemoServer.swift */,
4BA753F21FDDDE63008EE7DC /* Errno.swift */,
4BA753FD1FDDDE64008EE7DC /* Files.swift */,
4BA753F51FDDDE63008EE7DC /* HttpParser.swift */,
4BA753F81FDDDE64008EE7DC /* HttpRequest.swift */,
4BA753F41FDDDE63008EE7DC /* HttpResponse.swift */,
4BA753F31FDDDE63008EE7DC /* HttpRouter.swift */,
4BA753EC1FDDDE63008EE7DC /* HttpServer.swift */,
4BA753EB1FDDDE63008EE7DC /* HttpServerIO.swift */,
4BA753F71FDDDE64008EE7DC /* Process.swift */,
4BA753F01FDDDE63008EE7DC /* Scopes.swift */,
4BA753F61FDDDE63008EE7DC /* Socket.swift */,
4BA753F11FDDDE63008EE7DC /* Socket+File.swift */,
4BA753FC1FDDDE64008EE7DC /* Socket+Server.swift */,
4BA753F91FDDDE64008EE7DC /* String+BASE64.swift */,
4BA753ED1FDDDE63008EE7DC /* String+File.swift */,
4BA753EE1FDDDE63008EE7DC /* String+Misc.swift */,
4BA753FA1FDDDE64008EE7DC /* String+SHA1.swift */,
4BA753FB1FDDDE64008EE7DC /* WebSockets.swift */,
);
path = swifter;
sourceTree = "<group>";
};
4BDF50101D760AB700D8FBC3 /* Commons */ = {
isa = PBXGroup;
children = (
@ -575,6 +633,7 @@
children = (
4BEBA5071CFF374B00673FDF /* VimR */,
4BEBA5171CFF374B00673FDF /* VimRTests */,
4BA753EA1FDDDE55008EE7DC /* swifter */,
4B5012001EBA791000F76C46 /* Frameworks */,
4BEBA5061CFF374B00673FDF /* Products */,
);
@ -770,10 +829,13 @@
buildActionMask = 2147483647;
files = (
4B4147A31D97361400DD4A2C /* WorkspaceToolButton.swift in Sources */,
4BA7540E1FDDDE64008EE7DC /* WebSockets.swift in Sources */,
4B238BE11D3BF24200CBDD98 /* Application.swift in Sources */,
4B6423961D8EFD7100FC78C8 /* Workspace.swift in Sources */,
4B6A70941D60E04200E12030 /* AppKitCommons.swift in Sources */,
4B3965361DEB21300082D3C1 /* InnterToolBar.swift in Sources */,
4BA754101FDDDE64008EE7DC /* Files.swift in Sources */,
4BA7540B1FDDDE64008EE7DC /* HttpRequest.swift in Sources */,
4B6423981D8EFDE000FC78C8 /* WorkspaceBar.swift in Sources */,
4BB1BEA91D48773200463C29 /* RxSwiftCommons.swift in Sources */,
4B6A70961D6100E300E12030 /* SwiftCommons.swift in Sources */,
@ -783,33 +845,43 @@
1929B6388EAF16C190B82955 /* FileItemIgnorePattern.swift in Sources */,
1929B67DA3EB21A631EF1DBB /* FileUtils.swift in Sources */,
1929B3F5743967125F357C9F /* Matcher.swift in Sources */,
4BA7540D1FDDDE64008EE7DC /* String+SHA1.swift in Sources */,
1929B53876E6952D378C2B30 /* ScoredFileItem.swift in Sources */,
1929BD3F9E609BFADB27584B /* Scorer.swift in Sources */,
4BB409EE1DDA77E9005F39A2 /* ProxyWorkspaceBar.swift in Sources */,
1929B0E0C3BC59F52713D5A2 /* FoundationCommons.swift in Sources */,
1929BD2F41D93ADFF43C1C98 /* NetUtils.m in Sources */,
1929BE0DAEE9664C5BCFA211 /* States.swift in Sources */,
4BA754011FDDDE64008EE7DC /* String+Misc.swift in Sources */,
1929B4FEE6EB56EF3F56B805 /* Context.swift in Sources */,
4BA754051FDDDE64008EE7DC /* Errno.swift in Sources */,
4BA7540A1FDDDE64008EE7DC /* Process.swift in Sources */,
1929BD3878A3A47B8D685CD2 /* AppDelegateReducer.swift in Sources */,
1929BAFF1E011321D3186EE6 /* UiRoot.swift in Sources */,
1929B29B95AD176D57942E08 /* UiRootReducer.swift in Sources */,
1929BB4A9B2FA42A64CCCC76 /* MainWindowReducer.swift in Sources */,
4BE45C1D1FD2DBD2005C0A95 /* Logger.swift in Sources */,
1929B8FB248D71BF88A35761 /* PreviewTool.swift in Sources */,
4BA754031FDDDE64008EE7DC /* Scopes.swift in Sources */,
1929B4B70926DE113E6BF990 /* PreviewReducer.swift in Sources */,
1929B5C1BABBC0D09D97C3EF /* PreviewService.swift in Sources */,
1929B0F599D1F62C7BE53D2C /* HttpServerService.swift in Sources */,
1929B3AC66EFE35D68C020E3 /* PreviewToolReducer.swift in Sources */,
1929B59FA5C286E010F70BEE /* Types.swift in Sources */,
1929B6D8F5FC723B7109031F /* OpenQuicklyReducer.swift in Sources */,
4BA753FE1FDDDE64008EE7DC /* HttpServerIO.swift in Sources */,
4BA7540F1FDDDE64008EE7DC /* Socket+Server.swift in Sources */,
1929B5543B1E31A26096E656 /* FileMonitorReducer.swift in Sources */,
1929B5F016431A76292D1E84 /* FileMonitor.swift in Sources */,
1929B71381946860626E5224 /* FileBrowserReducer.swift in Sources */,
1929BA715337FE26155B2071 /* OpenedFileList.swift in Sources */,
1929B4E54E2F13A7F5F2B682 /* OpenedFileListReducer.swift in Sources */,
4BA754061FDDDE64008EE7DC /* HttpRouter.swift in Sources */,
1929BAE4900D72A7877741B1 /* PrefWindow.swift in Sources */,
1929BEAE0592096BC1191B67 /* PrefPane.swift in Sources */,
1929BEDE1BE950EDA9497363 /* GeneralPref.swift in Sources */,
4BA754091FDDDE64008EE7DC /* Socket.swift in Sources */,
4BA7540C1FDDDE64008EE7DC /* String+BASE64.swift in Sources */,
1929B3217A7A3D79E28C80DB /* PrefWindowReducer.swift in Sources */,
1929B6BE1610892E6C4C0CE6 /* GeneralPrefReducer.swift in Sources */,
1929B05B9D664052EC2D23EF /* FileOutlineView.swift in Sources */,
@ -818,18 +890,24 @@
1929B50D933A369A86A165DE /* AdvencedPref.swift in Sources */,
1929BCC7908DD899999B70BE /* AppearancePrefReducer.swift in Sources */,
1929B00BA624DA8DC75F7E02 /* SerializableStates.swift in Sources */,
4BA753FF1FDDDE64008EE7DC /* HttpServer.swift in Sources */,
1929B3557317755A43513B17 /* OpenQuicklyWindow.swift in Sources */,
1929B333855A5406C400DA92 /* OpenQuicklyFilterOperation.swift in Sources */,
1929B1837C750CADB3A5BCB9 /* OpenQuicklyFileViewRow.swift in Sources */,
1929B990A143763A56CFCED0 /* PrefService.swift in Sources */,
1929BA76A1D97D8226F7CFB1 /* Debouncer.swift in Sources */,
4BA754071FDDDE64008EE7DC /* HttpResponse.swift in Sources */,
1929B71610FF1DC6E459BA49 /* PreviewUtils.swift in Sources */,
4BA754021FDDDE64008EE7DC /* DemoServer.swift in Sources */,
1929B08C6230B9C5AB72DAF1 /* Pref128ToCurrentConverter.swift in Sources */,
4BA754081FDDDE64008EE7DC /* HttpParser.swift in Sources */,
1929B94083273D4B321AD848 /* FileItemUtils.swift in Sources */,
1929BFDE22D155F7C4B19E96 /* HtmlPreviewTool.swift in Sources */,
4BA754041FDDDE64008EE7DC /* Socket+File.swift in Sources */,
1929B4B00D7BB191A9A6532D /* HtmlPreviewToolReducer.swift in Sources */,
1929BCF7F7B9CC5499A3F506 /* AdvancedPrefReducer.swift in Sources */,
1929BF03FD6465F289AA80B2 /* ToolsPref.swift in Sources */,
4BA754001FDDDE64008EE7DC /* String+File.swift in Sources */,
1929B6C0393DE40E34F4A49A /* ToolsPrefReducer.swift in Sources */,
1929B542A071BD03C846F6EF /* PrefUtils.swift in Sources */,
1929BE2F3E0182CC51F2763A /* ThemedTableSubviews.swift in Sources */,
@ -958,7 +1036,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 248;
CURRENT_PROJECT_VERSION = 249;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@ -1013,7 +1091,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 248;
CURRENT_PROJECT_VERSION = 249;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;

View File

@ -1,93 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4B7780891EAA25FF00CB4E10"
BuildableName = "MacNeovim.app"
BlueprintName = "MacNeovim"
ReferencedContainer = "container:VimR.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4B7780891EAA25FF00CB4E10"
BuildableName = "MacNeovim.app"
BlueprintName = "MacNeovim"
ReferencedContainer = "container:VimR.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4B7780891EAA25FF00CB4E10"
BuildableName = "MacNeovim.app"
BlueprintName = "MacNeovim"
ReferencedContainer = "container:VimR.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "4B7780891EAA25FF00CB4E10"
BuildableName = "MacNeovim.app"
BlueprintName = "MacNeovim"
ReferencedContainer = "container:VimR.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -4,7 +4,6 @@
*/
import Foundation
import Swifter
class HttpServerService {

View File

@ -32,7 +32,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>SNAPSHOT-248</string>
<string>SNAPSHOT-249</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@ -49,7 +49,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>248</string>
<string>249</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.productivity</string>
<key>LSMinimumSystemVersion</key>

View File

@ -15,10 +15,10 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>SNAPSHOT-248</string>
<string>SNAPSHOT-249</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>248</string>
<string>249</string>
</dict>
</plist>

View File

@ -7,20 +7,22 @@
<description>Most recent changes with links to updates for VimR.</description>
<language>en</language>
<item>
<title>SNAPSHOT-248</title>
<title>SNAPSHOT-249</title>
<description><![CDATA[
<p>GH-583: Bugfix: The latest snapshots crash when <code>tcsh</code> or <code>fish</code> is used as default shell.</p>
<ul>
<li>Few msgpack API related fixes.</li>
</ul>
]]></description>
<releaseNotesLink>
https://github.com/qvacua/vimr/releases/tag/snapshot/248
https://github.com/qvacua/vimr/releases/tag/snapshot/249
</releaseNotesLink>
<pubDate>2017-12-10T18:03:46.923110</pubDate>
<pubDate>2017-12-14T22:38:27.486667</pubDate>
<minimumSystemVersion>10.10.0</minimumSystemVersion>
<enclosure url="https://github.com/qvacua/vimr/releases/download/snapshot/248/VimR-SNAPSHOT-248.tar.bz2"
sparkle:version="248"
sparkle:shortVersionString="SNAPSHOT-248"
sparkle:dsaSignature="MC0CFGxx4Erl+k2MTnZbXg/mh3vAUH8IAhUA2Vaod7jeEjYBD8CfW1MB46i2Y7A="
length="14729512"
<enclosure url="https://github.com/qvacua/vimr/releases/download/snapshot/249/VimR-SNAPSHOT-249.tar.bz2"
sparkle:version="249"
sparkle:shortVersionString="SNAPSHOT-249"
sparkle:dsaSignature="MC4CFQCHkhA8jl2C6Da99GHJJUT5zqhFEAIVANGOLb3HakOMFgvz7mtiz02MryPP"
length="12158994"
type="application/octet-stream"/>
</item>
</channel>

View File

@ -3,7 +3,7 @@
* GH-571: Bugfix: Read-only buffers are considered as modified. For example NERDTree buffers won't trigger the "Please save first" dialog anymore.
* GH-387: Show all buffers (the same as `:buffers`) in the buffers list
* GH-553: Bugfix: Do not crash when there's an error in `init.vim`.
* Some High Sierra related fixes
* High Sierra related fixes
- Do not crash on launch
- Too narrow entries in the file browser and buffers list.