       return unless event.newBufferPosition.isEqual([row,column])
       @showMessage range,message
 
+  getTypeCallback: (callback) ->
+    @process.getType @getText(), @getRange(), callback
+
   getType: ->
-    @process.getType @getText(), @getRange(), @showMessage
+    @getTypeCallback @showMessage
 
   insertType: ->
     symbol = @getSymbol()

    else
      klass = 'haskell-ghc-mod-error'
    @editor.decorateMarker marker,
      type: 'gutter'
      class: klass
    @editor.decorateMarker marker,
      type: 'highlight'


  getSymbolRange: ->
    range = @getRange()
    if range.isEmpty()
      range = @editor.getLastCursor().getCurrentWordBufferRange()
    return range

  getSymbol: (range) ->
