anchor.diff:         ,(documentation function-symbol 'function)
          (,function-symbol (first arg-list)))))
   
  -(export-always 'define-command)
  -(defmacro define-command (name (&rest arglist) &body body)
  +(defmacro %define-command (name (&key deprecated-p
  +                                   pre-form
  +                                   global-p)
  +                           (&rest arglist) &body body)
     "Define new command NAME.
   `define-command' has a syntax similar to `defun'.
   ARGLIST must be a list of optional arguments or key arguments.
  
positive.code:                      (hooks:run-hook ,after-hook)))
                 (nyxt-condition (c)
                   (format t "~s" c)))))
           ;; Overwrite previous command:
           (setf *command-list* (delete ',name *command-list* :key #'name))
           (push (make-instance 'command
                                :name ',name
                                :docstring ,documentation
                                :fn (symbol-function ',name)
                                :sexp '(define-command (,@arglist) ,@body))
                 *command-list*)))))
  
  (export-always 'define-command-global)
  (defmacro define-command-global (name (&rest arglist) &body body)
  
negative.code:            (defun ,name ,arglist
               ,@(sera:unsplice documentation)
               ,@declares
               ,pre-form
               (handler-case
                   (progn
                     (hooks:run-hook ,before-hook)
  