anchor.diff:    (flet ((render-functions ()
              (spinneret:with-html-string
                (:table
  -              (loop for key being the hash-keys of (functions macro-editor)
  -                    using (hash-value value)
  +              (loop for function in (functions macro-editor)
  +                    for index from 0
                       collect (:tr (:td (:button :class "button"
                                                  :onclick (ps:ps (nyxt/ps:lisp-eval
                                                                   `(nyxt/macro-edit-mode::remove-function
                                                                     (current-mode 'macro-edit-mode)
  -                                                                  ,key)))
  +                                                                  ,index)))
                                                  "✕"))
                                    (:td (:button :class "button"
                                                  :onclick (ps:ps (nyxt/ps:lisp-eval
                                                                   `(nyxt/macro-edit-mode::command-help
                                                                     (current-mode 'macro-edit-mode)
  -                                                                  ,key)))
  +                                                                  ,index)))
                                                  "🛈"))
  -                                 (:td (symbol-name (name value)))))))))
  +                                 (:td (symbol-name (name function)))))))))
       (ffi-buffer-evaluate-javascript-async
        (buffer macro-editor)
        (ps:ps
  
positive.code:   (let ((name (intern (name macro-editor)))
          (commands (mapcar
                     (lambda (command) `(,(name command)))
                     (alexandria:hash-table-values (functions macro-editor)))))
      `(define-command-global ,name () "User generated macro form" ,@commands)))
  
  (define-command add-command (&optional (macro-editor (current-mode 'macro-edit-mode)))
    "Add a command to the macro."
  
negative.code:              (ps:lisp
                (render-functions)))))))
  
  (defmethod command-help ((macro-editor macro-edit-mode) command-index)
    (nyxt::describe-command :command (name (nth command-index (functions macro-editor)))))
  
  (defmethod add-function ((macro-editor macro-edit-mode) command)
    (alex:appendf (functions macro-editor)
                  (list command))
    (render-functions macro-editor))
  
  (defun delete-nth (n list)
    (nconc (subseq list 0 n) (nthcdr (1+ n) list)))
  
  (defmethod remove-function ((macro-editor macro-edit-mode) command-index)
    (setf (functions macro-editor) (delete-nth command-index (functions macro-editor)))
    (render-functions macro-editor))
  
  (defmethod name ((macro-editor macro-edit-mode))
  