          (line-end-position))))))
 
 (defun doom--dispatch-help (&optional command desc &rest args)
-  "TODO"
+  "Display help documentation for a dispatcher command. If COMMAND and DESC are
+omitted, show all available commands, their aliases and brief descriptions."
   (if command
       (princ (doom--dispatch-format desc))
     (print! (bold "%-10s\t%s\t%s" "Command:" "Alias" "Description"))
-    (dolist (spec (sort doom-dispatch-command-alist
+    (dolist (spec (sort doom--dispatch-command-alist
                         (lambda (x y) (string-lessp (car x) (car y)))))
       (cl-destructuring-bind (command &key desc _body) spec
-        (let ((alias (car (rassq command doom-dispatch-alias-alist))))
+        (let ((aliases (cl-loop for (alias . cmd) in doom--dispatch-alias-alist
+                                if (eq cmd command)
+                                collect (symbol-name alias))))
           (print! "  %-10s\t%s\t%s"
-                  command (or alias "")
+                  command (if aliases (string-join aliases ",") "")
                   (doom--dispatch-format desc t)))))))
 
 (defun doom-dispatch (args)
-  "TODO"
+  "Invoke a dispatcher command and pass ARGS to it."
   (let ((help (equal (car args) "help")))
     (if help (pop args))
     (cl-destructuring-bind (command &key desc body)
         (let ((sym (intern (car args))))
-          (or (assq sym doom-dispatch-command-alist)
-              (assq (cdr (assq sym doom-dispatch-alias-alist)) doom-dispatch-command-alist)
+          (or (assq sym doom--dispatch-command-alist)
+              (assq (cdr (assq sym doom--dispatch-alias-alist)) doom--dispatch-command-alist)
               (error "Invalid command: %s" (car args))))
       (if help
           (apply #'doom--dispatch-help command desc (cdr args))

  2. Add or remove `package!' blocks to your config,
  3. Add or remove autoloaded functions in module autoloaded files.
  4. Update Doom outside of Doom (e.g. with git)"
  (doom-initialize)
  (let (reload-p)
    (when (let* ((doom--inhibit-reload t)
                 (autoremove-p (doom//packages-autoremove))
                 (install-p (doom//packages-install)))
            (or autoremove-p install-p))
      (doom//reload))
    (doom//byte-compile nil 'recompile)))


;;
;; Quality of Life Commands
;;

(defvar doom-remote "origin"
  "TODO")

(defun doom//upgrade ()
  "TODO"
  (declare (interactive-only t))
  (interactive)
  (let ((core-file (expand-file-name "init.el" doom-core-dir))
        (branch (vc-git--symbolic-ref core-file))

respectively."
  (doom//byte-compile args))

(def-dispatcher! (recompile rc)
  "Re-byte-compiles outdated *.elc files."
  (doom//byte-compile args 'recompile))

