 functions in `ycmd-file-parse-result-hook'.
 "
   (when (and ycmd-mode (not (ycmd-parsing-in-progress-p)))
-    (let ((content (cons '("event_name" . "FileReadyToParse")
-                         (ycmd--standard-content)))
-          (buff (current-buffer)))
+    (let* ((buff (current-buffer))
+           (content (cons '("event_name" . "FileReadyToParse")
+                          (ycmd--standard-content-with-extras buff nil t))))
 
       ;; Record that the buffer is being parsed
       (ycmd--report-status 'parsing)

        (message "Ycmd completion unavailable while parsing is in progress."))

      (when ycmd-mode
        (let ((content (append (ycmd--standard-content)
                               (when ycmd-force-semantic-completion
                                 '(("force_semantic" . "true"))))))
          (ycmd--request
           "/completions"
           content
           :parser 'json-read)))))

(defun ycmd--handle-exception (results &optional default-handler)
  (cond ((string-equal (assoc-default 'TYPE (assoc-default 'exception results))

             (if force "enabled" "disabled"))
    (setq ycmd-force-semantic-completion force)))

(defun ycmd--string-list-p (obj)
  "Return t if OBJ is a list of strings."
  (and (listp obj) (-all? #'stringp obj)))

(defun ycmd--locate-default-tags-file (buffer)
  "Look up directory hierarchy for first found tags file for BUFFER."
  (let* ((directory (locate-dominating-file
                     (file-name-directory (buffer-file-name buffer))
                     (lambda (path)
                       (directory-files path t "^\\(TAGS\\|tags\\)"))))
         (tags-file (and directory
                         (or (and (file-exists-p (expand-file-name "TAGS" directory))
                                  (expand-file-name "TAGS" directory))
                             (and (file-exists-p (expand-file-name "tags" directory))
                                  (expand-file-name "tags" directory))))))
    tags-file))

(defun ycmd--get-tag-files (buffer)
  "Get tag files list for current BUFFER or nil."
  (-when-let (tag-files (cond ((eq ycmd-tag-files 'etags)
                               (or (and tags-file-name (list tags-file-name))
                                   tags-table-list))
                              ((eq ycmd-tag-files 'auto)
                               (list (ycmd--locate-default-tags-file buffer)))
                              ((stringp ycmd-tag-files)
                               (list ycmd-tag-files))
                              ((ycmd--string-list-p ycmd-tag-files)
                               ycmd-tag-files)))
    (mapcar 'expand-file-name tag-files)))

(defun ycmd-get-completions (buffer pos)
  "Get completions for position POS in BUFFER from the ycmd server.

