anchor.diff:    (defun hints-add (links)
       "Adds hints on links"
       (ps:let* ((links-length (length links))
  -           (hints (hints-generate links-length)))
  +              (hints (hints-generate links-length)))
         (ps:chain -j-s-o-n
                   (stringify
                    (loop for i from 0 to (- links-length 1)
  -                    collect (list
  -                             (ps:@ (hint-add (elt links i) (elt hints i)) inner-text)
  -                             (ps:@ (elt links i) href)))))))
  +                       for is-input? = (string= (ps:@ (elt links i) tag-name) "INPUT")
  +                       collect (list
  +                                (ps:@ (hint-add (elt links i) (elt hints i)) inner-text)
  +                                (if is-input?
  +                                    (ps:@ (elt links i) id)
  +                                    (ps:@ (elt links i) href))
  +                                ;; TODO: Find more reliable way of passing types?
  +                                (if is-input?
  +                                    "input"
  +                                    "a")))))))
     (defun hints-determine-chars-length (length)
       "Finds out how many chars long the hints must be"
       (ps:let ((i 1))
  
positive.code:                                     :input-prompt ,prompt
                                      :cleanup-function #'remove-link-hints)))
       (let* ((link-hints (cl-json:decode-json-from-string links-json))
              (,symbol (cadr (assoc selected-anchor link-hints :test #'equalp))))
         (when ,symbol
           ,@body))))
  
  (define-command go-anchor ()
    "Show a set of link hints, and go to the user inputted one in the
  
negative.code:   (defun links-find (window document)
      "Finds all the links within the viewport"
      (remove-if-not #'is-in-viewport (qsa document "a")))
    (defun inputs-find (window document)
      "Finds all the input fields within the viewport"
      (remove-if-not #'is-in-viewport (qsa document "input")))
    (defun strings-generate (length chars-length)
      "Generates strings of specified length"
      (ps:let ((minimum (1+ (ps:chain -math (pow 26 (- chars-length 1))))))
        (loop for i from minimum to (+ minimum length)
           collect (string-generate i))))
    ;; TODO: It seems that duplicate hints are generated.
    ;; For instance, https://github.com/atlas-engineer/next may display 2 "AC" at the top.
    (defun string-generate (n)
      "Generates a string from a number"
      (if (>= n 0)
  