   "Whether to use always semantic completion."
   :group 'ycmd
   :type 'boolean)
+
+(defcustom ycmd-tag-files nil
+  "Whether to collect identifiers from tags file.
+
+nil
+    Do not collect identifiers from tag files.
+
+`etags'
+     Use standard tag table files from `etags'.
+    `tags-file-name' or `tags-table-list'.
+
+`auto'
+    Look up directory hierarchy for first found tags file with
+    default names 'tags' or 'TAGS'.
+
+string
+    A tags file name.
+
+list
+    A list of tag file names."
+  :group 'ycmd
+  :type '(choice (const :tag "Don't use tag file." nil)
+                 (const :tag "Use `etags' tags table if set" etags)
+                 (const :tag "Locate tags file automatically" auto)
+                 (string :tag "Tag file name")
+                 (repeat :tag "List of tag files"
+                         (string :tag "Tag file name")))
+  :safe (lambda (obj)
+          (or (symbolp obj)
+              (stringp obj)
+              (ycmd--string-list-p obj))))
 
 (defcustom ycmd-file-type-map
   '((c++-mode . ("cpp"))

        ("line_num" . ,line-num)
        ("column_num" . ,column-num)))))

(defvar ycmd--log-enabled nil
  "Whether http content should be logged. This is useful for
  debugging.")

      (global_ycm_extra_conf . ,global-config)
      (extra_conf_globlist . ,extra-conf-whitelist)
      (hmac_secret . ,hmac-secret)
      (collect_identifiers_from_tags_files . ,(if ycmd-tag-files 1 0))
      (filetype_specific_completion_to_disable (gitcommit . 1))
      (collect_identifiers_from_comments_and_strings . 0)
      (min_num_of_chars_for_completion . 2)
