     cmd = go.executable
     done = (exitcode, stdout, stderr, messages) =>
       console.log @name + ' - stdout: ' + stdout if stdout? and stdout.trim() isnt ''
-      messages = @mapMessages(editorView, stderr, cwd) if stderr? and stderr isnt ''
+      messages = @mapMessages(editorView, stderr, cwd, splitgopath) if stderr? and stderr isnt ''
       pattern = cwd + '/*' + output
       glob pattern, {mark: false, sync:true}, (er, files) ->
         for file in files

      callback(null, messages)
    @dispatch.executor.exec(cmd, cwd, env, done, args)

  mapMessages: (editorView, data, cwd) ->
    pattern = /^(.*?):(\d*?):((\d*?):)?\s((.*)?((\n\t.*)+)?)/img
    messages = []
    extract = (matchLine) ->
      return unless matchLine?
      file = null
      if matchLine[1]? and matchLine[1] isnt ''
        if matchLine[1].substring(0, 1) is '/' or matchLine[1].substring(1, 2) is ':\\'
          file = matchLine[1]
        else
          file = path.join(cwd, matchLine[1])

      message = switch
        when matchLine[4]?
          file: file
          line: matchLine[2]
          column: matchLine[4]
          msg: matchLine[5]
          type: 'error'
          source: 'syntaxcheck'
        else
          file: file
          line: matchLine[2]
          column: false
          msg: matchLine[5]
          type: 'error'
          source: 'syntaxcheck'
      messages.push message
    loop
      match = pattern.exec(data)
      extract(match)
      break unless match?
    @emit @name + '-messages', editorView, messages
    return messages

      @emit @name + '-complete', editorView, saving
      callback(null)
      return
    splitgopath = go.splitgopath()
    env = @dispatch.env()
    env['GOPATH'] = gopath
    cwd = path.dirname(buffer.getPath())
