anchor.diff:    (run-hooks *xml-mode-hook*))
   
   (defun open-tag-p (string)
  -  (and (ppcre:scan "^<[^/].*?>$" string)
  -       t))
  +  (ppcre:register-groups-bind (tag-content)
  +      ("^<([^>]+)>$" string)
  +    (not (ppcre:scan "/\\s*$" tag-content))))
   
   (defun close-tag-p (string)
  -  (and (ppcre:scan "^</.*?>$" string)
  -       t))
  +  (ppcre:register-groups-bind (tag-content)
  +      ("^<([^>]+)>$" string)
  +    (and (ppcre:scan "^\\s*/" tag-content)
  +         t)))
   
   (defun xml-tags (string)
     (ppcre:all-matches-as-strings "<.*?>" string))
  
positive.code:                             (point-column q)))))
                 ;; After an XML tag
                 (#\>
                  (let ((self-closing (eql (character-at p -1) #\/)))
                    (move-backward-to-openning-bracket p)
                    (let ((level (count-tags-indent
                                  (points-to-string (line-start (copy-point p)) p)))
                          (close-tag (or self-closing
                                         (and (eql (character-at p) #\<)
                                              (eql (character-at p 1) #\/)))))
                      (line-start p)
                      (back-to-indentation p)
                      (+ (point-column p)
                         (* (if (= level 0)
                                (if close-tag 0 1)
                                (- level (if close-tag 1 0)))
                            tab-width)))))
                 (otherwise (point-column p)))
               ;; Beginning of buffer
               0))
  
negative.code:          (skip-chars-backward p (lambda (char)
                                    (not (or (eql char #\<)
                                             (eql char #\>)))))
           (if (character-at p -1)
               (case (character-at p -1)
                 ;; In the middle of XML tag
                 (#\< (with-point ((q p))
                        (skip-tag-name q)
                        (if (end-line-p q)
                            (+ (1- (point-column p))
                               (if (eql (character-at point) #\/)
                                   0
                                   tab-width))
  