     (define-key map "gD" 'ycmd-goto-declaration)
     (define-key map "gm" 'ycmd-goto-implementation)
     (define-key map "gp" 'ycmd-goto-imprecise)
+    (define-key map "gr" 'ycmd-goto-references)
     (define-key map "s" 'ycmd-toggle-force-semantic-completion)
     (define-key map "v" 'ycmd-show-debug-info)
     (define-key map "d" 'ycmd-show-documentation)

  (interactive)
  (ycmd--goto "GoToImprecise"))

(defun ycmd--handle-goto-success (location)
  "Handle a successfull Go To response for LOCATION."
  (push-mark)
  (ring-insert find-tag-marker-ring (point-marker))
  (ycmd--goto-location location))

(defun ycmd--goto (type)
  "Implementation of GoTo according to the request TYPE."
  (ycmd--send-request type 'ycmd--handle-goto-success))

(defun ycmd--goto-location (location)
  "Move cursor to LOCATION.

LOCTION is a structure as returned from e.g. the various GoTo
commands."
  (find-file (assoc-default 'filepath location))
  (goto-char (ycmd--col-line-to-position
              (assoc-default 'column_num location)
              (assoc-default 'line_num location))))

(defun ycmd--goto-line (line)
  "Go to LINE."

      (deferred:nextc it
        (lambda (result)
          (when result
            (if (and (not (vectorp result))
                     (assoc-default 'exception result))
                (ycmd--handle-exception result)
              (when success-handler
                (funcall success-handler result)))))))))
