 
   mouseWheel: (e) =>
     return if @isClicked
-    {wheelDeltaX, wheelDeltaY} = e.originalEvent
-    if wheelDeltaX
-      @editorView.scrollLeft(@editorView.scrollLeft() - wheelDeltaX)
-    if wheelDeltaY
-      @editorView.scrollTop(@editorView.scrollTop() - wheelDeltaY)
-
-  scrollLeft: (left) =>
-    @miniScrollView.scrollLeft(left * @scaleX)
-
-  scrollTop: (top) =>
+
+    @editorView.updateScroll()
+
+  updateScroll: =>
     minimapHeight = @miniScrollView.outerHeight()
     scrollViewHeight = @scrollView.outerHeight()
     scrollViewOffset = @scrollView.offset().top

    top = Math.max(top, 0)
    top = Math.min(top, @miniScrollView.outerHeight() - miniOverLayerHeight)
    # @note: currently, no animation.
    @editorView.scrollTop(top)
    # Fix trigger `mousewheel` event.
    setTimeout =>
      @isClicked = false


    # current editor bind scrollTop event
    @editor.off 'scroll-top-changed.editor'
    @editor.on 'scroll-top-changed.editor', @updateScroll
    @editor.off 'scroll-left-changed.editor'
    @editor.on 'scroll-left-changed.editor', @updateScroll

  getActiveBuffer: ->
    @buffer = @editor?.getBuffer?()
