annotate lisp/language/china-util.el @ 24102:1086aa5db591

Major rewrite to support cleaner method of dumping; a static "bss" section is used for heap space during preload, and bss data is now written to the proper section area when dumping. (need_to_recreate_heap): Renamed to using_dynamic_heap. (heap_index_in_executable): Obsolete variable removed. (data_section): New variable. (data_start_va): Renamed to data_start. (data_start_file): Obsolete variable removed. (bss_section): (extra_bss_size): (bss_section_static): (bss_start_static): (bss_size_static): (extra_bss_size_static): (heap_section): New variables. (_start): Remove code based on old unexec method. Call init_heap to initialize sbrk heap. (close_file_data): Update size of file when closing, so that unexec doesn't have to work out exact size in advance. (get_bss_info_from_map_file): (get_section_size): Obsolete functions removed. (rva_to_section): Fix minor bug, and add a work-around for a bug in very old linkers. (offset_to_section): (relocate_offset): New functions. (OFFSET_TO_RVA): (RVA_TO_OFFSET): (RVA_TO_SECTION_OFFSET): (PTR_TO_RVA): (PTR_TO_OFFSET): (OFFSET_TO_PTR): New macros. (get_section_info): Modify to support new unexec method; determines address ranges in process that need dumping, and COFF sections where data will be dumped. Allows for static and global bss data to be in separate ranges. No longer relies on knowledge of section names. (copy_executable_and_dump_data_section): Renamed copy_executable_and_dump_data. Completely rewritten to copy executable section by section, so that raw data areas can be expanded to hold dumped data as necessary. Allows for bss data to be in same section as initialized data. Reduces size of static heap section to that used during preload. (dump_bss_and_heap): (w32_fatal_reload_error): (read_in_bss): (map_in_heap): Obsolete functions removed. (unexec): Rounds off preload heap to nearest page rather than virtual allocation unit. Modified to match other changes.
author Andrew Innes <andrewi@gnu.org>
date Sun, 17 Jan 1999 19:21:24 +0000
parents 708271862495
children 60eb71a9f901
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17315
a3ca5e15c82a Fix the format of the first line.
Kenichi Handa <handa@m17n.org>
parents: 17098
diff changeset
1 ;;; china-util.el --- utilities for Chinese
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
3 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
18377
8b4a66c66dd6 Change copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 18309
diff changeset
4 ;; Licensed to the Free Software Foundation.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
5
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
6 ;; Keywords: mule, multilingual, Chinese
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
7
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
9
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13 ;; any later version.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
14
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
23 ;; Boston, MA 02111-1307, USA.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
24
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
25 ;;; Code:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
26
17993
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
27 ;;;###autoload
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
28 (defun setup-chinese-gb-environment ()
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
29 "Setup multilingual environment (MULE) for Chinese GB2312 users."
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
30 (interactive)
22987
708271862495 (setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents: 20942
diff changeset
31 (set-language-environment "Chinese-GB"))
17993
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
32
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
33 ;;;###autoload
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
34 (defun setup-chinese-big5-environment ()
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
35 "Setup multilingual environment (MULE) for Chinese Big5 users."
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
36 (interactive)
22987
708271862495 (setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents: 20942
diff changeset
37 (set-language-environment "Chinese-BIG5"))
17993
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
38
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
39 ;;;###autoload
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
40 (defun setup-chinese-cns-environment ()
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
41 "Setup multilingual environment (MULE) for Chinese CNS11643 family users."
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
42 (interactive)
22987
708271862495 (setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents: 20942
diff changeset
43 (set-language-environment "Chinese-CNS"))
17993
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
44
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
45 ;; Hz/ZW encoding stuffs
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
46
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
47 ;; HZ is an encoding method for Chinese character set GB2312 used
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
48 ;; widely in Internet. It is very similar to 7-bit environment of
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
49 ;; ISO-2022. The difference is that HZ uses the sequence "~{" and
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
50 ;; "~}" for designating GB2312 and ASCII respectively, hence, it
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
51 ;; doesn't uses ESC (0x1B) code.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
52
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
53 ;; ZW is another encoding method for Chinese character set GB2312. It
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
54 ;; encodes Chinese characters line by line by starting each line with
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
55 ;; the sequence "zW". It also uses only 7-bit as HZ.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
56
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
57 ;; ISO-2022 escape sequence to designate GB2312.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
58 (defvar iso2022-gb-designation "\e$A")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
59 ;; HZ escape sequence to designate GB2312.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
60 (defvar hz-gb-designnation "~{")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
61 ;; ISO-2022 escape sequence to designate ASCII.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
62 (defvar iso2022-ascii-designation "\e(B")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
63 ;; HZ escape sequence to designate ASCII.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
64 (defvar hz-ascii-designnation "~}")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
65 ;; Regexp of ZW sequence to start GB2312.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
66 (defvar zw-start-gb "^zW")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
67 ;; Regexp for start of GB2312 in an encoding mixture of HZ and ZW.
20738
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
68 (defvar hz/zw-start-gb
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
69 (concat hz-gb-designnation "\\|" zw-start-gb "\\|[^\0-\177]"))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
70
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
71 (defvar decode-hz-line-continuation nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
72 "Flag to tell if we should care line continuation convention of Hz.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
73
20738
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
74 (defconst hz-set-msb-table
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
75 (let ((str (make-string 127 0))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
76 (i 0))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
77 (while (< i 33)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
78 (aset str i i)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
79 (setq i (1+ i)))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
80 (while (< i 127)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
81 (aset str i (+ i 128))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
82 (setq i (1+ i)))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
83 str))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
84
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
85 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
86 (defun decode-hz-region (beg end)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
87 "Decode HZ/ZW encoded text in the current region.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
88 Return the length of resulting text."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
89 (interactive "r")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
90 (save-excursion
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
91 (save-restriction
20738
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
92 (let (pos ch)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
93 (narrow-to-region beg end)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
94
20738
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
95 ;; We, at first, convert HZ/ZW to `euc-china',
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
96 ;; then decode it.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
97
20738
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
98 ;; "~\n" -> "\n", "~~" -> "~"
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
99 (goto-char (point-min))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
100 (while (search-forward "~" nil t)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
101 (setq ch (following-char))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
102 (if (or (= ch ?\n) (= ch ?~)) (delete-char -1)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
103
20738
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
104 ;; "^zW...\n" -> Chinese GB2312
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
105 ;; "~{...~}" -> Chinese GB2312
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
106 (goto-char (point-min))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
107 (setq beg nil)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
108 (while (re-search-forward hz/zw-start-gb nil t)
20738
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
109 (setq pos (match-beginning 0)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
110 ch (char-after pos))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
111 ;; Record the first position to start conversion.
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
112 (or beg (setq beg pos))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
113 (end-of-line)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
114 (setq end (point))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
115 (if (>= ch 128) ; 8bit GB2312
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
116 nil
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
117 (goto-char pos)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
118 (delete-char 2)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
119 (setq end (- end 2))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
120 (if (= ch ?z) ; ZW -> euc-china
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
121 (progn
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
122 (translate-region (point) end hz-set-msb-table)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
123 (goto-char end))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
124 (if (search-forward hz-ascii-designnation
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
125 (if decode-hz-line-continuation nil end)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
126 t)
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
127 (delete-char -2))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
128 (setq end (point))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
129 (translate-region pos (point) hz-set-msb-table))))
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
130 (if beg
f510736ce3d1 In setup-LANGUAGE-environment functions,
Kenichi Handa <handa@m17n.org>
parents: 19428
diff changeset
131 (decode-coding-region beg end 'euc-china)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
132 (- (point-max) (point-min)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
133
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
134 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
135 (defun decode-hz-buffer ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
136 "Decode HZ/ZW encoded text in the current buffer."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
137 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
138 (decode-hz-region (point-min) (point-max)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
139
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
140 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
141 (defun encode-hz-region (beg end)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
142 "Encode the text in the current region to HZ.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
143 Return the length of resulting text."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
144 (interactive "r")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
145 (save-excursion
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
146 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
147 (narrow-to-region beg end)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
148
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
149 ;; "~" -> "~~"
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
150 (goto-char (point-min))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
151 (while (search-forward "~" nil t) (insert ?~))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
152
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
153 ;; Chinese GB2312 -> "~{...~}"
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
154 (goto-char (point-min))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
155 (if (re-search-forward "\\cc" nil t)
20838
3d67d591c066 (encode-hz-region): Do not bind
Kenichi Handa <handa@m17n.org>
parents: 20738
diff changeset
156 (let (pos)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
157 (goto-char (setq pos (match-beginning 0)))
18553
62e17ab4e33e Use true coding system names instead of
Kenichi Handa <handa@m17n.org>
parents: 18377
diff changeset
158 (encode-coding-region pos (point-max) 'iso-2022-7bit)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
159 (goto-char pos)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
160 (while (search-forward iso2022-gb-designation nil t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
161 (delete-char -3)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
162 (insert hz-gb-designnation))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
163 (goto-char pos)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
164 (while (search-forward iso2022-ascii-designation nil t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
165 (delete-char -3)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
166 (insert hz-ascii-designnation))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
167 (- (point-max) (point-min)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
168
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
169 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
170 (defun encode-hz-buffer ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
171 "Encode the text in the current buffer to HZ."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
172 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
173 (encode-hz-region (point-min) (point-max)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
174
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
175 ;;
18309
bd8b521f5218 Provide XXX-util instead of
Kenichi Handa <handa@m17n.org>
parents: 17993
diff changeset
176 (provide 'china-util)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
177
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
178 ;;; china-util.el ends here