anchor.diff:  (in-package :next)
   
   (defparen add-link-hints
  -  (ps:defun qsa (context selector)
  +  (defun qsa (context selector)
       "Alias of document.querySelectorAll"
       (ps:chain context (query-selector-all selector)))
  -  (ps:defun remove-if-not (predicate sequence)
  +  (defun remove-if-not (predicate sequence)
       "Small reimplementation of remove-if"
  -    (ps:loop for el in sequence
  +    (loop for el in sequence
   	     when (predicate el)
   	     collect el))
  -  (ps:defun code-char (n)
  +  (defun code-char (n)
       "Alias of String.fromCharCode"
       (ps:chain -string (from-char-code n)))
  -  (ps:defun is-in-viewport (el)
  +  (defun is-in-viewport (el)
       "Finds out if an element is in the viewport"
       (ps:let ((rect (ps:chain el (get-bounding-client-rect))))
         (and
  
positive.code:   (interface:web-view-execute (view *active-buffer*) add-link-hints))
  
  (defparen remove-link-hints
    (ps:defun qsa (context selector)
      "Alias of document.querySelectorAll"
      (ps:chain context (query-selector-all selector)))
    (ps:defun hints-remove-all ()
      "Removes all the links"
      (ps:dolist (el (qsa document ".lispkit-link-hints"))
        (ps:chain el (remove))))
    (hints-remove-all))
  
  
negative.code:       (setf (ps:@ el style top) (+ (ps:@ position top) "px"))
        (setf (ps:@ el text-content) hint)
        el))
    (defun hint-add (link hint)
      "Adds a hint on a single link"
      (ps:let ((hint-element (hint-create-element link hint)))
        (ps:chain document body (append-child hint-element))
        hint-element))
    (defun hints-add (links)
      "Adds hints on links"
      (ps:let* ((links-length (length links))
  	   (hints (hints-generate links-length)))
        (loop for i from 0 to (- links-length 1)
  	 collect (ps:create :link (elt links i) :hint (hint-add (elt links i) (elt hints i))))))
    (defun hints-determine-chars-length (length)
      "Finds out how many chars long the hints must be"
      (ps:let ((i 1))
        ;; 26 chars in alphabet
        (loop while (> length (expt 26 i))
  	 do (incf i))
        i))
    (defun hints-generate (length)
      "Generates hints that will appear on the links"
      (strings-generate length (hints-determine-chars-length length)))
    (defun links-find (window document)
      "Finds all the links within the viewport"
      (remove-if-not #'is-in-viewport (qsa document "a")))
    (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))))
    (defun string-generate (n)
      "Generates a string from a number"
      (if (>= n 0)
  	(+ (string-generate (floor (- (/ n 26) 1)))
  