.emacs-my
changeset 1449 61455bf4fb87
parent 1448 6e3c4ea65439
child 1450 44a6e8153899
equal deleted inserted replaced
1448:6e3c4ea65439 1449:61455bf4fb87
  3164         (insert (my-html-charref-from-string (delete-and-extract-region begin end))))
  3164         (insert (my-html-charref-from-string (delete-and-extract-region begin end))))
  3165     (my-html-charref-from-string (buffer-substring begin end))
  3165     (my-html-charref-from-string (buffer-substring begin end))
  3166     ))
  3166     ))
  3167 
  3167 
  3168 (defun my-html-charref-to-string (html)
  3168 (defun my-html-charref-to-string (html)
       
  3169   "Return string with replaced decimal/hex and string charrefs by
       
  3170 correcponding UTF-8 symbol."
  3169   (let (str)
  3171   (let (str)
  3170     (with-temp-buffer
  3172     (with-temp-buffer
  3171       (insert html)
  3173       (insert html)
  3172       (goto-char (point-min))
  3174       (goto-char (point-min))
  3173       (while (search-forward-regexp "&\\(?:#\\([[:digit:]]+\\)\\|\\(lt\\|gt\\|amp\\)\\);" nil t)
  3175       (while (search-forward-regexp "&\\(?:#\\([[:digit:]]+\\)\\|#x\\([[:xdigit:]]+\\)\\|\\(lt\\|gt\\|amp\\|quot\\)\\);" nil t)
  3174         (setq str (or (match-string 1) (match-string 2)))
  3176         (setq str (or (match-string 1) (match-string 2) (match-string 3)))
  3175         (cond
  3177         (cond
  3176          ((equal str "lt")
  3178          ((match-string 1)
  3177           (replace-match "<" t t))
  3179           (when (> (string-to-number str 10) 0)
  3178          ((equal str "gt")
  3180             (replace-match (string (string-to-number str 10)) t t)))
  3179           (replace-match ">" t t))
  3181          ((match-string 2)
  3180          ((equal str "amp")
  3182           (when (> (string-to-number str 16) 0)
  3181           (replace-match "&" t t))
  3183             (replace-match (string (string-to-number str 16)) t t)))
  3182          ((> (string-to-number str) 0)
  3184          (t
  3183           (replace-match (string (string-to-number str 10)) t t))))
  3185           (cond
       
  3186            ((equal str "lt")
       
  3187             (replace-match "<" t t))
       
  3188            ((equal str "gt")
       
  3189             (replace-match ">" t t))
       
  3190            ((equal str "quot")
       
  3191             (replace-match "\"" t t))
       
  3192            ((equal str "amp")
       
  3193             (replace-match "&" t t)))) ))
  3184       (buffer-string))))
  3194       (buffer-string))))
  3185 
  3195 
  3186 (defun my-html-charref-unescape-region (begin end &optional prefix)
  3196 (defun my-html-charref-unescape-region (begin end &optional prefix)
  3187   (interactive "r\nP")
  3197   (interactive "r\nP")
  3188   (if prefix
  3198   (if prefix