annotate lisp/language/japan-util.el @ 71710:dbbc0b93cfeb

(Forcing Redisplay, Displaying Messages, Temporary Displays, Font Selection, Auto Faces, Font Lookup, Fringe Indicators, Display Margins, Image Descriptors, Showing Images, Image Cache, Button Types, Making Buttons, Manipulating Buttons, Button Buffer Commands, Display Table Format, Glyphs): Remove @tindex.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 08 Jul 2006 18:11:49 +0000
parents 18a818a2ee7c
children 43cc94d955c2 f9a65d7ebd29
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37913
diff changeset
1 ;;; japan-util.el --- utilities for Japanese -*- coding: iso-2022-7bit; -*-
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2
62396
197607499a29 Fix copyrights.
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
3 ;; Copyright (C) 2001 Free Software Foundation, Inc.
197607499a29 Fix copyrights.
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
4 ;; Copyright (C) 1995, 1998, 2000, 2003
197607499a29 Fix copyrights.
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
5 ;; National Institute of Advanced Industrial Science and Technology (AIST)
197607499a29 Fix copyrights.
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
6 ;; Registration Number H14PRO021
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
7
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
8 ;; Keywords: mule, multilingual, Japanese
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
9
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
11
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15 ;; any later version.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
16
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
21
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
22 ;; 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
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64085
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 62396
diff changeset
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 62396
diff changeset
25 ;; Boston, MA 02110-1301, USA.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
26
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37913
diff changeset
27 ;;; Commentary:
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37913
diff changeset
28
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
29 ;;; Code:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
30
17993
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
31 ;;;###autoload
22987
708271862495 (setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents: 22776
diff changeset
32 (defun setup-japanese-environment-internal ()
50089
f302927f8302 (setup-japanese-environment-internal):
Kenichi Handa <handa@m17n.org>
parents: 50007
diff changeset
33 ;; By default, we use 'japanese-iso-8bit for file names. But, the
f302927f8302 (setup-japanese-environment-internal):
Kenichi Handa <handa@m17n.org>
parents: 50007
diff changeset
34 ;; following prefer-coding-system will override it.
50091
e43f492e9944 (setup-japanese-environment-internal): Prefer japanese-shift-jis on
Kenichi Handa <handa@m17n.org>
parents: 50089
diff changeset
35 (if (memq system-type '(windows-nt ms-dos cygwin))
50334
04c0558bea4f If system-type is not for Windows, prefer japanese-iso-8bit.
Kenichi Handa <handa@m17n.org>
parents: 50091
diff changeset
36 (prefer-coding-system 'japanese-shift-jis)
04c0558bea4f If system-type is not for Windows, prefer japanese-iso-8bit.
Kenichi Handa <handa@m17n.org>
parents: 50091
diff changeset
37 (prefer-coding-system 'japanese-iso-8bit)))
17993
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
38
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
39 (defconst japanese-kana-table
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
40 '((?$B$"(B ?$B%"(B ?(I1(B) (?$B$$(B ?$B%$(B ?(I2(B) (?$B$&(B ?$B%&(B ?(I3(B) (?$B$((B ?$B%((B ?(I4(B) (?$B$*(B ?$B%*(B ?(I5(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
41 (?$B$+(B ?$B%+(B ?(I6(B) (?$B$-(B ?$B%-(B ?(I7(B) (?$B$/(B ?$B%/(B ?(I8(B) (?$B$1(B ?$B%1(B ?(I9(B) (?$B$3(B ?$B%3(B ?(I:(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
42 (?$B$5(B ?$B%5(B ?(I;(B) (?$B$7(B ?$B%7(B ?(I<(B) (?$B$9(B ?$B%9(B ?(I=(B) (?$B$;(B ?$B%;(B ?(I>(B) (?$B$=(B ?$B%=(B ?(I?(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
43 (?$B$?(B ?$B%?(B ?(I@(B) (?$B$A(B ?$B%A(B ?(IA(B) (?$B$D(B ?$B%D(B ?(IB(B) (?$B$F(B ?$B%F(B ?(IC(B) (?$B$H(B ?$B%H(B ?(ID(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
44 (?$B$J(B ?$B%J(B ?(IE(B) (?$B$K(B ?$B%K(B ?(IF(B) (?$B$L(B ?$B%L(B ?(IG(B) (?$B$M(B ?$B%M(B ?(IH(B) (?$B$N(B ?$B%N(B ?(II(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
45 (?$B$O(B ?$B%O(B ?(IJ(B) (?$B$R(B ?$B%R(B ?(IK(B) (?$B$U(B ?$B%U(B ?(IL(B) (?$B$X(B ?$B%X(B ?(IM(B) (?$B$[(B ?$B%[(B ?(IN(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
46 (?$B$^(B ?$B%^(B ?(IO(B) (?$B$_(B ?$B%_(B ?(IP(B) (?$B$`(B ?$B%`(B ?(IQ(B) (?$B$a(B ?$B%a(B ?(IR(B) (?$B$b(B ?$B%b(B ?(IS(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
47 (?$B$d(B ?$B%d(B ?(IT(B) (?$B$f(B ?$B%f(B ?(IU(B) (?$B$h(B ?$B%h(B ?(IV(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
48 (?$B$i(B ?$B%i(B ?(IW(B) (?$B$j(B ?$B%j(B ?(IX(B) (?$B$k(B ?$B%k(B ?(IY(B) (?$B$l(B ?$B%l(B ?(IZ(B) (?$B$m(B ?$B%m(B ?(I[(B)
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
49 (?$B$o(B ?$B%o(B ?(I\(B) (?$B$p(B ?$B%p(B "(I2(B") (?$B$q(B ?$B%q(B "(I4(B") (?$B$r(B ?$B%r(B ?(I&(B)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
50 (?$B$s(B ?$B%s(B ?(I](B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
51 (?$B$,(B ?$B%,(B "(I6^(B") (?$B$.(B ?$B%.(B "(I7^(B") (?$B$0(B ?$B%0(B "(I8^(B") (?$B$2(B ?$B%2(B "(I9^(B") (?$B$4(B ?$B%4(B "(I:^(B")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
52 (?$B$6(B ?$B%6(B "(I;^(B") (?$B$8(B ?$B%8(B "(I<^(B") (?$B$:(B ?$B%:(B "(I=^(B") (?$B$<(B ?$B%<(B "(I>^(B") (?$B$>(B ?$B%>(B "(I?^(B")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
53 (?$B$@(B ?$B%@(B "(I@^(B") (?$B$B(B ?$B%B(B "(IA^(B") (?$B$E(B ?$B%E(B "(IB^(B") (?$B$G(B ?$B%G(B "(IC^(B") (?$B$I(B ?$B%I(B "(ID^(B")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
54 (?$B$P(B ?$B%P(B "(IJ^(B") (?$B$S(B ?$B%S(B "(IK^(B") (?$B$V(B ?$B%V(B "(IL^(B") (?$B$Y(B ?$B%Y(B "(IM^(B") (?$B$\(B ?$B%\(B "(IN^(B")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
55 (?$B$Q(B ?$B%Q(B "(IJ_(B") (?$B$T(B ?$B%T(B "(IK_(B") (?$B$W(B ?$B%W(B "(IL_(B") (?$B$Z(B ?$B%Z(B "(IM_(B") (?$B$](B ?$B%](B "(IN_(B")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
56 (?$B$!(B ?$B%!(B ?(I'(B) (?$B$#(B ?$B%#(B ?(I((B) (?$B$%(B ?$B%%(B ?(I)(B) (?$B$'(B ?$B%'(B ?(I*(B) (?$B$)(B ?$B%)(B ?(I+(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
57 (?$B$C(B ?$B%C(B ?(I/(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
58 (?$B$c(B ?$B%c(B ?(I,(B) (?$B$e(B ?$B%e(B ?(I-(B) (?$B$g(B ?$B%g(B ?(I.(B)
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
59 (?$B$n(B ?$B%n(B "(I\(B")
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
60 ("$B$&!+(B" ?$B%t(B "(I3^(B") (nil ?$B%u(B "(I6(B") (nil ?$B%v(B "(I9(B"))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
61 "Japanese JISX0208 Kana character table.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
62 Each element is of the form (HIRAGANA KATAKANA HANKAKU-KATAKANA), where
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
63 HIRAGANA and KATAKANA belong to `japanese-jisx0208',
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
64 HANKAKU-KATAKANA belongs to `japanese-jisx0201-kana'.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
65
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
66 ;; Put properties 'katakana, 'hiragana, and 'jix0201 to each Japanese
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
67 ;; kana characters for conversion among them.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
68 (let ((l japanese-kana-table)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
69 slot hiragana katakana jisx0201)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
70 (while l
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
71 (setq slot (car l)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
72 hiragana (car slot) katakana (nth 1 slot) jisx0201 (nth 2 slot)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
73 l (cdr l))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
74 (if hiragana
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
75 (if (stringp hiragana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
76 (if (> (length hiragana) 1)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
77 (let ((hira (aref hiragana 0)))
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
78 (put-char-code-property
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
79 hira 'kana-composition
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
80 (cons (cons (aref hiragana 1) katakana)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
81 (get-char-code-property hira 'kana-composition)))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
82 (put-char-code-property hiragana 'katakana katakana)
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
83 (put-char-code-property hiragana 'jisx0201 jisx0201)))
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
84 (when (integerp katakana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
85 (put-char-code-property katakana 'hiragana hiragana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
86 (put-char-code-property katakana 'jisx0201 jisx0201))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
87 (if jisx0201
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
88 (if (stringp jisx0201)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
89 (if (> (length jisx0201) 1)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
90 (let ((kana (aref jisx0201 0)))
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
91 (put-char-code-property
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
92 kana 'kana-composition
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
93 (cons (cons (aref jisx0201 1) katakana)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
94 (get-char-code-property kana 'kana-composition)))))
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
95 (put-char-code-property jisx0201 'hiragana hiragana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
96 (put-char-code-property jisx0201 'katakana katakana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
97 (put-char-code-property jisx0201 'jisx0208 katakana)))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
98
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
99 (defconst japanese-symbol-table
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
100 '((?\$B!!(B ?\ ) (?$B!$(B ?, ?(I$(B) (?$B!%(B ?. ?(I!(B) (?$B!"(B ?, ?(I$(B) (?$B!#(B ?. ?(I!(B) (?$B!&(B nil ?(I%(B)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
101 (?$B!'(B ?:) (?$B!((B ?\;) (?$B!)(B ??) (?$B!*(B ?!) (?$B!+(B nil ?(I^(B) (?$B!,(B nil ?(I_(B)
37871
dfd29e68d398 (japanese-symbol-table): Fix handling of
Gerd Moellmann <gerd@gnu.org>
parents: 36683
diff changeset
102 (?$B!-(B ?') (?$B!.(B ?`) (?$B!0(B ?^) (?$B!2(B ?_) (?$B!<(B ?- ?(I0(B) (?$B!=(B ?-) (?$B!>(B ?-)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
103 (?$B!?(B ?/) (?$B!@(B ?\\) (?$B!A(B ?~) (?$B!C(B ?|) (?$B!F(B ?`) (?$B!G(B ?') (?$B!H(B ?\") (?$B!I(B ?\")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
104 (?\$B!J(B ?\() (?\$B!K(B ?\)) (?\$B!N(B ?[) (?\$B!O(B ?]) (?\$B!P(B ?{) (?\$B!Q(B ?})
50007
10bcbf340393 (japanese-symbol-table): Add two entries to make it complete.
Kenichi Handa <handa@m17n.org>
parents: 49947
diff changeset
105 (?$B!R(B ?<) (?$B!S(B ?>) (?\$B!V(B nil ?\(I"(B) (?\$B!W(B nil ?\(I#(B)
10bcbf340393 (japanese-symbol-table): Add two entries to make it complete.
Kenichi Handa <handa@m17n.org>
parents: 49947
diff changeset
106 (?$B!\(B ?+) (?$B!](B ?-) (?$B!a(B ?=) (?$B!c(B ?<) (?$B!d(B ?>)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
107 (?$B!l(B ?') (?$B!m(B ?\") (?$B!o(B ?\\) (?$B!p(B ?$) (?$B!s(B ?%) (?$B!t(B ?#) (?$B!u(B ?&) (?$B!v(B ?*)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
108 (?$B!w(B ?@))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
109 "Japanese JISX0208 symbol character table.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
110 Each element is of the form (SYMBOL ASCII HANKAKU), where SYMBOL
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
111 belongs to `japanese-jisx0208', ASCII belongs to `ascii', and HANKAKU
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
112 belongs to `japanese-jisx0201-kana'.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
113
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
114 ;; Put properties 'jisx0208, 'jisx0201, and 'ascii to each Japanese
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
115 ;; symbol and ASCII characters for conversion among them.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
116 (let ((l japanese-symbol-table)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
117 slot jisx0208 ascii jisx0201)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
118 (while l
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
119 (setq slot (car l)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
120 jisx0208 (car slot) ascii (nth 1 slot) jisx0201 (nth 2 slot)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
121 l (cdr l))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
122 (if ascii
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
123 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
124 (put-char-code-property jisx0208 'ascii ascii)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
125 (put-char-code-property ascii 'jisx0208 jisx0208)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
126 (if jisx0201
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
127 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
128 (put-char-code-property jisx0208 'jisx0201 jisx0201)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
129 (put-char-code-property jisx0201 'jisx0208 jisx0208)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
130
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
131 (defconst japanese-alpha-numeric-table
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
132 '((?$B#0(B . ?0) (?$B#1(B . ?1) (?$B#2(B . ?2) (?$B#3(B . ?3) (?$B#4(B . ?4)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
133 (?$B#5(B . ?5) (?$B#6(B . ?6) (?$B#7(B . ?7) (?$B#8(B . ?8) (?$B#9(B . ?9)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38414
diff changeset
134 (?$B#A(B . ?A) (?$B#B(B . ?B) (?$B#C(B . ?C) (?$B#D(B . ?D) (?$B#E(B . ?E)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
135 (?$B#F(B . ?F) (?$B#G(B . ?G) (?$B#H(B . ?H) (?$B#I(B . ?I) (?$B#J(B . ?J)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
136 (?$B#K(B . ?K) (?$B#L(B . ?L) (?$B#M(B . ?M) (?$B#N(B . ?N) (?$B#O(B . ?O)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
137 (?$B#P(B . ?P) (?$B#Q(B . ?Q) (?$B#R(B . ?R) (?$B#S(B . ?S) (?$B#T(B . ?T)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
138 (?$B#U(B . ?U) (?$B#V(B . ?V) (?$B#W(B . ?W) (?$B#X(B . ?X) (?$B#Y(B . ?Y) (?$B#Z(B . ?Z)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
139 (?$B#a(B . ?a) (?$B#b(B . ?b) (?$B#c(B . ?c) (?$B#d(B . ?d) (?$B#e(B . ?e)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
140 (?$B#f(B . ?f) (?$B#g(B . ?g) (?$B#h(B . ?h) (?$B#i(B . ?i) (?$B#j(B . ?j)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
141 (?$B#k(B . ?k) (?$B#l(B . ?l) (?$B#m(B . ?m) (?$B#n(B . ?n) (?$B#o(B . ?o)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
142 (?$B#p(B . ?p) (?$B#q(B . ?q) (?$B#r(B . ?r) (?$B#s(B . ?s) (?$B#t(B . ?t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
143 (?$B#u(B . ?u) (?$B#v(B . ?v) (?$B#w(B . ?w) (?$B#x(B . ?x) (?$B#y(B . ?y) (?$B#z(B . ?z))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
144 "Japanese JISX0208 alpha numeric character table.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
145 Each element is of the form (ALPHA-NUMERIC ASCII), where ALPHA-NUMERIC
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
146 belongs to `japanese-jisx0208', ASCII belongs to `ascii'.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
147
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
148 ;; Put properties 'jisx0208 and 'ascii to each Japanese alpha numeric
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
149 ;; and ASCII characters for conversion between them.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
150 (let ((l japanese-alpha-numeric-table)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
151 slot jisx0208 ascii)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
152 (while l
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
153 (setq slot (car l)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
154 jisx0208 (car slot) ascii (cdr slot)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
155 l (cdr l))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
156 (put-char-code-property jisx0208 'ascii ascii)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
157 (put-char-code-property ascii 'jisx0208 jisx0208)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
158
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
159 ;; Convert string STR by FUNC and return a resulting string.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
160 (defun japanese-string-conversion (str func &rest args)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
161 (let ((buf (get-buffer-create " *Japanese work*")))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
162 (save-excursion
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
163 (set-buffer buf)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
164 (erase-buffer)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
165 (insert str)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
166 (apply func 1 (point) args)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
167 (buffer-string))))
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 japanese-katakana (obj &optional hankaku)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
171 "Convert argument to Katakana and return that.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
172 The argument may be a character or string. The result has the same type.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
173 The argument object is not altered--the value is a copy.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
174 Optional argument HANKAKU t means to convert to `hankaku' Katakana
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
175 \(`japanese-jisx0201-kana'), in which case return value
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
176 may be a string even if OBJ is a character if two Katakanas are
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
177 necessary to represent OBJ."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
178 (if (stringp obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
179 (japanese-string-conversion obj 'japanese-katakana-region hankaku)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
180 (or (get-char-code-property obj (if hankaku 'jisx0201 'katakana))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
181 obj)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
182
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
183 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
184 (defun japanese-hiragana (obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
185 "Convert argument to Hiragana and return that.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
186 The argument may be a character or string. The result has the same type.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
187 The argument object is not altered--the value is a copy."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
188 (if (stringp obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
189 (japanese-string-conversion obj 'japanese-hiragana-region)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
190 (or (get-char-code-property obj 'hiragana)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
191 obj)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
192
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
193 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
194 (defun japanese-hankaku (obj &optional ascii-only)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
195 "Convert argument to `hankaku' and return that.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
196 The argument may be a character or string. The result has the same type.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
197 The argument object is not altered--the value is a copy.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
198 Optional argument ASCII-ONLY non-nil means to return only ASCII character."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
199 (if (stringp obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
200 (japanese-string-conversion obj 'japanese-hankaku-region ascii-only)
37913
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
201 (or (and (not ascii-only)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
202 (get-char-code-property obj 'jisx0201))
37913
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
203 (get-char-code-property obj 'ascii)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
204 obj)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
205
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
206 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
207 (defun japanese-zenkaku (obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
208 "Convert argument to `zenkaku' and return that.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
209 The argument may be a character or string. The result has the same type.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
210 The argument object is not altered--the value is a copy."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
211 (if (stringp obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
212 (japanese-string-conversion obj 'japanese-zenkaku-region)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
213 (or (get-char-code-property obj 'jisx0208)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
214 obj)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
215
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
216 (defun japanese-replace-region (from to string)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
217 "Replace the region specified by FROM and TO to STRING."
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
218 (goto-char from)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
219 (insert string)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
220 (delete-char (- to from)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
221
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
222 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
223 (defun japanese-katakana-region (from to &optional hankaku)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
224 "Convert Japanese `hiragana' chars in the region to `katakana' chars.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
225 Optional argument HANKAKU t means to convert to `hankaku katakana' character
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
226 of which charset is `japanese-jisx0201-kana'."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
227 (interactive "r\nP")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
228 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
229 (narrow-to-region from to)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
230 (save-excursion
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
231 (goto-char (point-min))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
232 (while (re-search-forward "\\cH\\|\\cK" nil t)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
233 (let* ((kana (preceding-char))
30451
153802156ca9 (japanese-katakana-region): Fix handling HANKAKU argument.
Kenichi Handa <handa@m17n.org>
parents: 28906
diff changeset
234 (composition
153802156ca9 (japanese-katakana-region): Fix handling HANKAKU argument.
Kenichi Handa <handa@m17n.org>
parents: 28906
diff changeset
235 (and (not hankaku)
153802156ca9 (japanese-katakana-region): Fix handling HANKAKU argument.
Kenichi Handa <handa@m17n.org>
parents: 28906
diff changeset
236 (get-char-code-property kana 'kana-composition)))
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
237 next slot)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
238 (if (and composition (setq slot (assq (following-char) composition)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
239 (japanese-replace-region (match-beginning 0) (1+ (point))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
240 (cdr slot))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
241 (let ((kata (get-char-code-property
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
242 kana (if hankaku 'jisx0201 'katakana))))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
243 (if kata
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
244 (japanese-replace-region (match-beginning 0) (point)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
245 kata)))))))))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
246
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
247
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
248 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
249 (defun japanese-hiragana-region (from to)
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
250 "Convert Japanese `katakana' chars in the region to `hiragana' chars."
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
251 (interactive "r")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
252 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
253 (narrow-to-region from to)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
254 (save-excursion
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
255 (goto-char (point-min))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
256 (while (re-search-forward "\\cK\\|\\ck" nil t)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
257 (let* ((kata (preceding-char))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
258 (composition (get-char-code-property kata 'kana-composition))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
259 next slot)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
260 (if (and composition (setq slot (assq (following-char) composition)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
261 (japanese-replace-region (match-beginning 0) (1+ (point))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
262 (get-char-code-property
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
263 (cdr slot) 'hiragana))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
264 (let ((hira (get-char-code-property kata 'hiragana)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
265 (if hira
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
266 (japanese-replace-region (match-beginning 0) (point)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
267 hira)))))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
268
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
269 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
270 (defun japanese-hankaku-region (from to &optional ascii-only)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
271 "Convert Japanese `zenkaku' chars in the region to `hankaku' chars.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
272 `Zenkaku' chars belong to `japanese-jisx0208'
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
273 `Hankaku' chars belong to `ascii' or `japanese-jisx0201-kana'.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
274 Optional argument ASCII-ONLY non-nil means to convert only to ASCII char."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
275 (interactive "r\nP")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
276 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
277 (narrow-to-region from to)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
278 (save-excursion
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
279 (goto-char (point-min))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
280 (while (re-search-forward "\\cj" nil t)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
281 (let* ((zenkaku (preceding-char))
37913
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
282 (hankaku (or (and (not ascii-only)
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
283 (get-char-code-property zenkaku 'jisx0201))
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
284 (get-char-code-property zenkaku 'ascii))))
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
285 (if hankaku
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
286 (japanese-replace-region (match-beginning 0) (match-end 0)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
287 hankaku)))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
288
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
289 ;;;###autoload
23722
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
290 (defun japanese-zenkaku-region (from to &optional katakana-only)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
291 "Convert hankaku' chars in the region to Japanese `zenkaku' chars.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
292 `Zenkaku' chars belong to `japanese-jisx0208'
23722
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
293 `Hankaku' chars belong to `ascii' or `japanese-jisx0201-kana'.
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
294 Optional argument KATAKANA-ONLY non-nil means to convert only KATAKANA char."
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
295 (interactive "r\nP")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
296 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
297 (narrow-to-region from to)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
298 (save-excursion
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
299 (goto-char (point-min))
23722
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
300 (while (or (and katakana-only
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
301 (re-search-forward "\\ck" nil t))
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
302 (and (not katakana-only)
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
303 (re-search-forward "\\ca\\|\\ck" nil t)))
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
304 (let* ((hankaku (preceding-char))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
305 (composition (get-char-code-property hankaku 'kana-composition))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
306 next slot)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
307 (if (and composition (setq slot (assq (following-char) composition)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
308 (japanese-replace-region (match-beginning 0) (1+ (point))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
309 (cdr slot))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
310 (let ((zenkaku (japanese-zenkaku hankaku)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
311 (if zenkaku
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
312 (japanese-replace-region (match-beginning 0) (match-end 0)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
313 zenkaku)))))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
314
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
315 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
316 (defun read-hiragana-string (prompt &optional initial-input)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
317 "Read a Hiragana string from the minibuffer, prompting with string PROMPT.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
318 If non-nil, second arg INITIAL-INPUT is a string to insert before reading."
19854
c6f58c509273 (setup-japanese-environment): Give
Kenichi Handa <handa@m17n.org>
parents: 19764
diff changeset
319 (read-multilingual-string prompt initial-input "japanese-hiragana"))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
320
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
321 ;;
18309
bd8b521f5218 Provide XXX-util instead of
Kenichi Handa <handa@m17n.org>
parents: 18203
diff changeset
322 (provide 'japan-util)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
323
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50334
diff changeset
324 ;;; arch-tag: b579595c-c9ad-4b57-9314-98cd8b214f89
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
325 ;;; japan-util.el ends here