     @disposables.add(@observeStopChanging())
     @disposables.add(@observeCursorMove())
 
+    if @provider.boundToEditor
+      @disposables.add @provider.editor.onDidDestroy(@destroy.bind(this))
+
     @disposables.add atom.workspace.onDidStopChangingActivePaneItem (item) =>
-      unless item is @editor
-        @rowMarker?.destroy()
-
-    if @provider.boundToEditor
-      @setSyncToEditor(@provider.editor)
-      @disposables.add @provider.editor.onDidDestroy(@destroy.bind(this))
+      @syncSubcriptions?.dispose()
+      return if item is @editor
+      @rowMarker?.destroy()
+
+      if isTextEditor(item) and @canSyncToEditor(item)
+        @syncToEditor(item)
+        @setSyncToEditor(item)
 
     @constructor.register(this)
     @disposables.add new Disposable =>
       @constructor.unregister(this)
+
+  canSyncToEditor: (editor) ->
+    filePath = editor.getPath()
+    if @provider.boundToEditor
+      @provider.editor.getPath() is filePath
+    else
+      @items.some (item) -> item.filePath is filePath
 
   start: ->
     activatePaneItemInAdjacentPane(@editor, split: settings.get('directionToOpen'))

  isActiveEditor
  getValidIndexForList
  setBufferRow
} = require './utils'
settings = require './settings'
Grammar = require './grammar'

    if @provider.boundToEditor
      items = _.reject(@items, (item) -> item.skip)
    else
      # Item must support filePath
      filePath = editor.getPath()
      items = @items.filter((item) -> not item.skip and (item.filePath is filePath))

