           Messages = Messages.concat(Result)
         else
           Messages.push Result
-      @Messages = Messages
+      if onChange
+        @MessagesFly = Messages
+      else
+        @MessagesRegular = Messages
+      @Messages = @MessagesFly.concat(@MessagesRegular)
       @render()
     , =>
       console.error arguments
-      @InProgress = false
+      if onChange
+        @InProgressFly = false
+      else
+        @InProgress = false
   render:->
     if not @Messages.length
       @ViewPanel.hide() if @ViewPanel.isVisible()


class PlusTrace
  constructor:(@Message, @File, @Position)->
class PlusError
  constructor:(@Message, @File, @Position, @Trace)->
class PlusWarning
  constructor:(@Message, @File, @Position, @Trace)->

class LinterPlus
  Subscriptions: null
  SubLintOnFly: null
  InProgress: false
  LintOnFly: true
  View: null
  ViewPanel: null
  Messages:[]
  Linters: []
  constructor:->
    @View = new (require './view')(this)

    Scopes = ActiveEditor.scopeDescriptorForBufferPosition(ActiveEditor.getCursorBufferPosition()).scopes
    Promises = []
    @Linters.forEach (Linter)->
      return if (onChange and not Linter.lintOnFly) or onChange
      Matching = Scopes.filter (Entry)-> Linter.scopes.indexOf(Entry) isnt -1
      return unless Matching.length
      RetVal = Linter.lint(ActiveEditor, Buffer, {Error: PlusError, Warning: PlusWarning, Trace: PlusTrace}, onChange)
