1
1
mirror of https://github.com/qvacua/vimr.git synced 2024-12-29 00:34:26 +03:00

GH-544 Migrate VimR to Swift 4

This commit is contained in:
Tae Won Ha 2017-10-22 14:33:18 +02:00
parent 4fb0962e04
commit 5656f6765a
No known key found for this signature in database
GPG Key ID: E40743465B5B8B44
28 changed files with 131 additions and 124 deletions

View File

@ -1371,11 +1371,11 @@
4BEBA5041CFF374B00673FDF = {
CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = H96Q2NKTQH;
LastSwiftMigration = 0800;
LastSwiftMigration = 0900;
};
4BEBA5131CFF374B00673FDF = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 0800;
LastSwiftMigration = 0900;
};
};
};
@ -2216,6 +2216,8 @@
PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.VimR;
PRODUCT_NAME = VimR;
SWIFT_OBJC_BRIDGING_HEADER = VimR/Bridge.h;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
@ -2235,6 +2237,8 @@
PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.VimR;
PRODUCT_NAME = VimR;
SWIFT_OBJC_BRIDGING_HEADER = VimR/Bridge.h;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
};
name = Release;
};
@ -2250,6 +2254,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.VimRTests;
PRODUCT_NAME = VimRTests;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
@ -2265,6 +2271,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.VimRTests;
PRODUCT_NAME = VimRTests;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
SWIFT_VERSION = 4.0;
};
name = Release;
};

View File

@ -121,11 +121,11 @@ class AdvancedPref: PrefPane, UiComponent, NSTextFieldDelegate {
// MARK: - Actions
extension AdvancedPref {
func useInteractiveZshAction(_ sender: NSButton) {
@objc func useInteractiveZshAction(_ sender: NSButton) {
self.emit(.setUseInteractiveZsh(sender.boolState))
}
func useSnapshotUpdateChannelAction(_ sender: NSButton) {
@objc func useSnapshotUpdateChannelAction(_ sender: NSButton) {
self.emit(.setUseSnapshotUpdate(sender.boolState))
}
}

View File

@ -131,7 +131,7 @@ extension AppDelegate {
return false
}
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplicationTerminateReply {
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
self.stateContext.savePrefs()
if self.hasDirtyWindows && self.hasMainWindows {
@ -143,7 +143,7 @@ extension AppDelegate {
discardAndQuitButton.keyEquivalentModifierMask = .command
discardAndQuitButton.keyEquivalent = "d"
if alert.runModal() == NSAlertSecondButtonReturn {
if alert.runModal() == .alertSecondButtonReturn {
self.uiRoot.prepareQuit()
return .terminateNow
}
@ -172,7 +172,7 @@ extension AppDelegate {
// MARK: - AppleScript
extension AppDelegate {
func handle(getUrlEvent event: NSAppleEventDescriptor, replyEvent: NSAppleEventDescriptor) {
@objc func handle(getUrlEvent event: NSAppleEventDescriptor, replyEvent: NSAppleEventDescriptor) {
guard let urlString = event.paramDescriptor(forKeyword: UInt32(keyDirectObject))?.stringValue else {
return
}
@ -286,7 +286,7 @@ extension AppDelegate {
panel.canChooseDirectories = true
panel.allowsMultipleSelection = true
panel.begin { result in
guard result == NSFileHandlingPanelOKButton else {
guard result == .OK else {
return
}
@ -309,7 +309,7 @@ fileprivate enum VimRUrlAction: String {
fileprivate let updater = SUUpdater()
fileprivate let debugMenuItemIdentifier = "debug-menu-item"
fileprivate let debugMenuItemIdentifier = NSUserInterfaceItemIdentifier("debug-menu-item")
fileprivate let filePrefix = "file="
fileprivate let cwdPrefix = "cwd="

View File

@ -43,7 +43,7 @@ extension NSImage {
result.lockFocus()
color.set()
NSRectFillUsingOperation(CGRect(origin: .zero, size: self.size), .sourceAtop)
CGRect(origin: .zero, size: self.size).fill(using: .sourceAtop)
result.unlockFocus()
return result
@ -54,11 +54,11 @@ extension NSButton {
var boolState: Bool {
get {
return self.state == NSOnState ? true : false
return self.state == .on ? true : false
}
set {
self.state = newValue ? NSOnState : NSOffState
self.state = newValue ? .on : .off
}
}
}
@ -67,11 +67,11 @@ extension NSMenuItem {
var boolState: Bool {
get {
return self.state == NSOnState ? true : false
return self.state == .on ? true : false
}
set {
self.state = newValue ? NSOnState : NSOffState
self.state = newValue ? .on : .off
}
}
}
@ -102,17 +102,17 @@ extension NSAttributedString {
}
static func infoLabel(markdown: String) -> NSAttributedString {
let size = NSFont.smallSystemFontSize()
let size = NSFont.smallSystemFontSize
let document = CMDocument(data: markdown.data(using: .utf8), options: .normalize)
let attrs = CMTextAttributes()
attrs?.textAttributes = [
NSFontAttributeName: NSFont.systemFont(ofSize: size),
NSForegroundColorAttributeName: NSColor.gray,
NSAttributedStringKey.font: NSFont.systemFont(ofSize: size),
NSAttributedStringKey.foregroundColor: NSColor.gray,
]
attrs?.inlineCodeAttributes = [
NSFontAttributeName: NSFont.userFixedPitchFont(ofSize: size)!,
NSForegroundColorAttributeName: NSColor.gray,
NSAttributedStringKey.font: NSFont.userFixedPitchFont(ofSize: size)!,
NSAttributedStringKey.foregroundColor: NSColor.gray,
]
let renderer = CMAttributedStringRenderer(document: document, attributes: attrs)
@ -138,7 +138,7 @@ extension NSView {
self.removeConstraints(self.constraints)
}
var isFirstResponder: Bool {
@objc var isFirstResponder: Bool {
return self.window?.firstResponder == self
}
@ -152,7 +152,7 @@ extension NSTableView {
static func standardTableView() -> NSTableView {
let tableView = NSTableView(frame: CGRect.zero)
let column = NSTableColumn(identifier: "name")
let column = NSTableColumn(identifier: NSUserInterfaceItemIdentifier("name"))
column.isEditable = false
tableView.addTableColumn(column)
@ -183,7 +183,7 @@ extension NSOutlineView {
}
static func configure(toStandard outlineView: NSOutlineView) {
let column = NSTableColumn(identifier: "name")
let column = NSTableColumn(identifier: NSUserInterfaceItemIdentifier("name"))
column.resizingMask = .autoresizingMask
column.isEditable = false

View File

@ -74,8 +74,6 @@ class AppearancePref: PrefPane, NSComboBoxDelegate, NSControlTextEditingDelegate
fileprivate let emit: (Action) -> Void
fileprivate let disposeBag = DisposeBag()
fileprivate let fontManager = NSFontManager.shared()
fileprivate var font: NSFont
fileprivate var linespacing: CGFloat
fileprivate var usesLigatures: Bool
@ -135,7 +133,7 @@ class AppearancePref: PrefPane, NSComboBoxDelegate, NSControlTextEditingDelegate
// This takes approx. 0.8s - 1s on my machine... -_-
DispatchQueue.global(qos: .background).async {
fontPopup.addItems(withTitles: self.fontManager.availableFontNames(with: .fixedPitchFontMask)!)
fontPopup.addItems(withTitles: sharedFontManager.availableFontNames(with: .fixedPitchFontMask)!)
self.updateViews()
}
@ -162,8 +160,9 @@ class AppearancePref: PrefPane, NSComboBoxDelegate, NSControlTextEditingDelegate
previewArea.isHorizontallyResizable = true
previewArea.textContainer?.heightTracksTextView = false
previewArea.textContainer?.widthTracksTextView = false
previewArea.autoresizingMask = [.viewWidthSizable, .viewHeightSizable]
previewArea.textContainer?.containerSize = CGSize.init(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude)
previewArea.autoresizingMask = [.width, .height]
previewArea.textContainer?.containerSize = CGSize(width: CGFloat.greatestFiniteMagnitude,
height: CGFloat.greatestFiniteMagnitude)
previewArea.layoutManager?.replaceTextStorage(NSTextStorage(string: self.exampleText))
previewArea.isRichText = false
previewArea.turnOffLigatures(self)
@ -223,7 +222,7 @@ class AppearancePref: PrefPane, NSComboBoxDelegate, NSControlTextEditingDelegate
linespacingField.autoPinEdge(.top, to: .bottom, of: sizeCombo, withOffset: 18)
linespacingField.autoPinEdge(.left, to: .right, of: linespacingTitle, withOffset: 5)
linespacingField.autoSetDimension(.width, toSize: 60)
NotificationCenter.default.addObserver(forName: NSNotification.Name.NSControlTextDidEndEditing,
NotificationCenter.default.addObserver(forName: NSControl.textDidEndEditingNotification,
object: linespacingField,
queue: nil) { [unowned self] _ in
self.linespacingAction()
@ -259,19 +258,19 @@ class AppearancePref: PrefPane, NSComboBoxDelegate, NSControlTextEditingDelegate
// MARK: - Actions
extension AppearancePref {
func usesColorschemeAction(_ sender: NSButton) {
@objc func usesColorschemeAction(_ sender: NSButton) {
self.emit(.setUsesColorscheme(sender.boolState))
}
func fileIconAction(_ sender: NSButton) {
@objc func fileIconAction(_ sender: NSButton) {
self.emit(.setShowsFileIcon(sender.boolState))
}
func usesLigaturesAction(_ sender: NSButton) {
@objc func usesLigaturesAction(_ sender: NSButton) {
self.emit(.setUsesLigatures(sender.boolState))
}
func fontPopupAction(_ sender: NSPopUpButton) {
@objc func fontPopupAction(_ sender: NSPopUpButton) {
guard let selectedItem = self.fontPopup.selectedItem else {
return
}
@ -293,14 +292,14 @@ extension AppearancePref {
}
let newFontSize = self.cappedFontSize(Int(self.sizes[self.sizeCombo.indexOfSelectedItem]))
let newFont = self.fontManager.convert(self.font, toSize: newFontSize)
let newFont = sharedFontManager.convert(self.font, toSize: newFontSize)
self.emit(.setFont(newFont))
}
func sizeComboBoxDidEnter(_ sender: AnyObject!) {
@objc func sizeComboBoxDidEnter(_ sender: AnyObject!) {
let newFontSize = self.cappedFontSize(self.sizeCombo.integerValue)
let newFont = self.fontManager.convert(self.font, toSize: newFontSize)
let newFont = sharedFontManager.convert(self.font, toSize: newFontSize)
self.emit(.setFont(newFont))
}
@ -338,3 +337,5 @@ extension AppearancePref {
return cgfSize
}
}
fileprivate let sharedFontManager = NSFontManager.shared

View File

@ -22,7 +22,7 @@ class Application: NSApplication {
}
@IBAction override func showHelp(_: Any?) {
NSWorkspace.shared().open(URL(string: "https://github.com/qvacua/vimr/wiki")!)
NSWorkspace.shared.open(URL(string: "https://github.com/qvacua/vimr/wiki")!)
}
}

View File

@ -164,7 +164,7 @@ extension FileBrowser {
// MARK: - Actions
extension FileBrowser {
func showHiddenAction(_ sender: Any?) {
@objc func showHiddenAction(_ sender: Any?) {
guard let menuItem = sender as? NSMenuItem else {
return
}
@ -172,11 +172,11 @@ extension FileBrowser {
self.emit(UuidAction(uuid: self.uuid, action: .setShowHidden(!menuItem.boolState)))
}
func goToParentAction(_ sender: Any?) {
@objc func goToParentAction(_ sender: Any?) {
self.emit(UuidAction(uuid: self.uuid, action: .setAsWorkingDirectory(self.cwd.parent)))
}
func scrollToSourceAction(_ sender: Any?) {
@objc func scrollToSourceAction(_ sender: Any?) {
guard let url = self.currentBufferUrl else {
return
}
@ -184,7 +184,7 @@ extension FileBrowser {
self.fileView.select(url)
}
func refreshAction(_ sender: Any?) {
@objc func refreshAction(_ sender: Any?) {
self.emit(UuidAction(uuid: self.uuid, action: .refresh))
}
}

View File

@ -35,7 +35,7 @@ class FileOutlineView: NSOutlineView,
self.delegate = self
self.allowsEmptySelection = true
guard Bundle.main.loadNibNamed("FileBrowserMenu", owner: self, topLevelObjects: nil) else {
guard Bundle.main.loadNibNamed(NSNib.Name(rawValue: "FileBrowserMenu"), owner: self, topLevelObjects: nil) else {
NSLog("WARN: FileBrowserMenu.xib could not be loaded")
return
}
@ -341,7 +341,7 @@ extension FileOutlineView {
extension FileOutlineView {
func outlineView(_ outlineView: NSOutlineView, rowViewForItem item: Any) -> NSTableRowView? {
return self.make(withIdentifier: "file-row-view", owner: self) as? ThemedTableRow
return self.makeView(withIdentifier: NSUserInterfaceItemIdentifier("file-row-view"), owner: self) as? ThemedTableRow
?? ThemedTableRow(withIdentifier: "file-row-view", themedView: self)
}
@ -350,7 +350,7 @@ extension FileOutlineView {
return nil
}
let cell = (self.make(withIdentifier: "file-cell-view", owner: self) as? ThemedTableCell)?.reset()
let cell = (self.makeView(withIdentifier: NSUserInterfaceItemIdentifier("file-cell-view"), owner: self) as? ThemedTableCell)?.reset()
?? ThemedTableCell(withIdentifier: "file-cell-view")
cell.isDir = fileBrowserItem.isDir

View File

@ -5,7 +5,7 @@
import Cocoa
fileprivate let workspace = NSWorkspace.shared()
fileprivate let workspace = NSWorkspace.shared
fileprivate let iconsCache = NSCache<NSURL, NSImage>()
class FileUtils {

View File

@ -112,7 +112,7 @@ class GeneralPref: PrefPane, UiComponent, NSTextFieldDelegate {
let ignoreListTitle = self.titleTextField(title: "Files To Ignore:")
let ignoreField = self.ignoreField
NotificationCenter.default.addObserver(forName: NSNotification.Name.NSControlTextDidEndEditing,
NotificationCenter.default.addObserver(forName: NSControl.textDidEndEditingNotification,
object: ignoreField,
queue: nil) { [unowned self] _ in
self.ignorePatternsAction()
@ -204,13 +204,13 @@ class GeneralPref: PrefPane, UiComponent, NSTextFieldDelegate {
// MARK: - Actions
extension GeneralPref {
func copyCliTool(_ sender: NSButton) {
@objc func copyCliTool(_ sender: NSButton) {
let panel = NSOpenPanel()
panel.canChooseFiles = false
panel.canChooseDirectories = true
panel.beginSheetModal(for: self.window!) { result in
guard result == NSFileHandlingPanelOKButton else {
guard result == .OK else {
return
}
@ -234,15 +234,15 @@ extension GeneralPref {
}
}
func openUntitledWindowWhenLaunchingAction(_ sender: NSButton) {
@objc func openUntitledWindowWhenLaunchingAction(_ sender: NSButton) {
self.emit(.setOpenOnLaunch(self.openWhenLaunchingCheckbox.boolState))
}
func openUntitledWindowOnReactivationAction(_ sender: NSButton) {
@objc func openUntitledWindowOnReactivationAction(_ sender: NSButton) {
self.emit(.setOpenOnReactivation(self.openOnReactivationCheckbox.boolState))
}
func afterLastWindowAction(_ sender: NSPopUpButton) {
@objc func afterLastWindowAction(_ sender: NSPopUpButton) {
let index = sender.indexOfSelectedItem
guard index >= 0 && index <= 2 else {

View File

@ -99,12 +99,12 @@ class HtmlPreviewTool: NSView, UiComponent, WKNavigationDelegate {
fatalError("init(coder:) has not been implemented")
}
func selectHtmlFile(sender: Any?) {
@objc func selectHtmlFile(sender: Any?) {
let panel = NSOpenPanel()
panel.canChooseDirectories = false
panel.allowsMultipleSelection = false
panel.beginSheetModal(for: self.window!) { result in
guard result == NSFileHandlingPanelOKButton else {
guard result == .OK else {
return
}

View File

@ -20,7 +20,7 @@ class ImageAndTextTableCell: NSTableCellView {
static let widthWithoutText = CGFloat(2 + 16 + 4 + 2)
static func width(with text: String) -> CGFloat {
let attrStr = NSAttributedString(string: text, attributes: [NSFontAttributeName: ImageAndTextTableCell.font])
let attrStr = NSAttributedString(string: text, attributes: [NSAttributedStringKey.font: ImageAndTextTableCell.font])
return self.widthWithoutText + attrStr.size().width
}
@ -30,7 +30,7 @@ class ImageAndTextTableCell: NSTableCellView {
height: max(self._textField.intrinsicContentSize.height, 16))
}
override var backgroundStyle: NSBackgroundStyle {
override var backgroundStyle: NSView.BackgroundStyle {
didSet {
let attrStr = NSMutableAttributedString(attributedString: self.attributedText)
@ -45,10 +45,10 @@ class ImageAndTextTableCell: NSTableCellView {
switch self.backgroundStyle {
case .light:
attrStr.addAttribute(NSForegroundColorAttributeName, value: NSColor.black, range: nameRange)
attrStr.addAttribute(NSAttributedStringKey.foregroundColor, value: NSColor.black, range: nameRange)
case .dark:
attrStr.addAttribute(NSForegroundColorAttributeName, value: NSColor.white, range: nameRange)
attrStr.addAttribute(NSAttributedStringKey.foregroundColor, value: NSColor.white, range: nameRange)
default:
return
@ -91,7 +91,7 @@ class ImageAndTextTableCell: NSTableCellView {
init(withIdentifier identifier: String) {
super.init(frame: CGRect.zero)
self.identifier = identifier
self.identifier = NSUserInterfaceItemIdentifier(identifier)
self.textField = self._textField
self.imageView = self._imageView

View File

@ -17,7 +17,7 @@ extension MainWindow {
panel.canChooseDirectories = true
panel.allowsMultipleSelection = true
panel.beginSheetModal(for: self.window) { result in
guard result == NSFileHandlingPanelOKButton else {
guard result == .OK else {
return
}
@ -69,7 +69,7 @@ extension MainWindow {
fileprivate func savePanelSheet(action: @escaping (URL) -> Void) {
let panel = NSSavePanel()
panel.beginSheetModal(for: self.window) { result in
guard result == NSFileHandlingPanelOKButton else {
guard result == .OK else {
return
}

View File

@ -61,7 +61,7 @@ extension MainWindow {
}
func set(repUrl url: URL?, themed: Bool) {
if self.window.styleMask.contains(.fullScreen) || themed == false {
if self.window.styleMask.contains(NSWindow.StyleMask.fullScreen) || themed == false {
self.internalSetRepUrl(url)
return
}

View File

@ -132,7 +132,7 @@ extension MainWindow {
self.emit(self.uuidAction(for: .frameChanged(to: self.window.frame)))
}
func windowShouldClose(_: Any) -> Bool {
func windowShouldClose(_: NSWindow) -> Bool {
guard self.neoVimView.isCurrentBufferDirty() else {
self.neoVimView.closeCurrentTab()
return false
@ -146,7 +146,7 @@ extension MainWindow {
discardAndCloseButton.keyEquivalentModifierMask = .command
discardAndCloseButton.keyEquivalent = "d"
alert.beginSheetModal(for: self.window, completionHandler: { response in
if response == NSAlertSecondButtonReturn {
if response == .alertSecondButtonReturn {
self.neoVimView.closeCurrentTabWithoutSaving()
}
})

View File

@ -108,7 +108,7 @@ class MainWindow: NSObject,
self.cliPipePath = state.cliPipePath
self.windowController = NSWindowController(windowNibName: "MainWindow")
self.windowController = NSWindowController(windowNibName: NSNib.Name(rawValue: "MainWindow"))
let neoVimViewConfig = NeoVimView.Config(useInteractiveZsh: state.useInteractiveZsh,
cwd: state.cwd,
@ -322,8 +322,6 @@ class MainWindow: NSObject,
fileprivate var linespacing = NeoVimView.defaultLinespacing
fileprivate var usesLigatures = false
fileprivate let fontManager = NSFontManager.shared()
fileprivate var previewPosition = Marked(Position.beginning)
fileprivate var preview: PreviewTool?

View File

@ -14,7 +14,7 @@ class OpenQuicklyFileViewRow: NSTableRowView {
NSColor.clear.set()
}
self.rectsBeingDrawn().forEach { NSRectFillUsingOperation(NSIntersectionRect($0, dirtyRect), .sourceOver) }
self.rectsBeingDrawn().forEach { NSIntersectionRect($0, dirtyRect).fill(using: .sourceOver) }
}
fileprivate func rectsBeingDrawn() -> [CGRect] {

View File

@ -26,7 +26,7 @@ class OpenQuicklyWindow: NSObject,
required init(source: Observable<StateType>, emitter: ActionEmitter, state: StateType) {
self.emit = emitter.typedEmit()
self.windowController = NSWindowController(windowNibName: "OpenQuicklyWindow")
self.windowController = NSWindowController(windowNibName: NSNib.Name("OpenQuicklyWindow"))
self.searchStream = self.searchField.rx
.text.orEmpty
@ -155,7 +155,7 @@ class OpenQuicklyWindow: NSObject,
let progressIndicator = self.progressIndicator
progressIndicator.isIndeterminate = true
progressIndicator.isDisplayedWhenStopped = false
progressIndicator.style = .spinningStyle
progressIndicator.style = .spinning
progressIndicator.controlSize = .small
let fileView = self.fileView
@ -172,8 +172,8 @@ class OpenQuicklyWindow: NSObject,
cwdControl.backgroundColor = NSColor.clear
cwdControl.refusesFirstResponder = true
cwdControl.cell?.controlSize = .small
cwdControl.cell?.font = NSFont.systemFont(ofSize: NSFont.smallSystemFontSize())
cwdControl.setContentCompressionResistancePriority(NSLayoutPriorityDefaultLow, for: .horizontal)
cwdControl.cell?.font = NSFont.systemFont(ofSize: NSFont.smallSystemFontSize)
cwdControl.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
let countField = self.countField
countField.isEditable = false
@ -231,7 +231,7 @@ extension OpenQuicklyWindow {
@objc(tableView: viewForTableColumn:row:)
func tableView(_ tableView: NSTableView, viewFor _: NSTableColumn?, row: Int) -> NSView? {
let cachedCell = (tableView.make(withIdentifier: "file-view-row", owner: self) as? ImageAndTextTableCell)?.reset()
let cachedCell = (tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("file-view-row"), owner: self) as? ImageAndTextTableCell)?.reset()
let cell = cachedCell ?? ImageAndTextTableCell(withIdentifier: "file-view-row")
let url = self.fileViewItems[row].url
@ -257,7 +257,7 @@ extension OpenQuicklyWindow {
let rowText: NSMutableAttributedString
let pathInfo = truncatedPathComps.dropLast().reversed().joined(separator: " / ")
rowText = NSMutableAttributedString(string: "\(name)\(pathInfo)")
rowText.addAttribute(NSForegroundColorAttributeName,
rowText.addAttribute(NSAttributedStringKey.foregroundColor,
value: NSColor.lightGray,
range: NSRange(location: name.characters.count, length: pathInfo.characters.count + 3))
@ -315,7 +315,7 @@ extension OpenQuicklyWindow {
// MARK: - NSWindowDelegate
extension OpenQuicklyWindow {
func windowShouldClose(_: Any) -> Bool {
func windowShouldClose(_: NSWindow) -> Bool {
self.emit(.close)
return false

View File

@ -114,7 +114,7 @@ class OpenedFileList: NSView,
// MARK: - Actions
extension OpenedFileList {
func doubleClickAction(_ sender: Any?) {
@objc func doubleClickAction(_ sender: Any?) {
let clickedRow = self.bufferList.clickedRow
guard clickedRow >= 0 && clickedRow < self.buffers.count else {
return
@ -137,12 +137,12 @@ extension OpenedFileList {
extension OpenedFileList {
public func tableView(_ tableView: NSTableView, rowViewForRow row: Int) -> NSTableRowView? {
return tableView.make(withIdentifier: "buffer-row-view", owner: self) as? ThemedTableRow
return tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("buffer-row-view"), owner: self) as? ThemedTableRow
?? ThemedTableRow(withIdentifier: "buffer-row-view", themedView: self)
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
let cachedCell = (tableView.make(withIdentifier: "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 buffer = self.buffers[row]
@ -169,11 +169,11 @@ extension OpenedFileList {
let pathInfo = url.pathComponents.dropFirst().dropLast().reversed().joined(separator: " / ") + " /"
let rowText = NSMutableAttributedString(string: "\(name)\(pathInfo)")
rowText.addAttribute(NSForegroundColorAttributeName,
rowText.addAttribute(NSAttributedStringKey.foregroundColor,
value: self.theme.foreground,
range: NSRange(location: 0, length: name.characters.count))
rowText.addAttribute(NSForegroundColorAttributeName,
rowText.addAttribute(NSAttributedStringKey.foregroundColor,
value: self.theme.foreground.brightening(by: 1.15),
range: NSRange(location: name.characters.count, length: pathInfo.characters.count + 3))

View File

@ -83,10 +83,10 @@ class PrefUtils {
static func saneFont(_ fontName: String, fontSize: CGFloat) -> NSFont {
var editorFont = NSFont(name: fontName, size: fontSize) ?? NeoVimView.defaultFont
if !editorFont.isFixedPitch {
editorFont = NSFontManager.shared().convert(NeoVimView.defaultFont, toSize: editorFont.pointSize)
editorFont = NSFontManager.shared.convert(NeoVimView.defaultFont, toSize: editorFont.pointSize)
}
if editorFont.pointSize < NeoVimView.minFontSize || editorFont.pointSize > NeoVimView.maxFontSize {
editorFont = NSFontManager.shared().convert(editorFont, toSize: NeoVimView.defaultFont.pointSize)
editorFont = NSFontManager.shared.convert(editorFont, toSize: NeoVimView.defaultFont.pointSize)
}
return editorFont

View File

@ -23,7 +23,7 @@ class PrefWindow: NSObject,
self.emit = emitter.typedEmit()
self.openStatusMark = state.preferencesOpen.mark
self.windowController = NSWindowController(windowNibName: "PrefWindow")
self.windowController = NSWindowController(windowNibName: NSNib.Name("PrefWindow"))
self.panes = [
GeneralPref(source: source, emitter: emitter, state: state),
@ -122,7 +122,7 @@ class PrefWindow: NSObject,
// MARK: - NSWindowDelegate
extension PrefWindow {
func windowShouldClose(_: Any) -> Bool {
func windowShouldClose(_: NSWindow) -> Bool {
self.emit(.close)
return false

View File

@ -178,28 +178,28 @@ class PreviewTool: NSView, UiComponent, WKNavigationDelegate {
// MARK: - Actions
extension PreviewTool {
func refreshNowAction(_: Any?) {
@objc func refreshNowAction(_: Any?) {
self.emit(UuidAction(uuid: self.uuid, action: .refreshNow))
}
func forwardSearchAction(_: Any?) {
@objc func forwardSearchAction(_: Any?) {
self.forwardSearch(position: self.editorPosition.payload)
}
func reverseSearchAction(_: Any?) {
@objc func reverseSearchAction(_: Any?) {
self.previewPosition = Marked(self.previewPosition.payload) // set a new mark
self.emit(UuidAction(uuid: self.uuid, action: .reverseSearch(to: self.previewPosition)))
}
func automaticForwardSearchAction(_ sender: NSMenuItem) {
@objc func automaticForwardSearchAction(_ sender: NSMenuItem) {
self.emit(UuidAction(uuid: self.uuid, action: .setAutomaticForwardSearch(to: !sender.boolState)))
}
func automaticReverseSearchAction(_ sender: NSMenuItem) {
@objc func automaticReverseSearchAction(_ sender: NSMenuItem) {
self.emit(UuidAction(uuid: self.uuid, action: .setAutomaticReverseSearch(to: !sender.boolState)))
}
func refreshOnWriteAction(_ sender: NSMenuItem) {
@objc func refreshOnWriteAction(_ sender: NSMenuItem) {
self.emit(UuidAction(uuid: self.uuid, action: .setRefreshOnWrite(to: !sender.boolState)))
}
}

View File

@ -17,7 +17,7 @@ extension String {
}
let idx = self.characters.index(self.startIndex, offsetBy: prefix.characters.count)
return self[idx..<self.endIndex]
return String(self[idx..<self.endIndex])
}
}

View File

@ -19,7 +19,7 @@ class ThemedTableRow: NSTableRowView {
super.init(frame: .zero)
self.identifier = identifier
self.identifier = NSUserInterfaceItemIdentifier(identifier)
}
open override func drawBackground(in dirtyRect: NSRect) {
@ -32,7 +32,7 @@ class ThemedTableRow: NSTableRowView {
}
self.themedView?.theme.background.set()
NSRectFill(dirtyRect)
dirtyRect.fill()
}
override func drawSelection(in dirtyRect: NSRect) {
@ -41,7 +41,7 @@ class ThemedTableRow: NSTableRowView {
}
self.themedView?.theme.highlightBackground.set()
NSRectFill(dirtyRect)
dirtyRect.fill()
}
fileprivate weak var themedView: ThemedView?
@ -58,7 +58,7 @@ class ThemedTableCell: NSTableCellView {
static let widthWithoutText = CGFloat(2 + 16 + 4 + 2)
static func width(with text: String) -> CGFloat {
let attrStr = NSAttributedString(string: text, attributes: [NSFontAttributeName: ThemedTableCell.font])
let attrStr = NSAttributedString(string: text, attributes: [NSAttributedStringKey.font: ThemedTableCell.font])
return self.widthWithoutText + attrStr.size().width
}
@ -123,7 +123,7 @@ class ThemedTableCell: NSTableCellView {
init(withIdentifier identifier: String) {
super.init(frame: .zero)
self.identifier = identifier
self.identifier = NSUserInterfaceItemIdentifier(identifier)
self.textField = self._textField
self.imageView = self._imageView
@ -154,7 +154,7 @@ class ThemedTableCell: NSTableCellView {
textField.removeFromSuperview()
self.addSubview(textField)
textField.autoPinEdgesToSuperviewEdges(with: EdgeInsets(top: 2, left: 4, bottom: 2, right: 2))
textField.autoPinEdgesToSuperviewEdges(with: NSEdgeInsets(top: 2, left: 4, bottom: 2, right: 2))
}
fileprivate let _textField = NSTextField(forAutoLayout: ())

View File

@ -87,7 +87,7 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
override var intrinsicContentSize: CGSize {
if #available(macOS 10.11, *) {
return CGSize(width: NSViewNoIntrinsicMetric, height: InnerToolBar.height)
return CGSize(width: NSView.noIntrinsicMetric, height: InnerToolBar.height)
} else {
return CGSize(width: -1, height: InnerToolBar.height)
}
@ -128,13 +128,13 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
self.theme.separator.set()
let bottomSeparatorRect = self.bottomSeparatorRect()
if dirtyRect.intersects(bottomSeparatorRect) {
NSRectFill(bottomSeparatorRect)
bottomSeparatorRect.fill()
}
self.theme.toolbarForeground.set()
let innerSeparatorRect = self.innerSeparatorRect()
if dirtyRect.intersects(innerSeparatorRect) {
NSRectFill(innerSeparatorRect)
innerSeparatorRect.fill()
}
}
@ -258,23 +258,23 @@ class InnerToolBar: NSView, NSUserInterfaceValidations {
// MARK: - Actions
extension InnerToolBar {
func closeAction(_ sender: Any?) {
@objc func closeAction(_ sender: Any?) {
self.tool?.toggle()
}
func moveToTopAction(_ sender: Any?) {
@objc func moveToTopAction(_ sender: Any?) {
self.move(to: .top)
}
func moveToRightAction(_ sender: Any?) {
@objc func moveToRightAction(_ sender: Any?) {
self.move(to: .right)
}
func moveToBottomAction(_ sender: Any?) {
@objc func moveToBottomAction(_ sender: Any?) {
self.move(to: .bottom)
}
func moveToLeftAction(_ sender: Any?) {
@objc func moveToLeftAction(_ sender: Any?) {
self.move(to: .left)
}

View File

@ -102,7 +102,7 @@ class Workspace: NSView, WorkspaceBarDelegate {
super.init(frame: .zero)
self.configureForAutoLayout()
self.register(forDraggedTypes: [WorkspaceToolButton.toolUti])
self.registerForDraggedTypes([NSPasteboard.PasteboardType(WorkspaceToolButton.toolUti)])
self.bars.values.forEach {
$0.workspace = self
$0.delegate = self
@ -161,7 +161,7 @@ extension Workspace {
self.endDrag()
}
override func draggingEnded(_ sender: NSDraggingInfo?) {
override func draggingEnded(_ sender: NSDraggingInfo) {
self.endDrag()
}
@ -290,7 +290,7 @@ extension Workspace {
leftBar.autoPinEdge(toSuperviewEdge: .left)
leftBar.autoPinEdge(.bottom, to: .top, of: bottomBar)
NSLayoutConstraint.autoSetPriority(NSLayoutPriorityDragThatCannotResizeWindow) {
NSLayoutConstraint.autoSetPriority(.dragThatCannotResizeWindow) {
topBar.dimensionConstraint = topBar.autoSetDimension(.height, toSize: 50)
rightBar.dimensionConstraint = rightBar.autoSetDimension(.width, toSize: 50)
bottomBar.dimensionConstraint = bottomBar.autoSetDimension(.height, toSize: 50)

View File

@ -38,7 +38,7 @@ fileprivate class ProxyBar: NSView {
super.init(frame: .zero)
self.configureForAutoLayout()
self.register(forDraggedTypes: [WorkspaceToolButton.toolUti])
self.registerForDraggedTypes([NSPasteboard.PasteboardType(WorkspaceToolButton.toolUti)])
self.wantsLayer = true
}
@ -249,7 +249,7 @@ extension ProxyBar {
fileprivate func isTool(atIndex idx: Int, beingDragged info: NSDraggingInfo) -> Bool {
let pasteboard = info.draggingPasteboard()
guard let uuid = pasteboard.string(forType: WorkspaceToolButton.toolUti) else {
guard let uuid = pasteboard.string(forType: NSPasteboard.PasteboardType(WorkspaceToolButton.toolUti)) else {
return false
}
@ -295,7 +295,7 @@ extension ProxyBar {
return .move
}
override func draggingEnded(_ sender: NSDraggingInfo?) {
override func draggingEnded(_ sender: NSDraggingInfo) {
self.endDrag()
}
@ -423,11 +423,11 @@ extension WorkspaceBar {
self.isMouseDownOngoing = true
self.delegate?.resizeWillStart(workspaceBar: self, tool: self.selectedTool)
self.dimensionConstraint.priority = NSLayoutPriorityDragThatCannotResizeWindow - 1
self.dimensionConstraint.priority = NSLayoutConstraint.Priority(NSLayoutConstraint.Priority.RawValue(Int(NSLayoutConstraint.Priority.dragThatCannotResizeWindow.rawValue) - 1))
var dragged = false
var curEvent = event
let nextEventMask: NSEventMask = [.leftMouseDragged, .leftMouseDown, .leftMouseUp]
let nextEventMask: NSEvent.EventTypeMask = [.leftMouseDragged, .leftMouseDown, .leftMouseUp]
while curEvent.type != .leftMouseUp {
let nextEvent = NSApp.nextEvent(matching: nextEventMask,
@ -459,7 +459,7 @@ extension WorkspaceBar {
dragged = true
}
self.dimensionConstraint.priority = NSLayoutPriorityDragThatCannotResizeWindow
self.dimensionConstraint.priority = .dragThatCannotResizeWindow
self.isMouseDownOngoing = false
self.delegate?.resizeDidEnd(workspaceBar: self, tool: self.selectedTool)
}
@ -471,9 +471,9 @@ extension WorkspaceBar {
switch self.location {
case .top, .bottom:
self.addCursorRect(self.resizeRect(), cursor: NSCursor.resizeUpDown())
self.addCursorRect(self.resizeRect(), cursor: .resizeUpDown)
case .right, .left:
self.addCursorRect(self.resizeRect(), cursor: NSCursor.resizeLeftRight())
self.addCursorRect(self.resizeRect(), cursor: .resizeLeftRight)
}
}
@ -482,7 +482,7 @@ extension WorkspaceBar {
let innerLineRect = self.innerSeparatorRect()
if dirtyRect.intersects(innerLineRect) {
NSRectFill(innerLineRect)
innerLineRect.fill()
}
}
@ -491,7 +491,7 @@ extension WorkspaceBar {
let outerLineRect = self.outerSeparatorRect()
if dirtyRect.intersects(outerLineRect) {
NSRectFill(outerLineRect)
outerLineRect.fill()
}
}

View File

@ -57,13 +57,13 @@ class WorkspaceToolButton: NSView, NSDraggingSource {
init(title: String) {
self.title = NSMutableAttributedString(string: title, attributes: [
NSFontAttributeName: NSFont.systemFont(ofSize: 11),
NSAttributedStringKey.font: NSFont.systemFont(ofSize: 11),
])
super.init(frame: .zero)
self.configureForAutoLayout()
self.title.addAttribute(NSForegroundColorAttributeName,
self.title.addAttribute(NSAttributedStringKey.foregroundColor,
value: self.theme.foreground,
range: NSRange(location: 0, length: self.title.length))
@ -77,7 +77,7 @@ class WorkspaceToolButton: NSView, NSDraggingSource {
self.dehighlight()
}
self.title.addAttribute(NSForegroundColorAttributeName,
self.title.addAttribute(NSAttributedStringKey.foregroundColor,
value: self.theme.foreground,
range: NSRange(location: 0, length: self.title.length))
@ -137,19 +137,19 @@ extension WorkspaceToolButton {
}
override func mouseDown(with event: NSEvent) {
guard let nextEvent = self.window!.nextEvent(matching: [NSLeftMouseUpMask, NSLeftMouseDraggedMask]) else {
guard let nextEvent = self.window!.nextEvent(matching: [.leftMouseUp, .leftMouseDragged]) else {
return
}
switch nextEvent.type {
case NSLeftMouseUp:
case .leftMouseUp:
self.tool?.toggle()
return
case NSLeftMouseDragged:
case .leftMouseDragged:
let pasteboardItem = NSPasteboardItem()
pasteboardItem.setString(self.tool!.uuid, forType: WorkspaceToolButton.toolUti)
pasteboardItem.setString(self.tool!.uuid, forType: NSPasteboard.PasteboardType(WorkspaceToolButton.toolUti))
let draggingItem = NSDraggingItem(pasteboardWriter: pasteboardItem)
draggingItem.setDraggingFrame(self.bounds, contents: self.snapshot())
@ -192,7 +192,7 @@ extension WorkspaceToolButton {
result.lockFocus()
self.theme.barButtonHighlight.set()
NSRectFill(rect)
rect.fill()
image.draw(in: rect)
result.unlockFocus()