         (candidates '()))
     (dolist (candidate completion-list (nreverse candidates))
       (let* ((detailed-info (assoc-default 'detailed_info candidate))
-             (function-signatures (and (stringp detailed-info)
+             (function-signatures (and (company-ycmd--extended-features-p)
+                                        company-ycmd-insert-arguments
+                                       (stringp detailed-info)
                                        (s-split "\n" detailed-info t))))
         (when (or company-ycmd-enable-fuzzy-matching
                   (company-ycmd--prefix-candidate-p candidate prefix))
-          (if (and company-ycmd-insert-arguments function-signatures)
+          (if function-signatures
               (dolist (meta function-signatures)
                 (push (company-ycmd--construct-candidate candidate meta)
                       candidates))

                 (company-ycmd--get-candidates cb prefix))))

(defun company-ycmd--post-completion (arg)
  (let ((params (company-ycmd--params arg)))
    (when (and company-ycmd-insert-arguments params)
      (insert params)
      (company-template-c-like-templatify
       (concat arg params)))))

(defun company-ycmd (command &optional arg &rest ignored)
  "The company-backend command handler for ycmd."

feature."
  :type 'boolean
  :group 'company-ycmd)

(defvar company-ycmd-extended-features-modes
  '(c++-mode c-mode)
  "Major modes which have extended features in `company-ycmd'.")

(defun company-ycmd--extended-features-p ()
  "Check whether to use extended features."
  (memq major-mode company-ycmd-extended-features-modes))

(defun company-ycmd--prefix-candidate-p (candidate prefix)
  "Return t if CANDIDATE string begins with PREFIX."
