1
1
mirror of https://github.com/qvacua/vimr.git synced 2024-11-28 19:47:41 +03:00

Pass through current buffer changed event to preview component

This commit is contained in:
Tae Won Ha 2016-12-20 01:03:37 +01:00
parent 069adb5c6e
commit 9b377c9d34
No known key found for this signature in database
GPG Key ID: E40743465B5B8B44
6 changed files with 32 additions and 11 deletions

View File

@ -1436,9 +1436,7 @@ extension NeoVimView {
}
if event == .BUFREADPOST || event == .BUFWRITEPOST {
if self.currentBuffer()?.handle == bufferHandle {
self.currentBufferChanged()
}
self.currentBufferChanged(bufferHandle)
}
}
@ -1455,9 +1453,17 @@ extension NeoVimView {
}
}
fileprivate func currentBufferChanged() {
fileprivate func currentBufferChanged(_ handle: Int) {
DispatchUtils.gui {
self.delegate?.currentBufferChanged()
guard let currentBuffer = self.currentBuffer() else {
return
}
guard currentBuffer.handle == handle else {
return
}
self.delegate?.currentBufferChanged(currentBuffer)
}
}

View File

@ -13,7 +13,7 @@ public protocol NeoVimViewDelegate: class {
func set(dirtyStatus: Bool)
func cwdChanged()
func bufferListChanged()
func currentBufferChanged()
func currentBufferChanged(_ currentBuffer: NeoVimBuffer)
func ipcBecameInvalid(reason: String)
}

View File

@ -1121,7 +1121,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if [ \"${CONFIGURATION}\" = \"Debug\" ]; then ]\n if [ -f \"SwiftNeoVim/NeoVimAutoCommandEvent.generated.h\" ]; then\n exit 0\n fi\nfi\n\nsed 's/^typedef enum auto_event/typedef NS_ENUM(NSUInteger, NeoVimAutoCommandEvent)/' <./neovim/build/include/auevents_enum.generated.h | sed 's/ event_T//' | sed 's/EVENT_/NeoVimAutoCommandEvent/' | sed 's/NUM_EVENTS/NumberOfAutoCommandEvents/' | sed -e '1s/^/@import Foundation;\\'$'\\n/' > SwiftNeoVim/NeoVimAutoCommandEvent.generated.h\n";
shellScript = "if [ \"${CONFIGURATION}\" = \"Debug\" ]; then\n if [ -f \"SwiftNeoVim/NeoVimAutoCommandEvent.generated.h\" ]; then\n exit 0\n fi\nfi\n\nsed 's/^typedef enum auto_event/typedef NS_ENUM(NSUInteger, NeoVimAutoCommandEvent)/' <./neovim/build/include/auevents_enum.generated.h | sed 's/ event_T//' | sed 's/EVENT_/NeoVimAutoCommandEvent/' | sed 's/NUM_EVENTS/NumberOfAutoCommandEvents/' | sed -e '1s/^/@import Foundation;\\'$'\\n/' > SwiftNeoVim/NeoVimAutoCommandEvent.generated.h\n";
};
4BBA71F11D319E0900E16612 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;

View File

@ -15,6 +15,8 @@ enum MainWindowAction {
case changeBufferList(mainWindow: MainWindowComponent, buffers: [NeoVimBuffer])
case changeFileBrowserSelection(mainWindow: MainWindowComponent, url: URL)
case close(mainWindow: MainWindowComponent, mainWindowPrefData: MainWindowPrefData)
case currentBufferChanged(mainWindow: MainWindowComponent, buffer: NeoVimBuffer)
}
struct MainWindowPrefData: StandardPrefData {
@ -516,8 +518,8 @@ extension MainWindowComponent {
self.publish(event: MainWindowAction.changeBufferList(mainWindow: self, buffers: buffers))
}
func currentBufferChanged() {
NSLog("current buffer changed!!!")
func currentBufferChanged(_ currentBuffer: NeoVimBuffer) {
self.publish(event: MainWindowAction.currentBufferChanged(mainWindow: self, buffer: currentBuffer))
}
func ipcBecameInvalid(reason: String) {

View File

@ -49,7 +49,7 @@ class MainWindowManager: StandardFlow {
case let .close(mainWindow, mainWindowPrefData):
self.close(mainWindow, prefData: mainWindowPrefData)
case .changeCwd, .changeBufferList, .changeFileBrowserSelection:
default:
break;
}
})

View File

@ -50,6 +50,19 @@ class PreviewComponent: ViewComponent {
}
override func subscription(source: Observable<Any>) -> Disposable {
return Disposables.create()
return source
.filter { $0 is MainWindowAction }
.map { $0 as! MainWindowAction }
.subscribe(onNext: { action in
switch action {
case let .currentBufferChanged(mainWindow, currentBuffer):
NSLog("\(currentBuffer)")
default:
return
}
})
}
}