         @process.doLintBuffer(buffer, fast).then (res) ->
           setMessages res, ['lint']
 
-    @disposables.add upi.onDidSaveBuffer (buffer) ->
-      checkLint buffer, 'Save'
-
-    @disposables.add upi.onDidStopChanging (buffer) ->
-      checkLint buffer, 'Change', true
+    unless atom.config.get 'haskell-ghc-mod.useLinter'
+      @disposables.add upi.onDidSaveBuffer (buffer) ->
+        checkLint buffer, 'Save'
+
+      @disposables.add upi.onDidStopChanging (buffer) ->
+        checkLint buffer, 'Change', true
 
 
     @disposables.add @process.onBackendActive ->

          (m) -> m
      upi.setMessages messages.map(setHighlighter), types

    @disposables.add atom.commands.add 'atom-text-editor[data-grammar~="haskell"]',
      'haskell-ghc-mod:check-file': ({target}) =>
        editor = target.getModel()
        @process.doCheckBuffer(editor.getBuffer()).then (res) ->
          setMessages res, ['error', 'warning']
      'haskell-ghc-mod:lint-file': ({target}) =>
        editor = target.getModel()
        @process.doLintBuffer(editor.getBuffer()).then (res) ->
          setMessages res, ['lint']
      'haskell-ghc-mod:show-type': ({target, detail}) ->
        upi.showTooltip
          editor: target.getModel()

    @disposables.add @process.onBackendIdle ->
      upi.setStatus status: 'ready'

    unless atom.config.get 'haskell-ghc-mod.useLinter'
      upi.setMenu 'ghc-mod', [
        {label: 'Check', command: 'haskell-ghc-mod:check-file'}
        {label: 'Lint', command: 'haskell-ghc-mod:lint-file'}
      ]
    else
      upi.setMenu 'ghc-mod', [
        {label: 'Check', command: 'linter:lint'}
      ]

    upi.setMenu 'ghc-mod', [
      {label: 'Stop Backend', command: 'haskell-ghc-mod:shutdown-backend'}
    ]

