 	     (local-set-key "\t" 'racer--complete-or-indent)
 	     (local-set-key "\M-." 'racer-find-definition)
 	     (setq company-idle-delay nil)
-	     ) 
+	     )
 	  nil)
 
-
 (provide 'racer)
-
+;;; racer.el ends here

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

(defun racer--prefix () 
  (setq tmpfilename (concat (buffer-file-name) ".racertmp"))
  (racer--write-tmp-file tmpfilename)
  (setenv "RUST_SRC_PATH" rust-srcpath)
  (let ((lines (process-lines racer-cmd 
			      "prefix"
			      (number-to-string linenum)
			      (number-to-string col) 
			      tmpfilename)))
    (delete-file tmpfilename)
    (when (string-match "^PREFIX \\(.+\\),\\(.+\\),\\(.*\\)$" (nth 0 lines))
      (match-string 3 (nth 0 lines)))))


(defun racer--complete-at-point-fn ()
  (setq tmpfilename (concat (buffer-file-name) ".racertmp"))
  (racer--write-tmp-file tmpfilename)
  (setenv "RUST_SRC_PATH" rust-srcpath)
  (save-excursion
    (let ((lines (process-lines racer-cmd 
				"complete"
				(number-to-string linenum)
				(number-to-string col) 
				tmpfilename)))
      (delete-file tmpfilename)
      (dolist (line lines)
	(when (string-match "^MATCH \\([^,]+\\),\\(.+\\)$" line)
	  (let ((completion (match-string 1 line)))
	    (push completion completion-results)))
	
	(when (string-match "^PREFIX \\(.+\\),\\(.+\\),\\(.*\\)$" line)
	  (setq start (string-to-number (match-string 1 line)))
	  (setq end (string-to-number (match-string 2 line))))
	)
      )
    )
  ;(message "start %s end %s" start end)
  (list (- (point) (- end start)) (point) completion-results)
  )

(defun racer-company-complete (command &optional arg &rest ignored)
  (interactive)
  ;(message "PHIL racer-company-complete %s %s %s" command arg ignored)
  (when (looking-back "[a-zA-z1-9:.]")
    (case command
      (prefix (racer--prefix))
      (candidates (racer--candidates))
      (duplicates t)
      (sorted nil)
      (annotation 
       (progn
	 (format "%s %10s : %s"
		 (make-string (max 0 (- 20 (length arg))) ? )

	  (if (string/ends-with fname ".racertmp")
	      (find-file (substring fname 0 -9))
	    (find-file fname))
	  (forward-line (string-to-number linenum))
	  (forward-char (string-to-number charnum))
	  )))))

