 ;;
 
 ;; Dummy dispatchers (no-op because they're handled especially)
-(def-dispatcher! run
+(dispatcher! run :noop
   "Run Doom Emacs from bin/doom's parent directory.
 
 All arguments are passed on to Emacs (except for -p and -e).

          (apply #'doom--dispatch-help command desc (cdr args))
        (funcall body (cdr args))))))

;; FIXME Clumsy way of registering commands, refactor!
(defmacro def-dispatcher! (command desc &rest body)
  "Define a dispatcher command. COMMAND is a symbol or a list of symbols
representing the aliases for this command. DESC is a string description. The
first line should be short (under 60 letters), as it will be displayed for
bin/doom help.

BODY will be run when this dispatcher is called."
  (declare (doc-string 2))
  (let* ((command (doom-enlist command))
         (cmd (car command))
         (aliases (cdr command)))

          `(dolist (alias ',aliases)
             (map-put doom--dispatch-alias-alist alias ',cmd)))
       (map-put doom--dispatch-command-alist
                ',cmd (list :desc ,docstring
                            ;; FIXME Implicit args var; ew
                            :body (lambda (args) ,form))))))


;;
