diff --git a/SwiftNeoVim/NeoVimView.swift b/SwiftNeoVim/NeoVimView.swift index b2ac5753..e6c1fcd7 100644 --- a/SwiftNeoVim/NeoVimView.swift +++ b/SwiftNeoVim/NeoVimView.swift @@ -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) } } diff --git a/SwiftNeoVim/NeoVimViewDelegate.swift b/SwiftNeoVim/NeoVimViewDelegate.swift index f729ed5a..a54d9022 100644 --- a/SwiftNeoVim/NeoVimViewDelegate.swift +++ b/SwiftNeoVim/NeoVimViewDelegate.swift @@ -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) } diff --git a/VimR.xcodeproj/project.pbxproj b/VimR.xcodeproj/project.pbxproj index 8a1b4d48..6e9964f9 100644 --- a/VimR.xcodeproj/project.pbxproj +++ b/VimR.xcodeproj/project.pbxproj @@ -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; diff --git a/VimR/MainWindowComponent.swift b/VimR/MainWindowComponent.swift index 0f69a3e5..ca0fac4b 100644 --- a/VimR/MainWindowComponent.swift +++ b/VimR/MainWindowComponent.swift @@ -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) { diff --git a/VimR/MainWindowManager.swift b/VimR/MainWindowManager.swift index c4794d5c..cf9d7ad3 100644 --- a/VimR/MainWindowManager.swift +++ b/VimR/MainWindowManager.swift @@ -49,7 +49,7 @@ class MainWindowManager: StandardFlow { case let .close(mainWindow, mainWindowPrefData): self.close(mainWindow, prefData: mainWindowPrefData) - case .changeCwd, .changeBufferList, .changeFileBrowserSelection: + default: break; } }) diff --git a/VimR/PreviewComponent.swift b/VimR/PreviewComponent.swift index faeeb1dc..9d9cb6f3 100644 --- a/VimR/PreviewComponent.swift +++ b/VimR/PreviewComponent.swift @@ -50,6 +50,19 @@ class PreviewComponent: ViewComponent { } override func subscription(source: Observable) -> 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 + + } + }) } }