annotate lisp/language/japan-util.el @ 46205:6676ac71682b

Update mouse button info. Don't give the names of Emacs commands that the characters run. Clarify what SPC and DEL do. Clarify the description of the minibuffer. Wording change for completion. Explain Mouse-2 better.
author Richard M. Stallman <rms@gnu.org>
date Sun, 07 Jul 2002 11:31:31 +0000
parents 67b464da13ec
children 0d8b17d428b5
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
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.
37871
dfd29e68d398 (japanese-symbol-table): Fix handling of
Gerd Moellmann <gerd@gnu.org>
parents: 36683
diff changeset
5 ;; Copyright (C) 2001 Free SOftware Foundation, Inc.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
6
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
7 ;; Keywords: mule, multilingual, Japanese
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
8
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
10
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
14 ;; any later version.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
21 ;; 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
22 ;; 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
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
24 ;; Boston, MA 02111-1307, USA.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
25
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37913
diff changeset
26 ;;; Commentary:
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37913
diff changeset
27
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
28 ;;; Code:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
29
21376
ea0bc6fdefd5 (setup-japanese-environment): Setup
Kenichi Handa <handa@m17n.org>
parents: 21043
diff changeset
30 (defvar sentence-end-save nil)
ea0bc6fdefd5 (setup-japanese-environment): Setup
Kenichi Handa <handa@m17n.org>
parents: 21043
diff changeset
31
17993
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
32 ;;;###autoload
22987
708271862495 (setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents: 22776
diff changeset
33 (defun setup-japanese-environment-internal ()
26086
cc03e8352d48 * language/japan-util.el (setup-japanese-environment-internal):
Paul Eggert <eggert@twinsun.com>
parents: 23722
diff changeset
34 (cond ((eq system-type 'ms-dos)
cc03e8352d48 * language/japan-util.el (setup-japanese-environment-internal):
Paul Eggert <eggert@twinsun.com>
parents: 23722
diff changeset
35 (prefer-coding-system 'japanese-shift-jis))
cc03e8352d48 * language/japan-util.el (setup-japanese-environment-internal):
Paul Eggert <eggert@twinsun.com>
parents: 23722
diff changeset
36 ((eq system-type 'usg-unix-v)
cc03e8352d48 * language/japan-util.el (setup-japanese-environment-internal):
Paul Eggert <eggert@twinsun.com>
parents: 23722
diff changeset
37 (prefer-coding-system 'japanese-iso-8bit)))
21376
ea0bc6fdefd5 (setup-japanese-environment): Setup
Kenichi Handa <handa@m17n.org>
parents: 21043
diff changeset
38 (setq sentence-end-save sentence-end)
ea0bc6fdefd5 (setup-japanese-environment): Setup
Kenichi Handa <handa@m17n.org>
parents: 21043
diff changeset
39 (setq sentence-end (concat sentence-end "\\|[$B!#!)!*(B]")))
ea0bc6fdefd5 (setup-japanese-environment): Setup
Kenichi Handa <handa@m17n.org>
parents: 21043
diff changeset
40
ea0bc6fdefd5 (setup-japanese-environment): Setup
Kenichi Handa <handa@m17n.org>
parents: 21043
diff changeset
41 (defun exit-japanese-environment ()
ea0bc6fdefd5 (setup-japanese-environment): Setup
Kenichi Handa <handa@m17n.org>
parents: 21043
diff changeset
42 (setq sentence-end sentence-end-save))
17993
73869115ae0a Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents: 17315
diff changeset
43
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
44 (defconst japanese-kana-table
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
45 '((?$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
46 (?$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
47 (?$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
48 (?$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
49 (?$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
50 (?$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
51 (?$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
52 (?$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
53 (?$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
54 (?$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
55 (?$B$s(B ?$B%s(B ?(I](B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
56 (?$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
57 (?$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
58 (?$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
59 (?$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
60 (?$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
61 (?$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
62 (?$B$C(B ?$B%C(B ?(I/(B)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
63 (?$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
64 (?$B$n(B ?$B%n(B "(I\(B")
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
65 ("$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
66 "Japanese JISX0208 Kana character table.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
67 Each element is of the form (HIRAGANA KATAKANA HANKAKU-KATAKANA), where
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
68 HIRAGANA and KATAKANA belong to `japanese-jisx0208',
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
69 HANKAKU-KATAKANA belongs to `japanese-jisx0201-kana'.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
70
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
71 ;; Put properties 'katakana, 'hiragana, and 'jix0201 to each Japanese
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
72 ;; kana characters for conversion among them.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
73 (let ((l japanese-kana-table)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
74 slot hiragana katakana jisx0201)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
75 (while l
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
76 (setq slot (car l)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
77 hiragana (car slot) katakana (nth 1 slot) jisx0201 (nth 2 slot)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
78 l (cdr l))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
79 (if hiragana
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
80 (if (stringp hiragana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
81 (if (> (length hiragana) 1)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
82 (let ((hira (aref hiragana 0)))
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
83 (put-char-code-property
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
84 hira 'kana-composition
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
85 (cons (cons (aref hiragana 1) katakana)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
86 (get-char-code-property hira 'kana-composition)))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
87 (put-char-code-property hiragana 'katakana katakana)
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
88 (put-char-code-property hiragana 'jisx0201 jisx0201)))
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
89 (when (integerp katakana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
90 (put-char-code-property katakana 'hiragana hiragana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
91 (put-char-code-property katakana 'jisx0201 jisx0201))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
92 (if jisx0201
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
93 (if (stringp jisx0201)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
94 (if (> (length jisx0201) 1)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
95 (let ((kana (aref jisx0201 0)))
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
96 (put-char-code-property
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
97 kana 'kana-composition
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
98 (cons (cons (aref jisx0201 1) katakana)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
99 (get-char-code-property kana 'kana-composition)))))
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
100 (put-char-code-property jisx0201 'hiragana hiragana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
101 (put-char-code-property jisx0201 'katakana katakana)
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
102 (put-char-code-property jisx0201 'jisx0208 katakana)))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
103
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
104 (defconst japanese-symbol-table
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
105 '((?\$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
106 (?$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
107 (?$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
108 (?$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
109 (?\$B!J(B ?\() (?\$B!K(B ?\)) (?\$B!N(B ?[) (?\$B!O(B ?]) (?\$B!P(B ?{) (?\$B!Q(B ?})
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
110 (?$B!R(B ?<) (?$B!S(B ?>) (?$B!\(B ?+) (?$B!](B ?-) (?$B!a(B ?=) (?$B!c(B ?<) (?$B!d(B ?>)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
111 (?$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
112 (?$B!w(B ?@))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
113 "Japanese JISX0208 symbol character table.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
114 Each element is of the form (SYMBOL ASCII HANKAKU), where SYMBOL
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
115 belongs to `japanese-jisx0208', ASCII belongs to `ascii', and HANKAKU
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
116 belongs to `japanese-jisx0201-kana'.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
117
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
118 ;; Put properties 'jisx0208, 'jisx0201, and 'ascii to each Japanese
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
119 ;; symbol and ASCII characters for conversion among them.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
120 (let ((l japanese-symbol-table)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
121 slot jisx0208 ascii jisx0201)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
122 (while l
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
123 (setq slot (car l)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
124 jisx0208 (car slot) ascii (nth 1 slot) jisx0201 (nth 2 slot)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
125 l (cdr l))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
126 (if ascii
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 'ascii ascii)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
129 (put-char-code-property ascii 'jisx0208 jisx0208)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
130 (if jisx0201
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
131 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
132 (put-char-code-property jisx0208 'jisx0201 jisx0201)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
133 (put-char-code-property jisx0201 'jisx0208 jisx0208)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
134
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
135 (defconst japanese-alpha-numeric-table
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
136 '((?$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
137 (?$B#5(B . ?5) (?$B#6(B . ?6) (?$B#7(B . ?7) (?$B#8(B . ?8) (?$B#9(B . ?9)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
138 (?$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
139 (?$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
140 (?$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
141 (?$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
142 (?$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
143 (?$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
144 (?$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
145 (?$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
146 (?$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
147 (?$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
148 "Japanese JISX0208 alpha numeric character table.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
149 Each element is of the form (ALPHA-NUMERIC ASCII), where ALPHA-NUMERIC
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
150 belongs to `japanese-jisx0208', ASCII belongs to `ascii'.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
151
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
152 ;; Put properties 'jisx0208 and 'ascii to each Japanese alpha numeric
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
153 ;; and ASCII characters for conversion between them.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
154 (let ((l japanese-alpha-numeric-table)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
155 slot jisx0208 ascii)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
156 (while l
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
157 (setq slot (car l)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
158 jisx0208 (car slot) ascii (cdr slot)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
159 l (cdr l))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
160 (put-char-code-property jisx0208 'ascii ascii)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
161 (put-char-code-property ascii 'jisx0208 jisx0208)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
162
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
163 ;; Convert string STR by FUNC and return a resulting string.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
164 (defun japanese-string-conversion (str func &rest args)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
165 (let ((buf (get-buffer-create " *Japanese work*")))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
166 (save-excursion
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
167 (set-buffer buf)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
168 (erase-buffer)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
169 (insert str)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
170 (apply func 1 (point) args)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
171 (buffer-string))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
172
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
173 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
174 (defun japanese-katakana (obj &optional hankaku)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
175 "Convert argument to Katakana and return that.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
176 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
177 The argument object is not altered--the value is a copy.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
178 Optional argument HANKAKU t means to convert to `hankaku' Katakana
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
179 \(`japanese-jisx0201-kana'), in which case return value
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
180 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
181 necessary to represent OBJ."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
182 (if (stringp obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
183 (japanese-string-conversion obj 'japanese-katakana-region hankaku)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
184 (or (get-char-code-property obj (if hankaku 'jisx0201 'katakana))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
185 obj)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
186
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
187 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
188 (defun japanese-hiragana (obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
189 "Convert argument to Hiragana and return that.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
190 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
191 The argument object is not altered--the value is a copy."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
192 (if (stringp obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
193 (japanese-string-conversion obj 'japanese-hiragana-region)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
194 (or (get-char-code-property obj 'hiragana)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
195 obj)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
196
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
197 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
198 (defun japanese-hankaku (obj &optional ascii-only)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
199 "Convert argument to `hankaku' and return that.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
200 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
201 The argument object is not altered--the value is a copy.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
202 Optional argument ASCII-ONLY non-nil means to return only ASCII character."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
203 (if (stringp obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
204 (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
205 (or (and (not ascii-only)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
206 (get-char-code-property obj 'jisx0201))
37913
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
207 (get-char-code-property obj 'ascii)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
208 obj)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
209
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
210 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
211 (defun japanese-zenkaku (obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
212 "Convert argument to `zenkaku' and return that.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
213 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
214 The argument object is not altered--the value is a copy."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
215 (if (stringp obj)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
216 (japanese-string-conversion obj 'japanese-zenkaku-region)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
217 (or (get-char-code-property obj 'jisx0208)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
218 obj)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
219
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
220 (defun japanese-replace-region (from to string)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
221 "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
222 (goto-char from)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
223 (insert string)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
224 (delete-char (- to from)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
225
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
226 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
227 (defun japanese-katakana-region (from to &optional hankaku)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
228 "Convert Japanese `hiragana' chars in the region to `katakana' chars.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
229 Optional argument HANKAKU t means to convert to `hankaku katakana' character
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
230 of which charset is `japanese-jisx0201-kana'."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
231 (interactive "r\nP")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
232 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
233 (narrow-to-region from to)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
234 (save-excursion
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
235 (goto-char (point-min))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
236 (while (re-search-forward "\\cH\\|\\cK" nil t)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
237 (let* ((kana (preceding-char))
30451
153802156ca9 (japanese-katakana-region): Fix handling HANKAKU argument.
Kenichi Handa <handa@m17n.org>
parents: 28906
diff changeset
238 (composition
153802156ca9 (japanese-katakana-region): Fix handling HANKAKU argument.
Kenichi Handa <handa@m17n.org>
parents: 28906
diff changeset
239 (and (not hankaku)
153802156ca9 (japanese-katakana-region): Fix handling HANKAKU argument.
Kenichi Handa <handa@m17n.org>
parents: 28906
diff changeset
240 (get-char-code-property kana 'kana-composition)))
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
241 next slot)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
242 (if (and composition (setq slot (assq (following-char) composition)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
243 (japanese-replace-region (match-beginning 0) (1+ (point))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
244 (cdr slot))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
245 (let ((kata (get-char-code-property
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
246 kana (if hankaku 'jisx0201 'katakana))))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
247 (if kata
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
248 (japanese-replace-region (match-beginning 0) (point)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
249 kata)))))))))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
250
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
251
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
252 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
253 (defun japanese-hiragana-region (from to)
22548
b054cd9f66df Introduce new character code property
Kenichi Handa <handa@m17n.org>
parents: 21376
diff changeset
254 "Convert Japanese `katakana' chars in the region to `hiragana' chars."
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
255 (interactive "r")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
256 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
257 (narrow-to-region from to)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
258 (save-excursion
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
259 (goto-char (point-min))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
260 (while (re-search-forward "\\cK\\|\\ck" nil t)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
261 (let* ((kata (preceding-char))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
262 (composition (get-char-code-property kata 'kana-composition))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
263 next slot)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
264 (if (and composition (setq slot (assq (following-char) composition)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
265 (japanese-replace-region (match-beginning 0) (1+ (point))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
266 (get-char-code-property
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
267 (cdr slot) 'hiragana))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
268 (let ((hira (get-char-code-property kata 'hiragana)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
269 (if hira
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
270 (japanese-replace-region (match-beginning 0) (point)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
271 hira)))))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
272
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
273 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
274 (defun japanese-hankaku-region (from to &optional ascii-only)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
275 "Convert Japanese `zenkaku' chars in the region to `hankaku' chars.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
276 `Zenkaku' chars belong to `japanese-jisx0208'
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
277 `Hankaku' chars belong to `ascii' or `japanese-jisx0201-kana'.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
278 Optional argument ASCII-ONLY non-nil means to convert only to ASCII char."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
279 (interactive "r\nP")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
280 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
281 (narrow-to-region from to)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
282 (save-excursion
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
283 (goto-char (point-min))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
284 (while (re-search-forward "\\cj" nil t)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
285 (let* ((zenkaku (preceding-char))
37913
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
286 (hankaku (or (and (not ascii-only)
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
287 (get-char-code-property zenkaku 'jisx0201))
49a0ec256ceb (japanese-hankaku): Prefer the charset
Gerd Moellmann <gerd@gnu.org>
parents: 37871
diff changeset
288 (get-char-code-property zenkaku 'ascii))))
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
289 (if hankaku
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
290 (japanese-replace-region (match-beginning 0) (match-end 0)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
291 hankaku)))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
292
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
293 ;;;###autoload
23722
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
294 (defun japanese-zenkaku-region (from to &optional katakana-only)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
295 "Convert hankaku' chars in the region to Japanese `zenkaku' chars.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
296 `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
297 `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
298 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
299 (interactive "r\nP")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
300 (save-restriction
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
301 (narrow-to-region from to)
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
302 (save-excursion
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
303 (goto-char (point-min))
23722
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
304 (while (or (and katakana-only
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
305 (re-search-forward "\\ck" nil t))
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
306 (and (not katakana-only)
b0c66c87b29b (japanese-zenkaku-region): New optional arg KATAKANA-ONLY.
Kenichi Handa <handa@m17n.org>
parents: 22987
diff changeset
307 (re-search-forward "\\ca\\|\\ck" nil t)))
22776
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
308 (let* ((hankaku (preceding-char))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
309 (composition (get-char-code-property hankaku 'kana-composition))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
310 next slot)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
311 (if (and composition (setq slot (assq (following-char) composition)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
312 (japanese-replace-region (match-beginning 0) (1+ (point))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
313 (cdr slot))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
314 (let ((zenkaku (japanese-zenkaku hankaku)))
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
315 (if zenkaku
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
316 (japanese-replace-region (match-beginning 0) (match-end 0)
1e2bf1acab23 (japanese-replace-region): New function.
Kenichi Handa <handa@m17n.org>
parents: 22548
diff changeset
317 zenkaku)))))))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
318
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
319 ;;;###autoload
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
320 (defun read-hiragana-string (prompt &optional initial-input)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
321 "Read a Hiragana string from the minibuffer, prompting with string PROMPT.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
322 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
323 (read-multilingual-string prompt initial-input "japanese-hiragana"))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
324
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
325 ;;
18309
bd8b521f5218 Provide XXX-util instead of
Kenichi Handa <handa@m17n.org>
parents: 18203
diff changeset
326 (provide 'japan-util)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
327
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
328 ;;; japan-util.el ends here