                 (contextstr (match-string 6 line)))
             (put-text-property 0 1 'contextstr contextstr completion)
             (put-text-property 0 1 'matchtype matchtype completion)
+            (put-text-property 0 1 'fname fname completion)
+            (put-text-property 0 1 'linenum linenum completion)
             (push completion racer-completion-results))))
       racer-completion-results)))
 

      (delete-file racer-tmp-file-name)
      (when (string-match "^PREFIX \\(.+\\),\\(.+\\),\\(.*\\)$" (nth 0 lines))
        (match-string 3 (nth 0 lines))))))

(defun racer--complete-at-point-fn ()
  "Run the racer complete command and process the results."

              (point)
              racer-completion-results)))))

(defun racer--company-annotation (arg)
  "Gets and formats annotation data from the arg match."
  (let ((meta (get-text-property 0 'contextstr arg)))
    (format "%10s : %s"
            (or (save-match-data
                  (and (string-match "\\(.+\\) {" meta)
                       (match-string 1 meta)))
                meta)
            (get-text-property 0 'matchtype arg))))

(defun racer-company-complete (command &optional arg &rest ignored)
  "Run the racer command for `COMMAND' and format using `ARG'.
`IGNORED' is unused."
  (interactive)
  (cl-case command
      (interactive (company-begin-backend 'racer-company-complete))
      (prefix (and (derived-mode-p 'rust-mode)
                   (not (company-in-string-or-comment))
                   (or (racer--company-prefix) 'stop)))
      (candidates (racer--candidates))
      (duplicates t)
      (location (racer--company-location arg))
      (sorted nil)
      (annotation (racer--company-annotation arg))
      (meta (format "%s" (get-text-property 0 'contextstr arg)))))

;;;###autoload
(defun racer-complete-or-indent ()
