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 2019-03-08 10:32:46 +01:00
commit 2a5e39c2d3
17 changed files with 214 additions and 152 deletions

View File

@ -6,7 +6,7 @@ github "a2/MessagePack.swift" "3.0.0"
github "elegantchaos/DictionaryCoding" "1.0.6"
github "eonil/FileSystemEvents" "1.0.0"
github "httpswift/swifter" "1.4.5"
github "qvacua/CocoaFontAwesome" "c4d9ac161c43a7d22ae711d112ca6c6d90c86b52"
github "qvacua/CocoaFontAwesome" "fc2a08babd676525ced68061b19ad8ff3dd1d0b3"
github "qvacua/CocoaMarkdown" "c58166490a71ad4d8466f7e7b9faf7cb0917c42f"
github "qvacua/RxMessagePort" "v0.0.6"
github "qvacua/RxMsgpackRpc" "v0.0.8"

View File

@ -17,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.26.0</string>
<string>0.26.1</string>
<key>CFBundleVersion</key>
<string>303</string>
<string>304</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>

View File

@ -803,7 +803,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 303;
CURRENT_PROJECT_VERSION = 304;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@ -865,7 +865,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 303;
CURRENT_PROJECT_VERSION = 304;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@ -894,7 +894,7 @@
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 303;
DYLIB_CURRENT_VERSION = 304;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../Carthage/Build/Mac";
FRAMEWORK_VERSION = A;
@ -916,7 +916,7 @@
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 303;
DYLIB_CURRENT_VERSION = 304;
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>0.26.0</string>
<string>0.26.1</string>
<key>CFBundleVersion</key>
<string>303</string>
<string>304</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2017 Tae Won Ha. All rights reserved.</string>
<key>NSPrincipalClass</key>

View File

@ -15,8 +15,8 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>0.26.0</string>
<string>0.26.1</string>
<key>CFBundleVersion</key>
<string>303</string>
<string>304</string>
</dict>
</plist>

View File

@ -7,7 +7,6 @@
objects = {
/* Begin PBXBuildFile section */
1929B0244BD7111E168726CF /* DefaultShortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B93256AF7F9137223E36 /* DefaultShortcuts.swift */; };
1929B04CE8ECBD75CBBB0991 /* StringCommonsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B5D45C9792BBE76B8AFF /* StringCommonsTest.swift */; };
1929B05B9D664052EC2D23EF /* FileOutlineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BCE3E156C06EDF1F2806 /* FileOutlineView.swift */; };
1929B08C6230B9C5AB72DAF1 /* Pref128ToCurrentConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B5046239709E33516F5C /* Pref128ToCurrentConverter.swift */; };
@ -27,7 +26,6 @@
1929B3AC66EFE35D68C020E3 /* PreviewToolReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BFB0F294F3714D5E095F /* PreviewToolReducer.swift */; };
1929B3F5743967125F357C9F /* Matcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BEEB33113B0E33C3830F /* Matcher.swift */; };
1929B462CD4935AFF6D69457 /* FileItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B7CB4863F80230C32D3C /* FileItem.swift */; };
1929B489A51FD5B13888A00C /* RpcEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BBF0944940845485A512 /* RpcEvents.swift */; };
1929B4B00D7BB191A9A6532D /* HtmlPreviewToolReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BE5AEA3D0980860EED50 /* HtmlPreviewToolReducer.swift */; };
1929B4B70926DE113E6BF990 /* PreviewReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BE37AA2843779CAFA76F /* PreviewReducer.swift */; };
1929B4E54E2F13A7F5F2B682 /* BufferListReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B67A10E6BB2986B2416E /* BufferListReducer.swift */; };
@ -70,17 +68,14 @@
1929BB67CAAD4F6CBD38DF0A /* RxRedux.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B66A5E2D00EA143AFD86 /* RxRedux.swift */; };
1929BB85B2D30E548A32663D /* ShortcutsPref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B0E9B2F018D3E31D4B0B /* ShortcutsPref.swift */; };
1929BBE28654E4307AF1E2FD /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BC2F05E9A5C0DB039739 /* Theme.swift */; };
1929BC682EA78BF50D1E0890 /* ShortcutsTableSubviews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B07F0085B7AE10413346 /* ShortcutsTableSubviews.swift */; };
1929BCC7908DD899999B70BE /* AppearancePrefReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BED01F5D94BFCA4CF80F /* AppearancePrefReducer.swift */; };
1929BCC9D3604933DFF07E2E /* FileBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BA5C7099CDEB04B76BA4 /* FileBrowser.swift */; };
1929BCF7F7B9CC5499A3F506 /* AdvancedPrefReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B7039C5689CE45F53888 /* AdvancedPrefReducer.swift */; };
1929BD2F41D93ADFF43C1C98 /* NetUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 1929B02440BC99C42F9EBD45 /* NetUtils.m */; };
1929BD3878A3A47B8D685CD2 /* AppDelegateReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B7A68B7109CEFAF105E8 /* AppDelegateReducer.swift */; };
1929BD3F9E609BFADB27584B /* Scorer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B9D510177918080BE39B /* Scorer.swift */; };
1929BDC69A5F9D1661423488 /* ShortcutItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BF230875DED6CD7AB3EB /* ShortcutItem.swift */; };
1929BDFDBDA7180D02ACB37E /* RxSwiftCommonsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B6C215ACCBE12672A8D7 /* RxSwiftCommonsTest.swift */; };
1929BE0DAEE9664C5BCFA211 /* States.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BB6608B4F0E037CA0F4C /* States.swift */; };
1929BE0EB11D6BBC46D448D2 /* RpcAppearanceEpic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B230EE8F1428980988F0 /* RpcAppearanceEpic.swift */; };
1929BE0F64A6CE5BCE2A5092 /* MainWindow+Delegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B714EB137AE448CE8ABD /* MainWindow+Delegates.swift */; };
1929BE2F3E0182CC51F2763A /* ThemedTableSubviews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BD2CA8DD198A6BCDBCB7 /* ThemedTableSubviews.swift */; };
1929BEAE0592096BC1191B67 /* PrefPane.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B07A4A9209C88380E015 /* PrefPane.swift */; };
@ -1235,11 +1230,6 @@
1929B8E90A1378E494D481E7 /* PrefUtilsTest.swift in Sources */,
1929B20CE35B43BB1CE023BA /* Theme.swift in Sources */,
1929B9318D32146D58BB38EC /* AppKitCommons.swift in Sources */,
1929BC682EA78BF50D1E0890 /* ShortcutsTableSubviews.swift in Sources */,
1929B0244BD7111E168726CF /* DefaultShortcuts.swift in Sources */,
1929BDC69A5F9D1661423488 /* ShortcutItem.swift in Sources */,
1929B489A51FD5B13888A00C /* RpcEvents.swift in Sources */,
1929BE0EB11D6BBC46D448D2 /* RpcAppearanceEpic.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1334,7 +1324,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 303;
CURRENT_PROJECT_VERSION = 304;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@ -1392,7 +1382,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 303;
CURRENT_PROJECT_VERSION = 304;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;

View File

@ -63,25 +63,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
self.useSnapshot = initialAppState.useSnapshotUpdate
super.init()
NSUserNotificationCenter.default.delegate = self
// FIXME: GH-611: https://github.com/qvacua/vimr/issues/611
// Check whether FontAwesome can be loaded. If not, show a warning.
// We don't know yet why this happens to some users.
DispatchQueue.main.async {
guard NSFont.fontAwesome(ofSize: 13) == nil else {
return
}
let notification = NSUserNotification()
notification.title = "FontAwesome could not be loaded."
notification.subtitle = "Unfortunately we don't know yet what is causing this."
notification.informativeText = """
We use the FontAwesome font for icons in the tools, e.g. the file browser. Those icons are now shown as ?.
You can track the progress on this issue at GitHub issue 611.
"""
NSUserNotificationCenter.default.deliver(notification)
}
}
override func awakeFromNib() {

View File

@ -106,15 +106,18 @@ extension FileBrowser {
}
override func repaint(with theme: Workspace.Theme) {
self.goToParentButton.image = NSImage.fontAwesomeIcon(name: .levelUp,
self.goToParentButton.image = NSImage.fontAwesomeIcon(name: .levelUpAlt,
style: .solid,
textColor: theme.toolbarForeground,
dimension: InnerToolBar.iconDimension)
self.scrollToSourceButton.image = NSImage.fontAwesomeIcon(name: .bullseye,
style: .solid,
textColor: theme.toolbarForeground,
dimension: InnerToolBar.iconDimension)
self.refreshButton.image = NSImage.fontAwesomeIcon(name: .refresh,
self.refreshButton.image = NSImage.fontAwesomeIcon(name: .sync,
style: .solid,
textColor: theme.toolbarForeground,
dimension: InnerToolBar.iconDimension)
}
@ -129,17 +132,17 @@ extension FileBrowser {
private func addViews() {
let goToParent = self.goToParentButton
InnerToolBar.configureToStandardIconButton(button: goToParent, iconName: .levelUp)
InnerToolBar.configureToStandardIconButton(button: goToParent, iconName: .levelUpAlt, style: .solid)
goToParent.toolTip = "Set parent as working directory"
goToParent.action = #selector(FileBrowser.goToParentAction)
let scrollToSource = self.scrollToSourceButton
InnerToolBar.configureToStandardIconButton(button: scrollToSource, iconName: .bullseye)
InnerToolBar.configureToStandardIconButton(button: scrollToSource, iconName: .bullseye, style: .solid)
scrollToSource.toolTip = "Navigate to the current buffer"
scrollToSource.action = #selector(FileBrowser.scrollToSourceAction)
let refresh = self.refreshButton
InnerToolBar.configureToStandardIconButton(button: refresh, iconName: .refresh)
InnerToolBar.configureToStandardIconButton(button: refresh, iconName: .sync, style: .solid)
refresh.toolTip = "Refresh"
refresh.action = #selector(FileBrowser.refreshAction)
@ -148,11 +151,22 @@ extension FileBrowser {
self.addSubview(refresh)
refresh.autoPinEdge(toSuperviewEdge: .top)
refresh.autoPinEdge(toSuperviewEdge: .right)
refresh.autoPinEdge(toSuperviewEdge: .right,
withInset: InnerToolBar.itemPadding)
goToParent.autoPinEdge(toSuperviewEdge: .top)
goToParent.autoPinEdge(.right, to: .left, of: refresh)
goToParent.autoPinEdge(
.right,
to: .left,
of: refresh,
withOffset: -InnerToolBar.itemPadding
)
scrollToSource.autoPinEdge(toSuperviewEdge: .top)
scrollToSource.autoPinEdge(.right, to: .left, of: goToParent)
scrollToSource.autoPinEdge(
.right,
to: .left,
of: goToParent,
withOffset: -InnerToolBar.itemPadding
)
}
required init?(coder: NSCoder) {
@ -181,9 +195,7 @@ extension FileBrowser {
return
}
#if NOPE
self.fileView.select(url)
#endif
}
@objc func refreshAction(_ sender: Any?) {

View File

@ -34,11 +34,13 @@ class FileOutlineView: NSOutlineView,
self.isShowHidden = state.fileBrowserShowHidden
self.triangleClosed = NSImage.fontAwesomeIcon(
name: .caretRight,
style: .solid,
textColor: self.theme.directoryForeground,
dimension: triangleImageSize
)
self.triangleOpen = NSImage.fontAwesomeIcon(
name: .caretDown,
style: .solid,
textColor: self.theme.directoryForeground,
dimension: triangleImageSize
)
@ -123,6 +125,50 @@ class FileOutlineView: NSOutlineView,
return result
}
private func select(treeNode: NSTreeNode) {
let targetRow = self.row(forItem: treeNode)
self.selectRowIndexes(IndexSet(integer: targetRow), byExtendingSelection: false)
self.scrollRowToVisible(targetRow)
}
func select(_ url: URL) {
guard let childrenOfRoot = self.treeController.arrangedObjects.children
else { return }
var stack = [NSTreeNode]()
// NSTreeController.arrangedObjects has no Node.
for childOfRoot in childrenOfRoot {
guard let node = childOfRoot.node else { continue }
stdoutLog.debug(node)
if node.url == url {
self.select(treeNode: childOfRoot)
return
}
if node.url.isParent(of: url) {
self.expandItem(childOfRoot)
stack.append(contentsOf: childOfRoot.children ?? [])
break
}
}
while let item = stack.popLast() {
self.expandItem(item)
guard let node = item.node else { continue }
if node.url == url {
self.select(treeNode: item)
return
}
if node.url.isParent(of: url) {
stack.append(contentsOf: item.children ?? [])
}
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@ -279,11 +325,13 @@ class FileOutlineView: NSOutlineView,
self.backgroundColor = self.theme.background
self.triangleClosed = NSImage.fontAwesomeIcon(
name: .caretRight,
style: .solid,
textColor: self.theme.directoryForeground,
dimension: triangleImageSize
)
self.triangleOpen = NSImage.fontAwesomeIcon(
name: .caretDown,
style: .solid,
textColor: self.theme.directoryForeground,
dimension: triangleImageSize
)

View File

@ -154,14 +154,15 @@ extension HtmlPreviewTool {
private func addViews() {
let selectHtmlFile = self.selectHtmlFile
InnerToolBar.configureToStandardIconButton(button: selectHtmlFile, iconName: .fileCodeO)
InnerToolBar.configureToStandardIconButton(button: selectHtmlFile, iconName: .fileCode, style: .regular)
selectHtmlFile.toolTip = "Select the HTML file"
selectHtmlFile.action = #selector(HtmlPreviewTool.selectHtmlFile)
self.addSubview(selectHtmlFile)
selectHtmlFile.autoPinEdge(toSuperviewEdge: .top)
selectHtmlFile.autoPinEdge(toSuperviewEdge: .right)
selectHtmlFile.autoPinEdge(toSuperviewEdge: .right,
withInset: InnerToolBar.itemPadding)
}
required init?(coder: NSCoder) {

View File

@ -1224,7 +1224,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.26.0</string>
<string>0.26.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@ -1241,7 +1241,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>303</string>
<string>304</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.productivity</string>
<key>LSMinimumSystemVersion</key>

View File

@ -21,33 +21,23 @@ class CustomToolBar: NSView {
*/
class InnerToolBar: NSView, NSUserInterfaceValidations {
private static let separatorThickness = CGFloat(1)
private static let height = InnerToolBar.iconDimension + 2 + 2 + InnerToolBar.separatorThickness
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private let titleField = NSTextField(forAutoLayout: ())
private let closeButton = NSButton(forAutoLayout: ())
private let cogButton = NSPopUpButton(forAutoLayout: ())
private let locToSelector: [WorkspaceBarLocation: Selector] = [
.top: #selector(InnerToolBar.moveToTopAction(_:)),
.right: #selector(InnerToolBar.moveToRightAction(_:)),
.bottom: #selector(InnerToolBar.moveToBottomAction(_:)),
.left: #selector(InnerToolBar.moveToLeftAction(_:)),
]
// MARK: - API
static let toolbarHeight = InnerToolBar.iconDimension
static let iconDimension = CGFloat(19)
static let iconDimension = CGFloat(18)
static let itemPadding = CGFloat(4)
static func configureToStandardIconButton(button: NSButton,
iconName: CocoaFontAwesome.FontAwesome,
color: NSColor = Workspace.Theme.default.toolbarForeground) {
let icon = NSImage.fontAwesomeIcon(name: iconName, textColor: color, dimension: InnerToolBar.iconDimension)
static func configureToStandardIconButton(
button: NSButton,
iconName: FontAwesome,
style: FontAwesomeStyle,
color: NSColor = Workspace.Theme.default.toolbarForeground
) {
let icon = NSImage.fontAwesomeIcon(
name: iconName,
style: .solid,
textColor: color,
dimension: InnerToolBar.iconDimension
)
button.imagePosition = .imageOnly
button.image = icon
@ -112,12 +102,18 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
self.layer!.backgroundColor = self.theme.toolbarBackground.cgColor
self.titleField.textColor = self.theme.toolbarForeground
self.cogButton.menu?.item(at: 0)?.image = NSImage.fontAwesomeIcon(name: .cog,
textColor: self.theme.toolbarForeground,
dimension: InnerToolBar.iconDimension)
self.closeButton.image = NSImage.fontAwesomeIcon(name: .timesCircle,
textColor: self.theme.toolbarForeground,
dimension: InnerToolBar.iconDimension)
self.cogButton.image = NSImage.fontAwesomeIcon(
name: .cog,
style: .solid,
textColor: self.theme.toolbarForeground,
dimension: InnerToolBar.iconDimension
)
self.closeButton.image = NSImage.fontAwesomeIcon(
name: .timesCircle,
style: .regular,
textColor: self.theme.toolbarForeground,
dimension: InnerToolBar.iconDimension
)
self.customToolbar?.repaint(with: self.theme)
@ -138,6 +134,25 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private static let separatorThickness = CGFloat(1)
private static let height = InnerToolBar.iconDimension + 2 + 2 + InnerToolBar.separatorThickness
private let titleField = NSTextField(forAutoLayout: ())
private let closeButton = NSButton(forAutoLayout: ())
private let cogButton = NSButton(forAutoLayout: ())
private let cogMenu = NSMenu()
private let locToSelector: [WorkspaceBarLocation: Selector] = [
.top: #selector(InnerToolBar.moveToTopAction(_:)),
.right: #selector(InnerToolBar.moveToRightAction(_:)),
.bottom: #selector(InnerToolBar.moveToBottomAction(_:)),
.left: #selector(InnerToolBar.moveToLeftAction(_:)),
]
private func removeCustomUiElements() {
self.customToolbar?.removeFromSuperview()
[self.titleField, self.closeButton, self.cogButton].forEach { $0.removeFromSuperview() }
@ -155,27 +170,23 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
title.isSelectable = false
title.controlSize = .small
InnerToolBar.configureToStandardIconButton(button: close,
iconName: .timesCircle,
color: self.theme.toolbarForeground)
InnerToolBar.configureToStandardIconButton(
button: close,
iconName: .timesCircle,
style: .regular,
color: self.theme.toolbarForeground
)
close.target = self
close.action = #selector(InnerToolBar.closeAction)
let cogIcon = NSImage.fontAwesomeIcon(name: .cog,
textColor: self.theme.toolbarForeground,
dimension: InnerToolBar.iconDimension)
cog.configureForAutoLayout()
cog.imagePosition = .imageOnly
cog.pullsDown = true
cog.isBordered = false
let cogCell = cog.cell as? NSPopUpButtonCell
cogCell?.arrowPosition = .noArrow
let cogMenu = NSMenu()
let cogMenuItem = NSMenuItem(title: "Cog", action: nil, keyEquivalent: "")
cogMenuItem.image = cogIcon
InnerToolBar.configureToStandardIconButton(
button: cog,
iconName: .cog,
style: .solid,
color: self.theme.toolbarForeground
)
cog.action = #selector(InnerToolBar.cogAction)
cog.target = self
let moveToMenu = NSMenu()
let topMenuItem = NSMenuItem(title: "Top",
@ -207,8 +218,6 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
)
moveToMenuItem.submenu = moveToMenu
cogMenu.addItem(cogMenuItem)
if self.customMenuItems?.isEmpty == false {
self.customMenuItems?.forEach(cogMenu.addItem)
cogMenu.addItem(NSMenuItem.separator())
@ -216,8 +225,6 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
cogMenu.addItem(moveToMenuItem)
cog.menu = cogMenu
if let customToolbar = self.customToolbar {
customToolbar.configureForAutoLayout()
self.addSubview(customToolbar)
@ -232,14 +239,32 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
close.autoPinEdge(toSuperviewEdge: .top, withInset: 2)
close.autoPinEdge(toSuperviewEdge: .right, withInset: 2)
cog.autoPinEdge(.right, to: .left, of: close, withOffset: 5)
cog.autoPinEdge(toSuperviewEdge: .top, withInset: -1)
cog.autoPinEdge(
.right,
to: .left,
of: close,
withOffset: -InnerToolBar.itemPadding
)
cog.autoPinEdge(.top, to: .top, of: close)
if let customToolbar = self.customToolbar {
customToolbar.autoPinEdge(toSuperviewEdge: .top, withInset: 2)
customToolbar.autoPinEdge(.right, to: .left, of: cog, withOffset: 5 - InnerToolBar.separatorThickness)
customToolbar.autoPinEdge(toSuperviewEdge: .bottom, withInset: 2 + InnerToolBar.separatorThickness)
customToolbar.autoPinEdge(.left, to: .right, of: title, withOffset: 2)
customToolbar.autoPinEdge(
.right,
to: .left,
of: cog,
withOffset: -InnerToolBar.itemPadding - InnerToolBar.separatorThickness
)
customToolbar.autoPinEdge(
toSuperviewEdge: .bottom,
withInset: 2 + InnerToolBar.separatorThickness
)
customToolbar.autoPinEdge(
.left,
to: .right,
of: title,
withOffset: -InnerToolBar.itemPadding
)
}
}
@ -251,7 +276,10 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
private func innerSeparatorRect() -> CGRect {
let cogBounds = self.cogButton.frame
let bounds = self.bounds
return CGRect(x: cogBounds.minX + 6, y: bounds.minY + 4, width: 1, height: bounds.height - 4 - 4)
return CGRect(x: cogBounds.minX - InnerToolBar.itemPadding,
y: bounds.minY + 4,
width: 1,
height: bounds.height - 4 - 4)
}
}
@ -262,6 +290,12 @@ extension InnerToolBar {
self.tool?.toggle()
}
@objc func cogAction(_ sender: NSButton) {
guard let event = NSApp.currentEvent else { return }
NSMenu.popUpContextMenu(self.cogMenu, with: event, for: sender)
}
@objc func moveToTopAction(_ sender: Any?) {
self.move(to: .top)
}

View File

@ -25,12 +25,6 @@ fileprivate class DummyToken: Comparable {
class ArrayCommonsTest: XCTestCase {
func testConcurrentChunkMap() {
let array = Array(0...1000)
let result = array.concurrentChunkMap(100, queue: .global(qos: .userInitiated)) { "\($0)" }
expect(Set(result)).to(equal(Set(array.map { "\($0)" })))
}
func testTuplesToDict() {
let tuples = [
(1, "1"),

View File

@ -15,10 +15,10 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>0.26.0</string>
<string>0.26.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>303</string>
<string>304</string>
</dict>
</plist>

View File

@ -7,28 +7,26 @@
<description>Most recent changes with links to updates for VimR.</description>
<language>en</language>
<item>
<title>v0.26.0-303</title>
<title>v0.26.1-304</title>
<description><![CDATA[
<ul>
<li>Minimum macOS requirement is now 10.12 Sierra.</li>
<li>Optional parallel computation of glyphs. This may result in faster rendering depending on the situation.</li>
<li>GH-314: You can customize the key shortcut for all menu items in the <em>Shortcut</em> preferences pane.</li>
<li>GH-501: Add key shortcuts to toggle the Buffer List, Markdown Preview, and HTML Preview tools.</li>
<li>GH-649: Add commands that can control some of GUI elements.</li>
<li>GH-506: Set font, size and linespacing via <code>~/.config/nvim/ginit.vim</code>.</li>
<li>Draw the disclosure triangle in appropriate color of the current color scheme (and improve handling of changes of <code>cwd</code> in the file browser).</li>
<li>Fix broken "Navigate to the current buffer" of the file browser</li>
<li>Dependencies updates:<ul>
<li>Use FontAwesome 5 (thanks for the PR, @chriszielinski!)</li>
</ul>
</li>
</ul>
]]></description>
<releaseNotesLink>
https://github.com/qvacua/vimr/releases/tag/v0.26.0-303
https://github.com/qvacua/vimr/releases/tag/v0.26.1-304
</releaseNotesLink>
<pubDate>2019-03-06T16:41:54.852561</pubDate>
<pubDate>2019-03-08T10:19:56.833987</pubDate>
<minimumSystemVersion>10.10.0</minimumSystemVersion>
<enclosure url="https://github.com/qvacua/vimr/releases/download/v0.26.0-303/VimR-v0.26.0-303.tar.bz2"
sparkle:version="303"
sparkle:shortVersionString="0.26.0"
sparkle:dsaSignature="MCwCFHaP11nsWF1cpjdrkDzT+lgmYkzIAhQn7eyPAKIRr3ej1ZOpBwub3NXYRw=="
length="15025572"
<enclosure url="https://github.com/qvacua/vimr/releases/download/v0.26.1-304/VimR-v0.26.1-304.tar.bz2"
sparkle:version="304"
sparkle:shortVersionString="0.26.1"
sparkle:dsaSignature="MC0CFD+wxEcpX1oSqMBdwq6pa3bspqs0AhUAyrwVnPz99VB13tbzXvNd5NjNqJI="
length="15266980"
type="application/octet-stream"/>
</item>
</channel>

View File

@ -7,28 +7,26 @@
<description>Most recent changes with links to updates for VimR.</description>
<language>en</language>
<item>
<title>v0.26.0-303</title>
<title>v0.26.1-304</title>
<description><![CDATA[
<ul>
<li>Minimum macOS requirement is now 10.12 Sierra.</li>
<li>Optional parallel computation of glyphs. This may result in faster rendering depending on the situation.</li>
<li>GH-314: You can customize the key shortcut for all menu items in the <em>Shortcut</em> preferences pane.</li>
<li>GH-501: Add key shortcuts to toggle the Buffer List, Markdown Preview, and HTML Preview tools.</li>
<li>GH-649: Add commands that can control some of GUI elements.</li>
<li>GH-506: Set font, size and linespacing via <code>~/.config/nvim/ginit.vim</code>.</li>
<li>Draw the disclosure triangle in appropriate color of the current color scheme (and improve handling of changes of <code>cwd</code> in the file browser).</li>
<li>Fix broken "Navigate to the current buffer" of the file browser</li>
<li>Dependencies updates:<ul>
<li>Use FontAwesome 5 (thanks for the PR, @chriszielinski!)</li>
</ul>
</li>
</ul>
]]></description>
<releaseNotesLink>
https://github.com/qvacua/vimr/releases/tag/v0.26.0-303
https://github.com/qvacua/vimr/releases/tag/v0.26.1-304
</releaseNotesLink>
<pubDate>2019-03-06T16:41:54.852561</pubDate>
<pubDate>2019-03-08T10:19:56.833987</pubDate>
<minimumSystemVersion>10.10.0</minimumSystemVersion>
<enclosure url="https://github.com/qvacua/vimr/releases/download/v0.26.0-303/VimR-v0.26.0-303.tar.bz2"
sparkle:version="303"
sparkle:shortVersionString="0.26.0"
sparkle:dsaSignature="MCwCFHaP11nsWF1cpjdrkDzT+lgmYkzIAhQn7eyPAKIRr3ej1ZOpBwub3NXYRw=="
length="15025572"
<enclosure url="https://github.com/qvacua/vimr/releases/download/v0.26.1-304/VimR-v0.26.1-304.tar.bz2"
sparkle:version="304"
sparkle:shortVersionString="0.26.1"
sparkle:dsaSignature="MC0CFD+wxEcpX1oSqMBdwq6pa3bspqs0AhUAyrwVnPz99VB13tbzXvNd5NjNqJI="
length="15266980"
type="application/octet-stream"/>
</item>
</channel>

View File

@ -2,6 +2,12 @@
* ...
# 0.26.1-???
* Fix broken "Navigate to the current buffer" of the file browser
* Dependencies updates:
- Use FontAwesome 5 (thanks for the PR, @chriszielinski!)
# 0.26.0-303
* Minimum macOS requirement is now 10.12 Sierra.