       atom.workspace.open(URI, options).done (editor) =>
         editor.scrollToBufferPosition(point, center: true)
         editor.setCursorBufferPosition(point)
-        # @land direction
-        @emitter.emit 'did-jump-to-history', direction
+        @land direction
+
+  delayedUnLock: (ms) ->
+    clearTimeout @delayedUnLockTask
+    @delayedUnLockTask = delay ms, =>
+      @unLock()
 
   land: (direction) ->
-    @unLock()
+    # To keep locking while rapid Prev, Next jump.
+    # Without this, cursorPosition was saved in slite unlocked gap.
+    @delayedUnLock 300
+
     Flasher ?= require './flasher'
     Flasher.flash() if settings.get('flashOnLand')
     @history.dump direction

          # So we need lock state again here after some delay.
          return if @isLocked()

          # Ignore Rapid movement, dirty workaround for symbols-view's GoToView, GoBackView.
          unless newBufferPosition.isEqual @getPosition(editor)
            debug "Rapid movement ignore!"

    @subscriptions.add @observeTextEditors()
    @subscriptions.add @observeActivePaneItem()
    @subscriptions.add @observeOnWillDestroyPaneItem()

  deactivate: ->
    for editorID, disposables of @editorSubscriptions
      disposables.dispose()
    @delayedUnLockTask = null
    @editorSubscriptions = null
    @subscriptions.dispose()
    settings.dispose()
    @history?.destroy()
    @history = null

  # For better handling symbols-view.
  # -------------------------
