   :type '(string)
   :group 'ycmd)
 
-;; TODO: Figure out the best default value for this.
-(defcustom ycmd-server-command '("python" "/path/to/ycmd/package/")
+(defcustom ycmd-server-command nil
   "The ycmd server program command.
 
-Note that the default value for this variable is intentionally
-incorrect.  You will almost certainly need to set it to match your
-system installation."
+The value is a list of arguments to run the ycmd server.
+Example value:
+
+\(set-variable 'ycmd-server-command (\"python\" \"/path/to/ycmd/package/\"))"
   :type '(repeat string)
   :group 'ycmd)
 


  (let ((hmac-secret (ycmd--generate-hmac-secret)))
    (ycmd--start-server hmac-secret)
    (setq ycmd--hmac-secret hmac-secret))

  (ycmd--start-keepalive-timer))

(defun ycmd-close ()
  "Shutdown any running ycmd server.


(defun ycmd--start-server (hmac-secret)
  "Start a new server using HMAC-SECRET as its hmac secret."
  (unless ycmd-server-command
    (user-error "Error: The variable `ycmd-server-command' is not set.  \
See the docstring of the variable for an example"))
  (let ((proc-buff (get-buffer-create ycmd--server-buffer-name)))
    (with-current-buffer proc-buff
      (buffer-disable-undo proc-buff)
      (erase-buffer)

      (let* ((options-file (ycmd--create-options-file hmac-secret))
             (args (apply 'list (concat "--options_file=" options-file)
                          ycmd-server-args))
             (server-program+args (append ycmd-server-command args))
             (proc (apply #'start-process ycmd--server-process-name proc-buff
                          server-program+args))
             (cont t)
