mirror of
https://github.com/qvacua/vimr.git
synced 2024-12-25 23:02:35 +03:00
Merge remote-tracking branch 'origin/develop' into update-neovim
This commit is contained in:
commit
1106a692d4
@ -218,7 +218,7 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 245;
|
CURRENT_PROJECT_VERSION = 246;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
@ -278,7 +278,7 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 245;
|
CURRENT_PROJECT_VERSION = 246;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
@ -308,7 +308,7 @@
|
|||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 245;
|
DYLIB_CURRENT_VERSION = 246;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
FRAMEWORK_VERSION = A;
|
FRAMEWORK_VERSION = A;
|
||||||
INFOPLIST_FILE = MsgPackRpc/Info.plist;
|
INFOPLIST_FILE = MsgPackRpc/Info.plist;
|
||||||
@ -331,7 +331,7 @@
|
|||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 245;
|
DYLIB_CURRENT_VERSION = 246;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
FRAMEWORK_VERSION = A;
|
FRAMEWORK_VERSION = A;
|
||||||
INFOPLIST_FILE = MsgPackRpc/Info.plist;
|
INFOPLIST_FILE = MsgPackRpc/Info.plist;
|
||||||
|
@ -15,9 +15,9 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>FMWK</string>
|
<string>FMWK</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0</string>
|
<string>SNAPSHOT-246</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>245</string>
|
<string>246</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
|
@ -52,9 +52,12 @@ public class Connection {
|
|||||||
locked(with: condition) { condition.broadcast() }
|
locked(with: condition) { condition.broadcast() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
locked(with: self.sessionLock) {
|
||||||
self.stopped = true
|
self.stopped = true
|
||||||
self.session.disconnectAndStop()
|
self.session.disconnectAndStop()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@discardableResult
|
@discardableResult
|
||||||
public func request(type: Int = 0,
|
public func request(type: Int = 0,
|
||||||
@ -64,6 +67,8 @@ public class Connection {
|
|||||||
expectsReturnValue: Bool)
|
expectsReturnValue: Bool)
|
||||||
-> MsgPackRpc.Response {
|
-> MsgPackRpc.Response {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let packed = pack(
|
let packed = pack(
|
||||||
[
|
[
|
||||||
.uint(UInt64(type)),
|
.uint(UInt64(type)),
|
||||||
@ -74,18 +79,25 @@ public class Connection {
|
|||||||
)
|
)
|
||||||
|
|
||||||
guard expectsReturnValue else {
|
guard expectsReturnValue else {
|
||||||
|
return locked(with: self.sessionLock) {
|
||||||
|
if !self.stopped {
|
||||||
self.session.write(packed)
|
self.session.write(packed)
|
||||||
|
}
|
||||||
|
|
||||||
return self.nilResponse(with: msgid)
|
return self.nilResponse(with: msgid)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let condition = NSCondition()
|
let condition = NSCondition()
|
||||||
locked(with: self.conditionsLock) { self.conditions[msgid] = condition }
|
locked(with: self.conditionsLock) { self.conditions[msgid] = condition }
|
||||||
|
|
||||||
|
locked(with: self.sessionLock) {
|
||||||
if self.stopped {
|
if self.stopped {
|
||||||
return self.nilResponse(with: msgid)
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
self.session.write(packed)
|
self.session.write(packed)
|
||||||
|
}
|
||||||
|
|
||||||
locked(with: condition) {
|
locked(with: condition) {
|
||||||
while !self.stopped && self.responses[msgid] == nil && condition.wait(until: Date(timeIntervalSinceNow: 5)) {}
|
while !self.stopped && self.responses[msgid] == nil && condition.wait(until: Date(timeIntervalSinceNow: 5)) {}
|
||||||
@ -113,6 +125,7 @@ public class Connection {
|
|||||||
private var conditions: [UInt32: NSCondition] = [:]
|
private var conditions: [UInt32: NSCondition] = [:]
|
||||||
private let conditionsLock = NSRecursiveLock()
|
private let conditionsLock = NSRecursiveLock()
|
||||||
|
|
||||||
|
private let sessionLock = NSRecursiveLock()
|
||||||
private var stopped = false
|
private var stopped = false
|
||||||
|
|
||||||
private func nilResponse(with msgid: UInt32) -> MsgPackRpc.Response {
|
private func nilResponse(with msgid: UInt32) -> MsgPackRpc.Response {
|
||||||
|
@ -216,7 +216,7 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 245;
|
CURRENT_PROJECT_VERSION = 246;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
@ -276,7 +276,7 @@
|
|||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
CODE_SIGN_IDENTITY = "-";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 245;
|
CURRENT_PROJECT_VERSION = 246;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
@ -306,7 +306,7 @@
|
|||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 245;
|
DYLIB_CURRENT_VERSION = 246;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
FRAMEWORK_VERSION = A;
|
FRAMEWORK_VERSION = A;
|
||||||
INFOPLIST_FILE = NvimMsgPack/Info.plist;
|
INFOPLIST_FILE = NvimMsgPack/Info.plist;
|
||||||
@ -329,7 +329,7 @@
|
|||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 245;
|
DYLIB_CURRENT_VERSION = 246;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
FRAMEWORK_VERSION = A;
|
FRAMEWORK_VERSION = A;
|
||||||
INFOPLIST_FILE = NvimMsgPack/Info.plist;
|
INFOPLIST_FILE = NvimMsgPack/Info.plist;
|
||||||
|
@ -15,9 +15,9 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>FMWK</string>
|
<string>FMWK</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0</string>
|
<string>SNAPSHOT-246</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>245</string>
|
<string>246</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
1929B86897DAEFDBABAB1C14 /* NvimApiExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BBD7F88AE4F01E626691 /* NvimApiExtension.swift */; };
|
1929B86897DAEFDBABAB1C14 /* NvimApiExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BBD7F88AE4F01E626691 /* NvimApiExtension.swift */; };
|
||||||
4B2016EE1FD45EED0038528A /* NvimAutoCommandEvent.generated.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2016EC1FD45EED0038528A /* NvimAutoCommandEvent.generated.m */; };
|
4B2016EE1FD45EED0038528A /* NvimAutoCommandEvent.generated.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2016EC1FD45EED0038528A /* NvimAutoCommandEvent.generated.m */; };
|
||||||
4B2016EF1FD45EED0038528A /* NvimAutoCommandEvent.generated.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2016ED1FD45EED0038528A /* NvimAutoCommandEvent.generated.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
4B2016EF1FD45EED0038528A /* NvimAutoCommandEvent.generated.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2016ED1FD45EED0038528A /* NvimAutoCommandEvent.generated.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
4B8662E81FDC3F9F007F490D /* vimr.vim in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B8662E41FDC3D4F007F490D /* vimr.vim */; };
|
||||||
4B90F02D1FD2AFAE008A39E0 /* NvimUiBridgeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B90F00F1FD2AFAC008A39E0 /* NvimUiBridgeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
4B90F02D1FD2AFAE008A39E0 /* NvimUiBridgeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B90F00F1FD2AFAC008A39E0 /* NvimUiBridgeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
4B90F02E1FD2AFAE008A39E0 /* NvimView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0101FD2AFAC008A39E0 /* NvimView.swift */; };
|
4B90F02E1FD2AFAE008A39E0 /* NvimView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0101FD2AFAC008A39E0 /* NvimView.swift */; };
|
||||||
4B90F02F1FD2AFAE008A39E0 /* NvimView+Resize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0111FD2AFAC008A39E0 /* NvimView+Resize.swift */; };
|
4B90F02F1FD2AFAE008A39E0 /* NvimView+Resize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90F0111FD2AFAC008A39E0 /* NvimView+Resize.swift */; };
|
||||||
@ -62,6 +63,16 @@
|
|||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
4B8662E71FDC3F70007F490D /* CopyFiles */ = {
|
||||||
|
isa = PBXCopyFilesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
dstPath = runtime/plugin;
|
||||||
|
dstSubfolderSpec = 7;
|
||||||
|
files = (
|
||||||
|
4B8662E81FDC3F9F007F490D /* vimr.vim in CopyFiles */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
4B90F04D1FD2AFD3008A39E0 /* CopyFiles */ = {
|
4B90F04D1FD2AFD3008A39E0 /* CopyFiles */ = {
|
||||||
isa = PBXCopyFilesBuildPhase;
|
isa = PBXCopyFilesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@ -88,6 +99,7 @@
|
|||||||
1929BBD7F88AE4F01E626691 /* NvimApiExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NvimApiExtension.swift; sourceTree = "<group>"; };
|
1929BBD7F88AE4F01E626691 /* NvimApiExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NvimApiExtension.swift; sourceTree = "<group>"; };
|
||||||
4B2016EC1FD45EED0038528A /* NvimAutoCommandEvent.generated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NvimAutoCommandEvent.generated.m; sourceTree = "<group>"; };
|
4B2016EC1FD45EED0038528A /* NvimAutoCommandEvent.generated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NvimAutoCommandEvent.generated.m; sourceTree = "<group>"; };
|
||||||
4B2016ED1FD45EED0038528A /* NvimAutoCommandEvent.generated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NvimAutoCommandEvent.generated.h; sourceTree = "<group>"; };
|
4B2016ED1FD45EED0038528A /* NvimAutoCommandEvent.generated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NvimAutoCommandEvent.generated.h; sourceTree = "<group>"; };
|
||||||
|
4B8662E41FDC3D4F007F490D /* vimr.vim */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = vimr.vim; sourceTree = "<group>"; };
|
||||||
4B90F0041FD2AF59008A39E0 /* NvimView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NvimView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
4B90F0041FD2AF59008A39E0 /* NvimView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NvimView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
4B90F0081FD2AF59008A39E0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
4B90F0081FD2AF59008A39E0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
4B90F00F1FD2AFAC008A39E0 /* NvimUiBridgeProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NvimUiBridgeProtocol.h; sourceTree = "<group>"; };
|
4B90F00F1FD2AFAC008A39E0 /* NvimUiBridgeProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NvimUiBridgeProtocol.h; sourceTree = "<group>"; };
|
||||||
@ -185,6 +197,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
4B90F0081FD2AF59008A39E0 /* Info.plist */,
|
4B90F0081FD2AF59008A39E0 /* Info.plist */,
|
||||||
|
4B8662E41FDC3D4F007F490D /* vimr.vim */,
|
||||||
4BF18C5C1FD2EEE400DF95D1 /* NvimView.h */,
|
4BF18C5C1FD2EEE400DF95D1 /* NvimView.h */,
|
||||||
4B90F02B1FD2AFAD008A39E0 /* CellAttributes.swift */,
|
4B90F02B1FD2AFAD008A39E0 /* CellAttributes.swift */,
|
||||||
4B90F0161FD2AFAC008A39E0 /* CocoaExtensions.swift */,
|
4B90F0161FD2AFAC008A39E0 /* CocoaExtensions.swift */,
|
||||||
@ -277,6 +290,7 @@
|
|||||||
4B90F0001FD2AF59008A39E0 /* Frameworks */,
|
4B90F0001FD2AF59008A39E0 /* Frameworks */,
|
||||||
4B90F0011FD2AF59008A39E0 /* Headers */,
|
4B90F0011FD2AF59008A39E0 /* Headers */,
|
||||||
4B90F0021FD2AF59008A39E0 /* Resources */,
|
4B90F0021FD2AF59008A39E0 /* Resources */,
|
||||||
|
4B8662E71FDC3F70007F490D /* CopyFiles */,
|
||||||
4BE45C071FD2D4D7005C0A95 /* CopyFiles */,
|
4BE45C071FD2D4D7005C0A95 /* CopyFiles */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
@ -470,7 +484,7 @@
|
|||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 245;
|
CURRENT_PROJECT_VERSION = 246;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
@ -528,7 +542,7 @@
|
|||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 245;
|
CURRENT_PROJECT_VERSION = 246;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
@ -555,7 +569,7 @@
|
|||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 245;
|
DYLIB_CURRENT_VERSION = 246;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
|
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
|
||||||
FRAMEWORK_VERSION = A;
|
FRAMEWORK_VERSION = A;
|
||||||
@ -577,7 +591,7 @@
|
|||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 245;
|
DYLIB_CURRENT_VERSION = 246;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
|
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
|
||||||
FRAMEWORK_VERSION = A;
|
FRAMEWORK_VERSION = A;
|
||||||
|
@ -15,9 +15,9 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>FMWK</string>
|
<string>FMWK</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0</string>
|
<string>SNAPSHOT-246</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>245</string>
|
<string>246</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
|
@ -59,10 +59,6 @@ extension NvimView {
|
|||||||
|
|
||||||
self.nvim.connect()
|
self.nvim.connect()
|
||||||
|
|
||||||
self.nvim.setOption(name: "mouse", value: .string("a"))
|
|
||||||
self.nvim.setOption(name: "title", value: .bool(true))
|
|
||||||
self.nvim.setOption(name: "termguicolors", value: .bool(true))
|
|
||||||
|
|
||||||
if noErrorDuringInitialization == false {
|
if noErrorDuringInitialization == false {
|
||||||
self.logger.fault("There was an error launching neovim.")
|
self.logger.fault("There was an error launching neovim.")
|
||||||
|
|
||||||
|
@ -180,8 +180,8 @@ extension NvimView {
|
|||||||
|
|
||||||
public func stop() {
|
public func stop() {
|
||||||
self.bridgeLogger.hr()
|
self.bridgeLogger.hr()
|
||||||
self.agent.quit()
|
|
||||||
self.nvim.disconnect()
|
self.nvim.disconnect()
|
||||||
|
self.agent.quit()
|
||||||
|
|
||||||
gui.async {
|
gui.async {
|
||||||
self.waitForNeoVimToQuit()
|
self.waitForNeoVimToQuit()
|
||||||
|
3
NvimView/NvimView/vimr.vim
Normal file
3
NvimView/NvimView/vimr.vim
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
set termguicolors
|
||||||
|
set mouse=a
|
||||||
|
set title
|
@ -17,9 +17,9 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>SNAPSHOT-243</string>
|
<string>SNAPSHOT-246</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>245</string>
|
<string>246</string>
|
||||||
<key>LSApplicationCategoryType</key>
|
<key>LSApplicationCategoryType</key>
|
||||||
<string>public.app-category.productivity</string>
|
<string>public.app-category.productivity</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
@ -1105,7 +1105,7 @@
|
|||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 245;
|
CURRENT_PROJECT_VERSION = 246;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
ENABLE_TESTABILITY = YES;
|
ENABLE_TESTABILITY = YES;
|
||||||
@ -1160,7 +1160,7 @@
|
|||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 245;
|
CURRENT_PROJECT_VERSION = 246;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
@ -94,6 +94,7 @@ class FileOutlineView: NSOutlineView,
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func reloadData() {
|
override func reloadData() {
|
||||||
|
self.cells.removeAll()
|
||||||
self.widths.removeAll()
|
self.widths.removeAll()
|
||||||
super.reloadData()
|
super.reloadData()
|
||||||
}
|
}
|
||||||
@ -135,6 +136,7 @@ class FileOutlineView: NSOutlineView,
|
|||||||
fileprivate var root: FileBrowserItem
|
fileprivate var root: FileBrowserItem
|
||||||
|
|
||||||
fileprivate var widths = [String: CGFloat]()
|
fileprivate var widths = [String: CGFloat]()
|
||||||
|
fileprivate var cells = [String: ThemedTableCell]()
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
@ -179,7 +181,12 @@ class FileOutlineView: NSOutlineView,
|
|||||||
.filter { (_, fileBrowserItem) in newPreparedChildren.contains(fileBrowserItem) == false }
|
.filter { (_, fileBrowserItem) in newPreparedChildren.contains(fileBrowserItem) == false }
|
||||||
.map { (idx, _) in idx }
|
.map { (idx, _) in idx }
|
||||||
|
|
||||||
indicesToRemove.forEach { self.widths.removeValue(forKey: curPreparedChildren[$0].url.path) }
|
indicesToRemove.forEach { index in
|
||||||
|
let path = curPreparedChildren[index].url.path
|
||||||
|
|
||||||
|
self.cells.removeValue(forKey: path)
|
||||||
|
self.widths.removeValue(forKey: path)
|
||||||
|
}
|
||||||
|
|
||||||
fileLog.debug("\(fileBrowserItem): \(curPreparedChildren) vs. \(indicesToRemove)")
|
fileLog.debug("\(fileBrowserItem): \(curPreparedChildren) vs. \(indicesToRemove)")
|
||||||
|
|
||||||
@ -293,15 +300,48 @@ extension FileOutlineView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func outlineView(_: NSOutlineView, child index: Int, ofItem item: Any?) -> Any {
|
func outlineView(_: NSOutlineView, child index: Int, ofItem item: Any?) -> Any {
|
||||||
|
let level = self.level(forItem: item) + 2
|
||||||
|
defer { self.adjustColumnWidths() }
|
||||||
|
|
||||||
if item == nil {
|
if item == nil {
|
||||||
return self.prepare(self.root.children)[index]
|
let child = self.prepare(self.root.children)[index]
|
||||||
|
|
||||||
|
let cell = self.cell(forItem: child)
|
||||||
|
self.cells[child.url.path] = cell
|
||||||
|
self.widths[child.url.path] = self.cellWidth(for: cell, level: level)
|
||||||
|
|
||||||
|
return child
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let fileBrowserItem = item as? FileBrowserItem else {
|
guard let fileBrowserItem = item as? FileBrowserItem else {
|
||||||
preconditionFailure("Should not happen")
|
preconditionFailure("Should not happen")
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.prepare(fileBrowserItem.children)[index]
|
let child = self.prepare(fileBrowserItem.children)[index]
|
||||||
|
|
||||||
|
let cell = self.cell(forItem: child)
|
||||||
|
self.cells[child.url.path] = cell
|
||||||
|
self.widths[child.url.path] = self.cellWidth(for: cell, level: level)
|
||||||
|
|
||||||
|
return child
|
||||||
|
}
|
||||||
|
|
||||||
|
private func cell(forItem item: FileBrowserItem) -> ThemedTableCell {
|
||||||
|
if let existingCell = self.cells[item.url.path] {
|
||||||
|
return existingCell
|
||||||
|
}
|
||||||
|
|
||||||
|
let cell = ThemedTableCell(withIdentifier: "file-cell-view")
|
||||||
|
|
||||||
|
cell.isDir = item.isDir
|
||||||
|
cell.text = item.url.lastPathComponent
|
||||||
|
|
||||||
|
if self.showsFileIcon {
|
||||||
|
let icon = FileUtils.icon(forUrl: item.url)
|
||||||
|
cell.image = cell.isHidden ? icon?.tinting(with: NSColor.white.withAlphaComponent(0.4)) : icon
|
||||||
|
}
|
||||||
|
|
||||||
|
return cell
|
||||||
}
|
}
|
||||||
|
|
||||||
func outlineView(_: NSOutlineView, isItemExpandable item: Any) -> Bool {
|
func outlineView(_: NSOutlineView, isItemExpandable item: Any) -> Bool {
|
||||||
@ -350,23 +390,7 @@ extension FileOutlineView {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
let cell = (self.makeView(withIdentifier: NSUserInterfaceItemIdentifier("file-cell-view"), owner: self) as? ThemedTableCell)?.reset()
|
return self.cells[fileBrowserItem.url.path]
|
||||||
?? ThemedTableCell(withIdentifier: "file-cell-view")
|
|
||||||
|
|
||||||
cell.isDir = fileBrowserItem.isDir
|
|
||||||
cell.text = fileBrowserItem.url.lastPathComponent
|
|
||||||
|
|
||||||
guard self.showsFileIcon else {
|
|
||||||
return cell
|
|
||||||
}
|
|
||||||
|
|
||||||
let icon = FileUtils.icon(forUrl: fileBrowserItem.url)
|
|
||||||
cell.image = fileBrowserItem.isHidden ? icon?.tinting(with: NSColor.white.withAlphaComponent(0.4)) : icon
|
|
||||||
|
|
||||||
self.widths[fileBrowserItem.url.path] = self.cellWidth(for: cell, level: self.level(forItem: item))
|
|
||||||
self.adjustColumnWidths()
|
|
||||||
|
|
||||||
return cell
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func outlineView(_: NSOutlineView, heightOfRowByItem item: Any) -> CGFloat {
|
func outlineView(_: NSOutlineView, heightOfRowByItem item: Any) -> CGFloat {
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>SNAPSHOT-243</string>
|
<string>SNAPSHOT-246</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
@ -49,7 +49,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>245</string>
|
<string>246</string>
|
||||||
<key>LSApplicationCategoryType</key>
|
<key>LSApplicationCategoryType</key>
|
||||||
<string>public.app-category.productivity</string>
|
<string>public.app-category.productivity</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
@ -100,13 +100,13 @@ class BuffersList: NSView,
|
|||||||
}
|
}
|
||||||
|
|
||||||
fileprivate func adjustFileViewWidth() {
|
fileprivate func adjustFileViewWidth() {
|
||||||
let maxWidth = self.buffers.reduce(CGFloat(0)) { (curMaxWidth, buffer) in
|
let maxWidth = self.buffers.reduce(CGFloat(100)) { (curMaxWidth, buffer) in
|
||||||
return max(self.text(for: buffer).size().width, curMaxWidth)
|
return max(self.text(for: buffer).size().width, curMaxWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
let column = self.bufferList.tableColumns[0]
|
let column = self.bufferList.tableColumns[0]
|
||||||
column.minWidth = maxWidth + ThemedTableCell.widthWithoutText
|
// If we set the minWidth and maxWidth here, the column does not get resized... Dunno why.
|
||||||
column.maxWidth = column.minWidth
|
column.width = maxWidth + ThemedTableCell.widthWithoutText
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,12 +136,14 @@ extension BuffersList {
|
|||||||
extension BuffersList {
|
extension BuffersList {
|
||||||
|
|
||||||
public func tableView(_ tableView: NSTableView, rowViewForRow row: Int) -> NSTableRowView? {
|
public func tableView(_ tableView: NSTableView, rowViewForRow row: Int) -> NSTableRowView? {
|
||||||
return tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("buffer-row-view"), owner: self) as? ThemedTableRow
|
return tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("buffer-row-view"), owner: self)
|
||||||
?? ThemedTableRow(withIdentifier: "buffer-row-view", themedView: self)
|
as? ThemedTableRow ?? ThemedTableRow(withIdentifier: "buffer-row-view", themedView: self)
|
||||||
}
|
}
|
||||||
|
|
||||||
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
|
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
|
||||||
let cachedCell = (tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("buffer-cell-view"), owner: self) as? ThemedTableCell)?.reset()
|
let cachedCell = (tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("buffer-cell-view"), owner: self)
|
||||||
|
as? ThemedTableCell)?.reset()
|
||||||
|
|
||||||
let cell = cachedCell ?? ThemedTableCell(withIdentifier: "buffer-cell-view")
|
let cell = cachedCell ?? ThemedTableCell(withIdentifier: "buffer-cell-view")
|
||||||
|
|
||||||
let buffer = self.buffers[row]
|
let buffer = self.buffers[row]
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>BNDL</string>
|
<string>BNDL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>SNAPSHOT-243</string>
|
<string>SNAPSHOT-246</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>245</string>
|
<string>246</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
@ -7,22 +7,24 @@
|
|||||||
<description>Most recent changes with links to updates for VimR.</description>
|
<description>Most recent changes with links to updates for VimR.</description>
|
||||||
<language>en</language>
|
<language>en</language>
|
||||||
<item>
|
<item>
|
||||||
<title>SNAPSHOT-243</title>
|
<title>SNAPSHOT-246</title>
|
||||||
<description><![CDATA[
|
<description><![CDATA[
|
||||||
<ul>
|
<ul>
|
||||||
<li>GH-387: Show all buffers (the same as <code>:buffers</code>) in the buffers list</li>
|
<li>Some High Sierra related fixes</li>
|
||||||
|
<li>Do not crash on launch</li>
|
||||||
|
<li>Too narrow entries in the file browser and buffers list.</li>
|
||||||
</ul>
|
</ul>
|
||||||
]]></description>
|
]]></description>
|
||||||
<releaseNotesLink>
|
<releaseNotesLink>
|
||||||
https://github.com/qvacua/vimr/releases/tag/snapshot/243
|
https://github.com/qvacua/vimr/releases/tag/snapshot/246
|
||||||
</releaseNotesLink>
|
</releaseNotesLink>
|
||||||
<pubDate>2017-12-01T22:07:42.069953</pubDate>
|
<pubDate>2017-12-09T17:57:47.512444</pubDate>
|
||||||
<minimumSystemVersion>10.10.0</minimumSystemVersion>
|
<minimumSystemVersion>10.10.0</minimumSystemVersion>
|
||||||
<enclosure url="https://github.com/qvacua/vimr/releases/download/snapshot/243/VimR-SNAPSHOT-243.tar.bz2"
|
<enclosure url="https://github.com/qvacua/vimr/releases/download/snapshot/246/VimR-SNAPSHOT-246.tar.bz2"
|
||||||
sparkle:version="243"
|
sparkle:version="246"
|
||||||
sparkle:shortVersionString="SNAPSHOT-243"
|
sparkle:shortVersionString="SNAPSHOT-246"
|
||||||
sparkle:dsaSignature="MC0CFQDh4d54Pex+jDSdu0r9j1OhsrZYqQIUdbC+YQWl8bWB0cgkHra9JR9Zn4c="
|
sparkle:dsaSignature="MC0CFQDzBKxwPeP9IlKVvTwZqbQTR6gFAwIUQN9zAHmttTpkoH/OCs+//tw12yk="
|
||||||
length="14046487"
|
length="14730787"
|
||||||
type="application/octet-stream"/>
|
type="application/octet-stream"/>
|
||||||
</item>
|
</item>
|
||||||
</channel>
|
</channel>
|
||||||
|
Loading…
Reference in New Issue
Block a user