Function: decode-hz-region
decode-hz-region is an autoloaded, interactive and byte-compiled
function defined in china-util.el.gz.
Signature
(decode-hz-region BEG END)
Documentation
Decode HZ/ZW encoded text in the current region.
Return the length of resulting text.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/language/china-util.el.gz
;;;###autoload
(defun decode-hz-region (beg end)
"Decode HZ/ZW encoded text in the current region.
Return the length of resulting text."
(interactive "r")
(save-excursion
(save-restriction
(let (pos ch)
(narrow-to-region beg end)
;; We, at first, convert HZ/ZW to `iso-2022-7bit',
;; then decode it.
;; "~\n" -> "", "~~" -> "~"
(goto-char (point-min))
(while (search-forward "~" nil t)
(setq ch (following-char))
(cond ((= ch ?{)
(delete-region (1- (point)) (1+ (point)))
(setq pos (point))
(insert iso2022-gb-designation)
(if (looking-at "\\([!-}][!-~]\\)*")
(goto-char (match-end 0)))
(if (looking-at hz-ascii-designation)
(delete-region (match-beginning 0) (match-end 0)))
(insert iso2022-ascii-designation)
(decode-coding-region pos (point) 'iso-2022-7bit))
((= ch ?~)
(delete-char 1))
((and (= ch ?\n)
decode-hz-line-continuation)
(delete-region (1- (point)) (1+ (point))))
(t
(forward-char 1)))))
(- (point-max) (point-min)))))