     ':(?<line>\\d+):.+: .*((?<error>error)|(?<warning>warning)): (?<message>.*)'
 
     if atom.inDevMode()
-      console.log 'is node executable: ' + @isNodeExecutable
+      console.log 'linter-clang: is node executable: ' + @isNodeExecutable
 
     # use BufferedNodeProcess if the linter is node executable
     if @isNodeExecutable


  # A string, list, tuple or callable that returns a string, list or tuple,
  # containing the command line (with arguments) used to lint.
  cmd: '-fsyntax-only -fno-caret-diagnostics -fexceptions'
  isCpp: false
  clang: null

  executablePath: null



    stdout = (output) =>
      if atom.inDevMode()
        console.log 'clang: stdout', output
      if @errorStream == 'stdout'
        @processMessage(output, callback)

    stderr = (output) =>
      if atom.inDevMode()
        console.warn 'clang: stderr', output
      if @errorStream == 'stderr'
        @processMessage(output, callback)

    args.push @fileName
    
    if atom.inDevMode()
      console.log "clang: command = #{command}, args = #{args}, options = #{options}"

    new Process({command, args, options, stdout, stderr})

    # restore cmd
    # @cmd = oldCmd

  constructor: (editor) ->
    @editor = editor

    if editor.getGrammar().name == 'C++'
      @language = 'c++'
      @flag = '-std=c++11'
      @isCpp = true
    if editor.getGrammar().name == 'Objective-C++'
      @language = 'objective-c++'
      @flag = ''
      @isCpp = true
    if editor.getGrammar().name == 'C'
      @language = 'c'
      @flag = ''
      @isCpp = false
    if editor.getGrammar().name == 'Objective-C'
      @language = 'objective-c'
      @flag = ''
      @isCpp = false

    super(editor)
