 
 Each function will be called with with the results returned from
 ycmd when it parses a file in response to
-/event_notification. See `ycmd--with-destructured-parse-result'
+/event_notification.  See `ycmd--with-destructured-parse-result'
 for some insight into what this structure is shaped like."
   :group 'ycmd
   :type 'hook

    (ycmd-notify-file-ready-to-parse)))

(defun ycmd--handle-runtime-exception (results)
  "Handle exeption for file already being parsed runtime error."
  (let* ((exception (assoc-default 'exception results))
         (exception-type (assoc-default 'TYPE exception))
         (message (assoc-default 'message results)))

       :parser 'json-read))))

(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--col-line-to-position (col line &optional buffer)
  "Convert COL and LINE into a position in the current buffer.

COL and LINE are expected to be as returned from ycmd, e.g. from
notify-file-ready.  Apparently COL can be 0 sometimes, in which
case this function returns 0.
Use BUFFER if non-nil or `current-buffer'."
  (let ((buff (or buffer (current-buffer))))
    (if (= col 0)
        0
      (with-current-buffer buff
