comparison lisp/language/arabic-util.el @ 167:85ec50267440 r20-3b10

Import from CVS: tag r20-3b10
author cvs
date Mon, 13 Aug 2007 09:45:46 +0200
parents 5a88923fcbfe
children
comparison
equal deleted inserted replaced
166:7a77eb660975 167:85ec50267440
29 29
30 ;;; 94.6.13 created for Mule Ver.1.1 by Takahashi N. <ntakahas@etl.go.jp> 30 ;;; 94.6.13 created for Mule Ver.1.1 by Takahashi N. <ntakahas@etl.go.jp>
31 31
32 (require 'visual-mode) 32 (require 'visual-mode)
33 33
34 (defvar arabic-mode-indicator " [2](3=a:GJ[0](B" 34 (defvar arabic-mode-indicator " ›2](3=a:GJ›0](B"
35 "String displayed in mode-line. 35 "String displayed in mode-line.
36 \" Arabic\" for Arabic keyboard input, \" [2](3=a:GJ[0](B\".") 36 \" Arabic\" for Arabic keyboard input, \" ›2](3=a:GJ›0](B\".")
37 37
38 (make-variable-buffer-local 'arabic-mode-indicator) 38 (make-variable-buffer-local 'arabic-mode-indicator)
39 39
40 ;;;###autoload 40 ;;;###autoload
41 (defvar arabic-mode nil 41 (defvar arabic-mode nil
61 arabic-keymap-2 (Microsoft Arabic).") 61 arabic-keymap-2 (Microsoft Arabic).")
62 62
63 (defvar arabic-translate-table 63 (defvar arabic-translate-table
64 (cond 64 (cond
65 ((eq arabic-input-keymap 'arabic-keymap-0) 65 ((eq arabic-input-keymap 'arabic-keymap-0)
66 [?[2](3![0](B ?[2](3"[0](B ?[2](3-[0](B nil nil nil nil ?' ?[2](3#[0](B ?[2](3$[0](B nil nil ?[2](3%[0](B nil ?[2](3&[0](B ?[2](49[0](B 66 [?›2](3!›0](B ?›2](3"›0](B ?›2](3-›0](B nil nil nil nil ?' ?›2](3#›0](B ?›2](3$›0](B nil nil ?›2](3%›0](B nil ?›2](3&›0](B ?›2](49›0](B
67 ?(2![0](B ?(2"[0](B ?(2#[0](B ?(2$[0](B ?(2%[0](B ?(2&[0](B ?(2'[0](B ?(2([0](B ?(2)[0](B ?(2*[0](B ?[2](3'[0](B ?[2](3([0](B ?[2](3*[0](B nil ?[2](3+[0](B ?[2](3)[0](B 67 ?(2!(B ?(2"(B ?(2#(B ?(2$(B ?(2%(B ?(2&(B ?(2'(B ?(2((B ?(2)(B ?(2*(B ?›2](3'›0](B ?›2](3(›0](B ?›2](3*›0](B nil ?›2](3+›0](B ?›2](3)›0](B
68 nil ?[2](4][0](B nil ?[2](4g[0](B ?[2](4A[0](B nil nil ?[2](4O[0](B ?[2](4-[0](B nil nil ?[2](41[0](B nil nil nil nil 68 nil ?›2](4]›0](B nil ?›2](4g›0](B ?›2](4A›0](B nil nil ?›2](4O›0](B ?›2](4-›0](B nil nil ?›2](41›0](B nil nil nil nil
69 nil nil nil ?[2](4=[0](B ?[2](4E[0](B nil nil nil ?[2](3h[0](B nil ?[2](4I[0](B nil nil nil nil nil 69 nil nil nil ?›2](4=›0](B ?›2](4E›0](B nil nil nil ?›2](3h›0](B nil ?›2](4I›0](B nil nil nil nil nil
70 ?[2](4M[0](B ?[2](38[0](B ?[2](4#[0](B ?[2](4'[0](B ?[2](3B[0](B nil ?[2](4Q[0](B ?[2](4k[0](B ?[2](3Z[0](B nil ?[2](4)[0](B ?[2](4U[0](B ?[2](4Y[0](B ?[2](3T[0](B ?[2](4[[0](B ?[2](3<[0](B 70 ?›2](4M›0](B ?›2](38›0](B ?›2](4#›0](B ?›2](4'›0](B ?›2](3B›0](B nil ?›2](4Q›0](B ?›2](4k›0](B ?›2](3Z›0](B nil ?›2](4)›0](B ?›2](4U›0](B ?›2](4Y›0](B ?›2](3T›0](B ?›2](4[›0](B ?›2](3<›0](B
71 ?[2](4e[0](B ?[2](4S[0](B ?[2](3F[0](B ?[2](45[0](B ?[2](4%[0](B nil nil ?[2](3^[0](B ?[2](3D[0](B ?[2](4_[0](B ?[2](3H[0](B nil ?| nil nil]) 71 ?›2](4e›0](B ?›2](4S›0](B ?›2](3F›0](B ?›2](45›0](B ?›2](4%›0](B nil nil ?›2](3^›0](B ?›2](3D›0](B ?›2](4_›0](B ?›2](3H›0](B nil ?| nil nil])
72 ((eq arabic-input-keymap 'arabic-keymap-1) 72 ((eq arabic-input-keymap 'arabic-keymap-1)
73 [?[2](3![0](B ?[2](3"[0](B nil nil nil nil nil nil ?[2](3#[0](B ?[2](3$[0](B nil nil ?[2](3%[0](B nil ?[2](3&[0](B nil 73 [?›2](3!›0](B ?›2](3"›0](B nil nil nil nil nil nil ?›2](3#›0](B ?›2](3$›0](B nil nil ?›2](3%›0](B nil ?›2](3&›0](B nil
74 ?(2![0](B ?(2"[0](B ?(2#[0](B ?(2$[0](B ?(2%[0](B ?(2&[0](B ?(2'[0](B ?(2([0](B ?(2)[0](B ?(2*[0](B ?[2](3'[0](B ?[2](4U[0](B ?[2](3*[0](B nil ?[2](3+[0](B ?[2](3)[0](B 74 ?(2!(B ?(2"(B ?(2#(B ?(2$(B ?(2%(B ?(2&(B ?(2'(B ?(2((B ?(2)(B ?(2*(B ?›2](3'›0](B ?›2](4U›0](B ?›2](3*›0](B nil ?›2](3+›0](B ?›2](3)›0](B
75 nil nil ?[2](3h[0](B nil nil nil ?[2](4e[0](B ?[2](3.[0](B nil nil nil nil nil nil nil nil 75 nil nil ?›2](3h›0](B nil nil nil ?›2](4e›0](B ?›2](3.›0](B nil nil nil nil nil nil nil nil
76 nil nil nil nil nil nil ?[2](30[0](B nil nil nil nil ?[2](4)[0](B nil ?[2](4g[0](B nil nil 76 nil nil nil nil nil nil ?›2](30›0](B nil nil nil nil ?›2](4)›0](B nil ?›2](4g›0](B nil nil
77 nli ?[2](49[0](B ?[2](3H[0](B ?[2](3D[0](B ?[2](4_[0](B ?[2](4S[0](B ?[2](4#[0](B ?[2](38[0](B ?[2](4%[0](B nil ?[2](4Y[0](B ?[2](4[[0](B ?[2](3T[0](B ?[2](3^[0](B ?[2](3F[0](B ?[2](41[0](B 77 nli ?›2](49›0](B ?›2](3H›0](B ?›2](3D›0](B ?›2](4_›0](B ?›2](4S›0](B ?›2](4#›0](B ?›2](38›0](B ?›2](4%›0](B nil ?›2](4Y›0](B ?›2](4[›0](B ?›2](3T›0](B ?›2](3^›0](B ?›2](3F›0](B ?›2](41›0](B
78 ?[2](4-[0](B ?[2](4A[0](B ?[2](4Q[0](B ?[2](45[0](B ?[2](4O[0](B ?[2](3Z[0](B ?[2](3B[0](B ?[2](4=[0](B ?[2](4E[0](B ?[2](4M[0](B ?[2](4I[0](B nil nli nil nil ]) 78 ?›2](4-›0](B ?›2](4A›0](B ?›2](4Q›0](B ?›2](45›0](B ?›2](4O›0](B ?›2](3Z›0](B ?›2](3B›0](B ?›2](4=›0](B ?›2](4E›0](B ?›2](4M›0](B ?›2](4I›0](B nil nli nil nil ])
79 (t 79 (t
80 [?[2](3![0](B ?[2](3"[0](B ?\" ?# ?$ ?% ?& ?' ?[2](3#[0](B ?[2](3$[0](B ?* ?+ ?[2](3^[0](B ?- ?[2](3H[0](B ?[2](4I[0](B 80 [?›2](3!›0](B ?›2](3"›0](B ?\" ?# ?$ ?% ?& ?' ?›2](3#›0](B ?›2](3$›0](B ?* ?+ ?›2](3^›0](B ?- ?›2](3H›0](B ?›2](4I›0](B
81 ?(2![0](B ?(2"[0](B ?(2#[0](B ?(2$[0](B ?(2%[0](B ?(2&[0](B ?(2'[0](B ?(2([0](B ?(2)[0](B ?(2*[0](B ?[2](3'[0](B ?[2](4U[0](B ?, ?= ?. ?[2](3)[0](B 81 ?(2!(B ?(2"(B ?(2#(B ?(2$(B ?(2%(B ?(2&(B ?(2'(B ?(2((B ?(2)(B ?(2*(B ?›2](3'›0](B ?›2](4U›0](B ?, ?= ?. ?›2](3)›0](B
82 ?@ nil ?[2](3b[0](B ?{ ?[ nil ?] ?[2](3c[0](B ?[2](30[0](B nil nil ?[2](3%[0](B ?/ ?` ?[2](3.[0](B nil 82 ?@ nil ?›2](3b›0](B ?{ ?[ nil ?] ?›2](3c›0](B ?›2](30›0](B nil nil ?›2](3%›0](B ?/ ?` ?›2](3.›0](B nil
83 ?[2](3([0](B nil nil nil ?[2](3d[0](B ?' ?} nil nil ?[2](34[0](B ?~ ?[2](4)[0](B ?\\ ?[2](3B[0](B ?^ ?_ 83 ?›2](3(›0](B nil nil nil ?›2](3d›0](B ?' ?} nil nil ?›2](34›0](B ?~ ?›2](4)›0](B ?\\ ?›2](3B›0](B ?^ ?_
84 ?[2](3D[0](B ?[2](49[0](B ?[2](3e[0](B ?[2](32[0](B ?[2](4_[0](B ?[2](4'[0](B ?[2](4#[0](B ?[2](4Y[0](B ?[2](38[0](B ?[2](3Z[0](B ?[2](4%[0](B ?[2](4[[0](B ?[2](3T[0](B ?[2](3<[0](B ?[2](4][0](B ?[2](41[0](B 84 ?›2](3D›0](B ?›2](49›0](B ?›2](3e›0](B ?›2](32›0](B ?›2](4_›0](B ?›2](4'›0](B ?›2](4#›0](B ?›2](4Y›0](B ?›2](38›0](B ?›2](3Z›0](B ?›2](4%›0](B ?›2](4[›0](B ?›2](3T›0](B ?›2](3<›0](B ?›2](4]›0](B ?›2](41›0](B
85 ?[2](4-[0](B ?[2](4A[0](B ?[2](4S[0](B ?[2](45[0](B ?[2](4Q[0](B ?[2](4M[0](B ?[2](3F[0](B ?[2](4=[0](B ?[2](3-[0](B ?[2](4O[0](B ?[2](4![0](B ?< ?| ?> nil ]))) 85 ?›2](4-›0](B ?›2](4A›0](B ?›2](4S›0](B ?›2](45›0](B ?›2](4Q›0](B ?›2](4M›0](B ?›2](3F›0](B ?›2](4=›0](B ?›2](3-›0](B ?›2](4O›0](B ?›2](4!›0](B ?< ?| ?> nil ])))
86 86
87 (defvar arabic-mode-map 87 (defvar arabic-mode-map
88 (let ((map (make-keymap))) 88 (let ((map (make-keymap)))
89 (substitute-key-definition 'self-insert-command 89 (substitute-key-definition 'self-insert-command
90 'arabic-self-insert-command 90 'arabic-self-insert-command
166 ((eq arabic-input-keymap 'arabic-keymap-0) 166 ((eq arabic-input-keymap 'arabic-keymap-0)
167 "\ 167 "\
168 Keymap in Arabic-mode 168 Keymap in Arabic-mode
169 169
170 +----------------------------------------------------------------+ 170 +----------------------------------------------------------------+
171 |! [2](3"[0](B |@ |# |$ |% |^ |& |* |( [2](3#[0](B |) [2](3$[0](B |_ |+ |~ | 171 |! ›2](3"›0](B |@ |# |$ |% |^ |& |* |( ›2](3#›0](B |) ›2](3$›0](B |_ |+ |~ |
172 |1 (2"[0](B |2 (2#[0](B |3 (2$[0](B |4 (2%[0](B |5 (2&[0](B |6 (2'[0](B |7 (2([0](B |8 (2)[0](B |9 (2*[0](B |0 (2![0](B |- |= |` [2](4M[0](B| 172 |1 (2"(B |2 (2#(B |3 (2$(B |4 (2%(B |5 (2&(B |6 (2'(B |7 (2((B |8 (2)(B |9 (2*(B |0 (2!(B |- |= |` ›2](4M›0](B|
173 +----------------------------------------------------------------+ 173 +----------------------------------------------------------------+
174 |Q |W |E |R |T [2](4E[0](B|Y |U |I |O |P | 174 |Q |W |E |R |T ›2](4E›0](B|Y |U |I |O |P |
175 |q [2](4S[0](B|w [2](3^[0](B |e |r [2](3F[0](B |t [2](4%[0](B|y [2](4_[0](B|u |i |o [2](3<[0](B |p [2](4e[0](B| 175 |q ›2](4S›0](B|w ›2](3^›0](B |e |r ›2](3F›0](B |t ›2](4%›0](B|y ›2](4_›0](B|u |i |o ›2](3<›0](B |p ›2](4e›0](B|
176 +--------------------------------------------------------+ 176 +--------------------------------------------------------+
177 |A [2](4][0](B|S [2](4=[0](B|D [2](4A[0](B|F |G [2](4O[0](B|H [2](4-[0](B|J |K [2](41[0](B|L |: [2](3'[0](B |\" [2](3-[0](B | 177 |A ›2](4]›0](B|S ›2](4=›0](B|D ›2](4A›0](B|F |G ›2](4O›0](B|H ›2](4-›0](B|J |K ›2](41›0](B|L |: ›2](3'›0](B |\" ›2](3-›0](B |
178 |a [2](38[0](B |s [2](45[0](B|d [2](3B[0](B |f [2](4Q[0](B|g [2](4k[0](B|h [2](3Z[0](B |j [2](4)[0](B|k [2](4U[0](B|l [2](4Y[0](B|; [2](3([0](B |' | 178 |a ›2](38›0](B |s ›2](45›0](B|d ›2](3B›0](B |f ›2](4Q›0](B|g ›2](4k›0](B|h ›2](3Z›0](B |j ›2](4)›0](B|k ›2](4U›0](B|l ›2](4Y›0](B|; ›2](3(›0](B |' |
179 +------------------------------------------------------+ 179 +------------------------------------------------------+
180 |Z [2](4I[0](B|X [2](3h[0](B |C [2](4g[0](B|V |B |N |M |< [2](3*[0](B |> [2](3+[0](B |? [2](3)[0](B | 180 |Z ›2](4I›0](B|X ›2](3h›0](B |C ›2](4g›0](B|V |B |N |M |< ›2](3*›0](B |> ›2](3+›0](B |? ›2](3)›0](B |
181 |z [2](3H[0](B |x [2](3D[0](B |c [2](4'[0](B|v |b [2](4#[0](B|n [2](4[[0](B|m [2](3T[0](B |, [2](3%[0](B |. [2](3&[0](B |/ [2](49[0](B| 181 |z ›2](3H›0](B |x ›2](3D›0](B |c ›2](4'›0](B|v |b ›2](4#›0](B|n ›2](4[›0](B|m ›2](3T›0](B |, ›2](3%›0](B |. ›2](3&›0](B |/ ›2](49›0](B|
182 +-------------------------------------------------+") 182 +-------------------------------------------------+")
183 183
184 ((eq arabic-input-keymap 'arabic-keymap-1) 184 ((eq arabic-input-keymap 'arabic-keymap-1)
185 "\ 185 "\
186 Keymap in Arabic-mode +--------------+ 186 Keymap in Arabic-mode +--------------+
187 | ALT SHIFT| 187 | ALT SHIFT|
188 +-------------------------------------------------+ |ASCII ARABIC| 188 +-------------------------------------------------+ |ASCII ARABIC|
189 | [2](3"[0](B | | | | | | | | [2](3#[0](B | [2](3$[0](B | +--------------+ 189 | ›2](3"›0](B | | | | | | | | ›2](3#›0](B | ›2](3$›0](B | +--------------+
190 |1 (2"[0](B |2 (2#[0](B |3 (2$[0](B |4 (2%[0](B |5 (2&[0](B |6 (2'[0](B |7 (2([0](B |8 (2)[0](B |9 (2*[0](B |0 (2![0](B | 190 |1 (2"(B |2 (2#(B |3 (2$(B |4 (2%(B |5 (2&(B |6 (2'(B |7 (2((B |8 (2)(B |9 (2*(B |0 (2!(B |
191 +-------------------------------------------------------------+ 191 +-------------------------------------------------------------+
192 | | | | | | | | | | | | | 192 | | | | | | | | | | | | |
193 |q [2](4A[0](B|w [2](4=[0](B|e [2](4S[0](B|r [2](4Q[0](B|t [2](4O[0](B|y [2](4M[0](B|u [2](3Z[0](B |i |o [2](41[0](B|p [2](4-[0](B|[ [2](4)[0](B|] [2](4g[0](B| 193 |q ›2](4A›0](B|w ›2](4=›0](B|e ›2](4S›0](B|r ›2](4Q›0](B|t ›2](4O›0](B|y ›2](4M›0](B|u ›2](3Z›0](B |i |o ›2](41›0](B|p ›2](4-›0](B|[ ›2](4)›0](B|] ›2](4g›0](B|
194 +-----------------------------------------------------------+ 194 +-----------------------------------------------------------+
195 | | | | [2](4e[0](B| [2](3.[0](B | | | | |[2](4k[0](B [2](3'[0](B| 195 | | | | ›2](4e›0](B| ›2](3.›0](B | | | | |›2](4k›0](B ›2](3'›0](B|
196 |a [2](49[0](B|s [2](45[0](B|d [2](4_[0](B|f [2](4#[0](B|g [2](38[0](B |h [2](4%[0](B|j [2](4Y[0](B|k [2](4[[0](B|l [2](3T[0](B |; [2](4U[0](B| 196 |a ›2](49›0](B|s ›2](45›0](B|d ›2](4_›0](B|f ›2](4#›0](B|g ›2](38›0](B |h ›2](4%›0](B|j ›2](4Y›0](B|k ›2](4[›0](B|l ›2](3T›0](B |; ›2](4U›0](B|
197 +---------------------------------------------------+ 197 +---------------------------------------------------+
198 | | | |[2](3-[0](B [2](30[0](B | [2](3h[0](B | | | [2](3*[0](B | [2](3+[0](B | [2](3)[0](B | 198 | | | |›2](3-›0](B ›2](30›0](B | ›2](3h›0](B | | | ›2](3*›0](B | ›2](3+›0](B | ›2](3)›0](B |
199 |z [2](4I[0](B|x [2](4E[0](B|c [2](3D[0](B |v [2](3B[0](B |b [2](3H[0](B |n [2](3F[0](B |m [2](3^[0](B |, [2](3%[0](B |. [2](3&[0](B |/ | 199 |z ›2](4I›0](B|x ›2](4E›0](B|c ›2](3D›0](B |v ›2](3B›0](B |b ›2](3H›0](B |n ›2](3F›0](B |m ›2](3^›0](B |, ›2](3%›0](B |. ›2](3&›0](B |/ |
200 +-------------------------------------------------+") 200 +-------------------------------------------------+")
201 201
202 (t 202 (t
203 "\ 203 "\
204 +-----------------+ 204 +-----------------+
205 |S-ASCII S-Arabic| 205 |S-ASCII S-Arabic|
206 | ASCII Arabic | +----+ 206 | ASCII Arabic | +----+
207 +-----------------+ || || 207 +-----------------+ || ||
208 |\\ \\| 208 |\\ \\|
209 +-----------------------------------------------------------+ 209 +-----------------------------------------------------------+
210 |! [2](3"[0](B|@ @|# #|$ $|% %|^ ^|& &|* *|( [2](3#[0](B|) [2](3$[0](B|_ _|+ +| 210 |! ›2](3"›0](B|@ @|# #|$ $|% %|^ ^|& &|* *|( ›2](3#›0](B|) ›2](3$›0](B|_ _|+ +|
211 |1 (2"[0](B|2 (2#[0](B|3 (2$[0](B|4 (2%[0](B|5 (2&[0](B|6 (2'[0](B|7 (2([0](B|8 (2)[0](B|9 (2*[0](B|0 (2![0](B|- -|= =| 211 |1 (2"(B|2 (2#(B|3 (2$(B|4 (2%(B|5 (2&(B|6 (2'(B|7 (2((B|8 (2)(B|9 (2*(B|0 (2!(B|- -|= =|
212 +-------------------------------------------------------------+ 212 +-------------------------------------------------------------+
213 |Q |W |E |R |T [2](3d[0](B|Y [2](34[0](B|U '|I |O |P [2](3([0](B|{ <|} >| 213 |Q |W |E |R |T ›2](3d›0](B|Y ›2](34›0](B|U '|I |O |P ›2](3(›0](B|{ <|} >|
214 | [2](4A[0](B| [2](4=[0](B| [2](4'[0](B| [2](4S[0](B| [2](4Q[0](B| [2](4O[0](B| [2](4M[0](B| [2](3Z[0](B| [2](41[0](B| [2](4-[0](B|[ [2](4)[0](B|] [2](3B[0](B| 214 | ›2](4A›0](B| ›2](4=›0](B| ›2](4'›0](B| ›2](4S›0](B| ›2](4Q›0](B| ›2](4O›0](B| ›2](4M›0](B| ›2](3Z›0](B| ›2](41›0](B| ›2](4-›0](B|[ ›2](4)›0](B|] ›2](3B›0](B|
215 +-------------------------------------------------------------+ 215 +-------------------------------------------------------------+
216 |A |S |D [|F ]|G [2](3c[0](B|H [2](30[0](B|J |K [2](3%[0](B|L /|: [2](3'[0](B|\" \" |~[2](3,[0](B | 216 |A |S |D [|F ]|G ›2](3c›0](B|H ›2](30›0](B|J |K ›2](3%›0](B|L /|: ›2](3'›0](B|\" \" |~›2](3,›0](B |
217 | [2](49[0](B| [2](45[0](B| [2](4_[0](B| [2](4#[0](B| [2](4Y[0](B| [2](38[0](B| [2](4%[0](B| [2](4[[0](B| [2](3T[0](B|\; [2](4U[0](B|' [2](4E[0](B|` [2](3D[0](B| 217 | ›2](49›0](B| ›2](45›0](B| ›2](4_›0](B| ›2](4#›0](B| ›2](4Y›0](B| ›2](38›0](B| ›2](4%›0](B| ›2](4[›0](B| ›2](3T›0](B|\; ›2](4U›0](B|' ›2](4E›0](B|` ›2](3D›0](B|
218 +-----------------------------------------------------------+ 218 +-----------------------------------------------------------+
219 |Z ~|X |C {|V }|B [2](3b[0](B|N [2](3.[0](B|M `|< ,|> [2](3&[0](B|? [2](3)[0](B| 219 |Z ~|X |C {|V }|B ›2](3b›0](B|N ›2](3.›0](B|M `|< ,|> ›2](3&›0](B|? ›2](3)›0](B|
220 | [2](4![0](B| [2](3-[0](B| [2](32[0](B| [2](3F[0](B| [2](3e[0](B| [2](4][0](B| [2](3<[0](B|, [2](3^[0](B|. [2](3H[0](B|/ [2](4I[0](B| 220 | ›2](4!›0](B| ›2](3-›0](B| ›2](32›0](B| ›2](3F›0](B| ›2](3e›0](B| ›2](4]›0](B| ›2](3<›0](B|, ›2](3^›0](B|. ›2](3H›0](B|/ ›2](4I›0](B|
221 +-------------------------------------------------+")) 221 +-------------------------------------------------+"))
222 222
223 "Document shown by arabic-help (M-z).") 223 "Document shown by arabic-help (M-z).")
224 224
225 ;;;###autoload 225 ;;;###autoload
237 (interactive) 237 (interactive)
238 (if (not arabic-mode) 238 (if (not arabic-mode)
239 (progn 239 (progn
240 (setq arabic-mode t 240 (setq arabic-mode t
241 arabic-input-arabic-char t 241 arabic-input-arabic-char t
242 arabic-mode-indicator " [2](3=a:GJ[0](B") 242 arabic-mode-indicator " ›2](3=a:GJ›0](B")
243 (redraw-modeline t) 243 (redraw-modeline t)
244 (message "M-z to display arabic keymap.") 244 (message "M-z to display arabic keymap.")
245 (run-hooks 'arabic-mode-hooks)))) 245 (run-hooks 'arabic-mode-hooks))))
246 246
247 (defun exit-arabic-mode nil 247 (defun exit-arabic-mode nil
251 (progn 251 (progn
252 (setq arabic-mode nil) 252 (setq arabic-mode nil)
253 (redraw-modeline t)))) 253 (redraw-modeline t))))
254 254
255 (defconst *arabic-adding-connection-to-right* 255 (defconst *arabic-adding-connection-to-right*
256 '((?[2](3.[0](B . ?[2](3/[0](B ) (?[2](3/[0](B . ?[2](3/[0](B ) 256 '((?›2](3.›0](B . ?›2](3/›0](B ) (?›2](3/›0](B . ?›2](3/›0](B )
257 (?[2](30[0](B . ?[2](31[0](B ) (?[2](31[0](B . ?[2](31[0](B ) 257 (?›2](30›0](B . ?›2](31›0](B ) (?›2](31›0](B . ?›2](31›0](B )
258 (?[2](32[0](B . ?[2](33[0](B ) (?[2](33[0](B . ?[2](33[0](B ) 258 (?›2](32›0](B . ?›2](33›0](B ) (?›2](33›0](B . ?›2](33›0](B )
259 (?[2](34[0](B . ?[2](35[0](B ) (?[2](35[0](B . ?[2](35[0](B ) 259 (?›2](34›0](B . ?›2](35›0](B ) (?›2](35›0](B . ?›2](35›0](B )
260 (?[2](4![0](B . ?[2](4"[0](B) (?[2](36[0](B . ?[2](37[0](B ) (?[2](37[0](B . ?[2](37[0](B ) (?[2](4"[0](B . ?[2](4"[0](B) 260 (?›2](4!›0](B . ?›2](4"›0](B) (?›2](36›0](B . ?›2](37›0](B ) (?›2](37›0](B . ?›2](37›0](B ) (?›2](4"›0](B . ?›2](4"›0](B)
261 (?[2](36[0](B . ?[2](37[0](B ) (?[2](37[0](B . ?[2](37[0](B ) 261 (?›2](36›0](B . ?›2](37›0](B ) (?›2](37›0](B . ?›2](37›0](B )
262 (?[2](38[0](B . ?[2](39[0](B ) (?[2](39[0](B . ?[2](39[0](B ) 262 (?›2](38›0](B . ?›2](39›0](B ) (?›2](39›0](B . ?›2](39›0](B )
263 (?[2](4#[0](B . ?[2](4$[0](B) (?[2](3:[0](B . ?[2](3;[0](B ) (?[2](3;[0](B . ?[2](3;[0](B ) (?[2](4$[0](B . ?[2](4$[0](B) 263 (?›2](4#›0](B . ?›2](4$›0](B) (?›2](3:›0](B . ?›2](3;›0](B ) (?›2](3;›0](B . ?›2](3;›0](B ) (?›2](4$›0](B . ?›2](4$›0](B)
264 (?[2](3<[0](B . ?[2](3=[0](B ) (?[2](3=[0](B . ?[2](3=[0](B ) 264 (?›2](3<›0](B . ?›2](3=›0](B ) (?›2](3=›0](B . ?›2](3=›0](B )
265 (?[2](4%[0](B . ?[2](4&[0](B) (?[2](3>[0](B . ?[2](3?[0](B ) (?[2](3?[0](B . ?[2](3?[0](B ) (?[2](4&[0](B . ?[2](4&[0](B) 265 (?›2](4%›0](B . ?›2](4&›0](B) (?›2](3>›0](B . ?›2](3?›0](B ) (?›2](3?›0](B . ?›2](3?›0](B ) (?›2](4&›0](B . ?›2](4&›0](B)
266 (?[2](4'[0](B . ?[2](4([0](B) (?[2](3@[0](B . ?[2](3A[0](B ) (?[2](3A[0](B . ?[2](3A[0](B ) (?[2](4([0](B . ?[2](4([0](B) 266 (?›2](4'›0](B . ?›2](4(›0](B) (?›2](3@›0](B . ?›2](3A›0](B ) (?›2](3A›0](B . ?›2](3A›0](B ) (?›2](4(›0](B . ?›2](4(›0](B)
267 (?[2](4)[0](B . ?[2](4,[0](B) (?[2](4*[0](B . ?[2](4+[0](B) (?[2](4+[0](B . ?[2](4+[0](B) (?[2](4,[0](B . ?[2](4,[0](B) 267 (?›2](4)›0](B . ?›2](4,›0](B) (?›2](4*›0](B . ?›2](4+›0](B) (?›2](4+›0](B . ?›2](4+›0](B) (?›2](4,›0](B . ?›2](4,›0](B)
268 (?[2](4-[0](B . ?[2](40[0](B) (?[2](4.[0](B . ?[2](4/[0](B) (?[2](4/[0](B . ?[2](4/[0](B) (?[2](40[0](B . ?[2](40[0](B) 268 (?›2](4-›0](B . ?›2](40›0](B) (?›2](4.›0](B . ?›2](4/›0](B) (?›2](4/›0](B . ?›2](4/›0](B) (?›2](40›0](B . ?›2](40›0](B)
269 (?[2](41[0](B . ?[2](44[0](B) (?[2](42[0](B . ?[2](43[0](B) (?[2](43[0](B . ?[2](43[0](B) (?[2](44[0](B . ?[2](44[0](B) 269 (?›2](41›0](B . ?›2](44›0](B) (?›2](42›0](B . ?›2](43›0](B) (?›2](43›0](B . ?›2](43›0](B) (?›2](44›0](B . ?›2](44›0](B)
270 (?[2](3B[0](B . ?[2](3C[0](B ) (?[2](3C[0](B . ?[2](3C[0](B ) 270 (?›2](3B›0](B . ?›2](3C›0](B ) (?›2](3C›0](B . ?›2](3C›0](B )
271 (?[2](3D[0](B . ?[2](3E[0](B ) (?[2](3E[0](B . ?[2](3E[0](B ) 271 (?›2](3D›0](B . ?›2](3E›0](B ) (?›2](3E›0](B . ?›2](3E›0](B )
272 (?[2](3F[0](B . ?[2](3G[0](B ) (?[2](3G[0](B . ?[2](3G[0](B ) 272 (?›2](3F›0](B . ?›2](3G›0](B ) (?›2](3G›0](B . ?›2](3G›0](B )
273 (?[2](3H[0](B . ?[2](3I[0](B ) (?[2](3I[0](B . ?[2](3I[0](B ) 273 (?›2](3H›0](B . ?›2](3I›0](B ) (?›2](3I›0](B . ?›2](3I›0](B )
274 (?[2](45[0](B . ?[2](48[0](B) (?[2](46[0](B . ?[2](47[0](B) (?[2](47[0](B . ?[2](47[0](B) (?[2](48[0](B . ?[2](48[0](B) 274 (?›2](45›0](B . ?›2](48›0](B) (?›2](46›0](B . ?›2](47›0](B) (?›2](47›0](B . ?›2](47›0](B) (?›2](48›0](B . ?›2](48›0](B)
275 (?[2](49[0](B . ?[2](4<[0](B) (?[2](4:[0](B . ?[2](4;[0](B) (?[2](4;[0](B . ?[2](4;[0](B) (?[2](4<[0](B . ?[2](4<[0](B) 275 (?›2](49›0](B . ?›2](4<›0](B) (?›2](4:›0](B . ?›2](4;›0](B) (?›2](4;›0](B . ?›2](4;›0](B) (?›2](4<›0](B . ?›2](4<›0](B)
276 (?[2](4=[0](B . ?[2](4@[0](B) (?[2](4>[0](B . ?[2](4?[0](B) (?[2](4?[0](B . ?[2](4?[0](B) (?[2](4@[0](B . ?[2](4@[0](B) 276 (?›2](4=›0](B . ?›2](4@›0](B) (?›2](4>›0](B . ?›2](4?›0](B) (?›2](4?›0](B . ?›2](4?›0](B) (?›2](4@›0](B . ?›2](4@›0](B)
277 (?[2](4A[0](B . ?[2](4D[0](B) (?[2](4B[0](B . ?[2](4C[0](B) (?[2](4C[0](B . ?[2](4C[0](B) (?[2](4D[0](B . ?[2](4D[0](B) 277 (?›2](4A›0](B . ?›2](4D›0](B) (?›2](4B›0](B . ?›2](4C›0](B) (?›2](4C›0](B . ?›2](4C›0](B) (?›2](4D›0](B . ?›2](4D›0](B)
278 (?[2](4E[0](B . ?[2](4H[0](B) (?[2](4F[0](B . ?[2](4G[0](B) (?[2](4G[0](B . ?[2](4G[0](B) (?[2](4H[0](B . ?[2](4H[0](B) 278 (?›2](4E›0](B . ?›2](4H›0](B) (?›2](4F›0](B . ?›2](4G›0](B) (?›2](4G›0](B . ?›2](4G›0](B) (?›2](4H›0](B . ?›2](4H›0](B)
279 (?[2](4I[0](B . ?[2](4L[0](B) (?[2](4J[0](B . ?[2](4K[0](B) (?[2](4K[0](B . ?[2](4K[0](B) (?[2](4L[0](B . ?[2](4L[0](B) 279 (?›2](4I›0](B . ?›2](4L›0](B) (?›2](4J›0](B . ?›2](4K›0](B) (?›2](4K›0](B . ?›2](4K›0](B) (?›2](4L›0](B . ?›2](4L›0](B)
280 (?[2](4M[0](B . ?[2](4N[0](B) (?[2](3J[0](B . ?[2](3K[0](B ) (?[2](3K[0](B . ?[2](3K[0](B ) (?[2](4N[0](B . ?[2](4N[0](B) 280 (?›2](4M›0](B . ?›2](4N›0](B) (?›2](3J›0](B . ?›2](3K›0](B ) (?›2](3K›0](B . ?›2](3K›0](B ) (?›2](4N›0](B . ?›2](4N›0](B)
281 (?[2](4O[0](B . ?[2](4P[0](B) (?[2](3L[0](B . ?[2](3M[0](B ) (?[2](3M[0](B . ?[2](3M[0](B ) (?[2](4P[0](B . ?[2](4P[0](B) 281 (?›2](4O›0](B . ?›2](4P›0](B) (?›2](3L›0](B . ?›2](3M›0](B ) (?›2](3M›0](B . ?›2](3M›0](B ) (?›2](4P›0](B . ?›2](4P›0](B)
282 (?[2](4Q[0](B . ?[2](4R[0](B) (?[2](3N[0](B . ?[2](3O[0](B ) (?[2](3O[0](B . ?[2](3O[0](B ) (?[2](4R[0](B . ?[2](4R[0](B) 282 (?›2](4Q›0](B . ?›2](4R›0](B) (?›2](3N›0](B . ?›2](3O›0](B ) (?›2](3O›0](B . ?›2](3O›0](B ) (?›2](4R›0](B . ?›2](4R›0](B)
283 (?[2](4S[0](B . ?[2](4T[0](B) (?[2](3P[0](B . ?[2](3Q[0](B ) (?[2](3Q[0](B . ?[2](3Q[0](B ) (?[2](4T[0](B . ?[2](4T[0](B) 283 (?›2](4S›0](B . ?›2](4T›0](B) (?›2](3P›0](B . ?›2](3Q›0](B ) (?›2](3Q›0](B . ?›2](3Q›0](B ) (?›2](4T›0](B . ?›2](4T›0](B)
284 (?[2](4U[0](B . ?[2](4X[0](B) (?[2](4V[0](B . ?[2](4W[0](B) (?[2](4W[0](B . ?[2](4W[0](B) (?[2](4X[0](B . ?[2](4X[0](B) 284 (?›2](4U›0](B . ?›2](4X›0](B) (?›2](4V›0](B . ?›2](4W›0](B) (?›2](4W›0](B . ?›2](4W›0](B) (?›2](4X›0](B . ?›2](4X›0](B)
285 (?[2](4Y[0](B . ?[2](4Z[0](B) (?[2](3R[0](B . ?[2](3S[0](B ) (?[2](3S[0](B . ?[2](3S[0](B ) (?[2](4Z[0](B . ?[2](4Z[0](B) 285 (?›2](4Y›0](B . ?›2](4Z›0](B) (?›2](3R›0](B . ?›2](3S›0](B ) (?›2](3S›0](B . ?›2](3S›0](B ) (?›2](4Z›0](B . ?›2](4Z›0](B)
286 (?[2](3T[0](B . ?[2](3W[0](B ) (?[2](3U[0](B . ?[2](3V[0](B ) (?[2](3V[0](B . ?[2](3V[0](B ) (?[2](3W[0](B . ?[2](3W[0](B ) 286 (?›2](3T›0](B . ?›2](3W›0](B ) (?›2](3U›0](B . ?›2](3V›0](B ) (?›2](3V›0](B . ?›2](3V›0](B ) (?›2](3W›0](B . ?›2](3W›0](B )
287 (?[2](4[[0](B . ?[2](4\[0](B) (?[2](3X[0](B . ?[2](3Y[0](B ) (?[2](3Y[0](B . ?[2](3Y[0](B ) (?[2](4\[0](B . ?[2](4\[0](B) 287 (?›2](4[›0](B . ?›2](4\›0](B) (?›2](3X›0](B . ?›2](3Y›0](B ) (?›2](3Y›0](B . ?›2](3Y›0](B ) (?›2](4\›0](B . ?›2](4\›0](B)
288 (?[2](3Z[0](B . ?[2](3][0](B ) (?[2](3[[0](B . ?[2](3\[0](B ) (?[2](3\[0](B . ?[2](3\[0](B ) (?[2](3][0](B . ?[2](3][0](B ) 288 (?›2](3Z›0](B . ?›2](3]›0](B ) (?›2](3[›0](B . ?›2](3\›0](B ) (?›2](3\›0](B . ?›2](3\›0](B ) (?›2](3]›0](B . ?›2](3]›0](B )
289 (?[2](3^[0](B . ?[2](3_[0](B ) (?[2](3_[0](B . ?[2](3_[0](B ) 289 (?›2](3^›0](B . ?›2](3_›0](B ) (?›2](3_›0](B . ?›2](3_›0](B )
290 (?[2](4][0](B . ?[2](4^[0](B) (?[2](4^[0](B . ?[2](4^[0](B) 290 (?›2](4]›0](B . ?›2](4^›0](B) (?›2](4^›0](B . ?›2](4^›0](B)
291 (?[2](4_[0](B . ?[2](4`[0](B) (?[2](3`[0](B . ?[2](3a[0](B ) (?[2](3a[0](B . ?[2](3a[0](B ) (?[2](4`[0](B . ?[2](4`[0](B) 291 (?›2](4_›0](B . ?›2](4`›0](B) (?›2](3`›0](B . ?›2](3a›0](B ) (?›2](3a›0](B . ?›2](3a›0](B ) (?›2](4`›0](B . ?›2](4`›0](B)
292 (?[2](3b[0](B . ?[2](4a[0](B) (?[2](4a[0](B . ?[2](4a[0](B) 292 (?›2](3b›0](B . ?›2](4a›0](B) (?›2](4a›0](B . ?›2](4a›0](B)
293 (?[2](3c[0](B . ?[2](4b[0](B) (?[2](4b[0](B . ?[2](4b[0](B) 293 (?›2](3c›0](B . ?›2](4b›0](B) (?›2](4b›0](B . ?›2](4b›0](B)
294 (?[2](3d[0](B . ?[2](4c[0](B) (?[2](4c[0](B . ?[2](4c[0](B) 294 (?›2](3d›0](B . ?›2](4c›0](B) (?›2](4c›0](B . ?›2](4c›0](B)
295 (?[2](3e[0](B . ?[2](4d[0](B) (?[2](4d[0](B . ?[2](4d[0](B) 295 (?›2](3e›0](B . ?›2](4d›0](B) (?›2](4d›0](B . ?›2](4d›0](B)
296 (?[2](4e[0](B . ?[2](4f[0](B) (?[2](3f[0](B . ?[2](3g[0](B ) (?[2](3g[0](B . ?[2](3g[0](B ) (?[2](4f[0](B . ?[2](4f[0](B) 296 (?›2](4e›0](B . ?›2](4f›0](B) (?›2](3f›0](B . ?›2](3g›0](B ) (?›2](3g›0](B . ?›2](3g›0](B ) (?›2](4f›0](B . ?›2](4f›0](B)
297 (?[2](4g[0](B . ?[2](4j[0](B) (?[2](4h[0](B . ?[2](4i[0](B) (?[2](4i[0](B . ?[2](4i[0](B) (?[2](4j[0](B . ?[2](4j[0](B) 297 (?›2](4g›0](B . ?›2](4j›0](B) (?›2](4h›0](B . ?›2](4i›0](B) (?›2](4i›0](B . ?›2](4i›0](B) (?›2](4j›0](B . ?›2](4j›0](B)
298 (?[2](3h[0](B . ?[2](3i[0](B ) (?[2](3i[0](B . ?[2](3i[0](B ) 298 (?›2](3h›0](B . ?›2](3i›0](B ) (?›2](3i›0](B . ?›2](3i›0](B )
299 (?[2](4k[0](B . ?[2](4n[0](B) (?[2](4l[0](B . ?[2](4m[0](B) (?[2](4m[0](B . ?[2](4m[0](B) (?[2](4n[0](B . ?[2](4n[0](B))) 299 (?›2](4k›0](B . ?›2](4n›0](B) (?›2](4l›0](B . ?›2](4m›0](B) (?›2](4m›0](B . ?›2](4m›0](B) (?›2](4n›0](B . ?›2](4n›0](B)))
300 300
301 (defconst *arabic-adding-connection-to-left* 301 (defconst *arabic-adding-connection-to-left*
302 '((?[2](4![0](B . ?[2](36[0](B ) (?[2](36[0](B . ?[2](36[0](B ) (?[2](37[0](B . ?[2](37[0](B ) (?[2](4"[0](B . ?[2](37[0](B) 302 '((?›2](4!›0](B . ?›2](36›0](B ) (?›2](36›0](B . ?›2](36›0](B ) (?›2](37›0](B . ?›2](37›0](B ) (?›2](4"›0](B . ?›2](37›0](B)
303 (?[2](4#[0](B . ?[2](3:[0](B ) (?[2](3:[0](B . ?[2](3:[0](B ) (?[2](3;[0](B . ?[2](3;[0](B ) (?[2](4$[0](B . ?[2](3;[0](B ) 303 (?›2](4#›0](B . ?›2](3:›0](B ) (?›2](3:›0](B . ?›2](3:›0](B ) (?›2](3;›0](B . ?›2](3;›0](B ) (?›2](4$›0](B . ?›2](3;›0](B )
304 (?[2](4%[0](B . ?[2](3>[0](B ) (?[2](3>[0](B . ?[2](3>[0](B ) (?[2](3?[0](B . ?[2](3?[0](B ) (?[2](4&[0](B . ?[2](3?[0](B ) 304 (?›2](4%›0](B . ?›2](3>›0](B ) (?›2](3>›0](B . ?›2](3>›0](B ) (?›2](3?›0](B . ?›2](3?›0](B ) (?›2](4&›0](B . ?›2](3?›0](B )
305 (?[2](4'[0](B . ?[2](3@[0](B ) (?[2](3@[0](B . ?[2](3@[0](B ) (?[2](3A[0](B . ?[2](3A[0](B ) (?[2](4([0](B . ?[2](3A[0](B ) 305 (?›2](4'›0](B . ?›2](3@›0](B ) (?›2](3@›0](B . ?›2](3@›0](B ) (?›2](3A›0](B . ?›2](3A›0](B ) (?›2](4(›0](B . ?›2](3A›0](B )
306 (?[2](4)[0](B . ?[2](4*[0](B) (?[2](4*[0](B . ?[2](4*[0](B) (?[2](4+[0](B . ?[2](4+[0](B) (?[2](4,[0](B . ?[2](4+[0](B) 306 (?›2](4)›0](B . ?›2](4*›0](B) (?›2](4*›0](B . ?›2](4*›0](B) (?›2](4+›0](B . ?›2](4+›0](B) (?›2](4,›0](B . ?›2](4+›0](B)
307 (?[2](4-[0](B . ?[2](4.[0](B) (?[2](4.[0](B . ?[2](4.[0](B) (?[2](4/[0](B . ?[2](4/[0](B) (?[2](40[0](B . ?[2](4/[0](B) 307 (?›2](4-›0](B . ?›2](4.›0](B) (?›2](4.›0](B . ?›2](4.›0](B) (?›2](4/›0](B . ?›2](4/›0](B) (?›2](40›0](B . ?›2](4/›0](B)
308 (?[2](41[0](B . ?[2](42[0](B) (?[2](42[0](B . ?[2](42[0](B) (?[2](43[0](B . ?[2](43[0](B) (?[2](44[0](B . ?[2](43[0](B) 308 (?›2](41›0](B . ?›2](42›0](B) (?›2](42›0](B . ?›2](42›0](B) (?›2](43›0](B . ?›2](43›0](B) (?›2](44›0](B . ?›2](43›0](B)
309 (?[2](45[0](B . ?[2](46[0](B) (?[2](46[0](B . ?[2](46[0](B) (?[2](47[0](B . ?[2](47[0](B) (?[2](48[0](B . ?[2](47[0](B) 309 (?›2](45›0](B . ?›2](46›0](B) (?›2](46›0](B . ?›2](46›0](B) (?›2](47›0](B . ?›2](47›0](B) (?›2](48›0](B . ?›2](47›0](B)
310 (?[2](49[0](B . ?[2](4:[0](B) (?[2](4:[0](B . ?[2](4:[0](B) (?[2](4;[0](B . ?[2](4;[0](B) (?[2](4<[0](B . ?[2](4;[0](B) 310 (?›2](49›0](B . ?›2](4:›0](B) (?›2](4:›0](B . ?›2](4:›0](B) (?›2](4;›0](B . ?›2](4;›0](B) (?›2](4<›0](B . ?›2](4;›0](B)
311 (?[2](4=[0](B . ?[2](4>[0](B) (?[2](4>[0](B . ?[2](4>[0](B) (?[2](4?[0](B . ?[2](4?[0](B) (?[2](4@[0](B . ?[2](4?[0](B) 311 (?›2](4=›0](B . ?›2](4>›0](B) (?›2](4>›0](B . ?›2](4>›0](B) (?›2](4?›0](B . ?›2](4?›0](B) (?›2](4@›0](B . ?›2](4?›0](B)
312 (?[2](4A[0](B . ?[2](4B[0](B) (?[2](4B[0](B . ?[2](4B[0](B) (?[2](4C[0](B . ?[2](4C[0](B) (?[2](4D[0](B . ?[2](4C[0](B) 312 (?›2](4A›0](B . ?›2](4B›0](B) (?›2](4B›0](B . ?›2](4B›0](B) (?›2](4C›0](B . ?›2](4C›0](B) (?›2](4D›0](B . ?›2](4C›0](B)
313 (?[2](4E[0](B . ?[2](4F[0](B) (?[2](4F[0](B . ?[2](4F[0](B) (?[2](4G[0](B . ?[2](4G[0](B) (?[2](4H[0](B . ?[2](4G[0](B) 313 (?›2](4E›0](B . ?›2](4F›0](B) (?›2](4F›0](B . ?›2](4F›0](B) (?›2](4G›0](B . ?›2](4G›0](B) (?›2](4H›0](B . ?›2](4G›0](B)
314 (?[2](4I[0](B . ?[2](4J[0](B) (?[2](4J[0](B . ?[2](4J[0](B) (?[2](4K[0](B . ?[2](4K[0](B) (?[2](4L[0](B . ?[2](4K[0](B) 314 (?›2](4I›0](B . ?›2](4J›0](B) (?›2](4J›0](B . ?›2](4J›0](B) (?›2](4K›0](B . ?›2](4K›0](B) (?›2](4L›0](B . ?›2](4K›0](B)
315 (?[2](4M[0](B . ?[2](3J[0](B ) (?[2](3J[0](B . ?[2](3J[0](B ) (?[2](3K[0](B . ?[2](3K[0](B ) (?[2](4N[0](B . ?[2](3K[0](B ) 315 (?›2](4M›0](B . ?›2](3J›0](B ) (?›2](3J›0](B . ?›2](3J›0](B ) (?›2](3K›0](B . ?›2](3K›0](B ) (?›2](4N›0](B . ?›2](3K›0](B )
316 (?[2](4O[0](B . ?[2](3L[0](B ) (?[2](3L[0](B . ?[2](3L[0](B ) (?[2](3M[0](B . ?[2](3M[0](B ) (?[2](4P[0](B . ?[2](3M[0](B ) 316 (?›2](4O›0](B . ?›2](3L›0](B ) (?›2](3L›0](B . ?›2](3L›0](B ) (?›2](3M›0](B . ?›2](3M›0](B ) (?›2](4P›0](B . ?›2](3M›0](B )
317 (?[2](4Q[0](B . ?[2](3N[0](B ) (?[2](3N[0](B . ?[2](3N[0](B ) (?[2](3O[0](B . ?[2](3O[0](B ) (?[2](4R[0](B . ?[2](3O[0](B ) 317 (?›2](4Q›0](B . ?›2](3N›0](B ) (?›2](3N›0](B . ?›2](3N›0](B ) (?›2](3O›0](B . ?›2](3O›0](B ) (?›2](4R›0](B . ?›2](3O›0](B )
318 (?[2](4S[0](B . ?[2](3P[0](B ) (?[2](3P[0](B . ?[2](3P[0](B ) (?[2](3Q[0](B . ?[2](3Q[0](B ) (?[2](4T[0](B . ?[2](3Q[0](B ) 318 (?›2](4S›0](B . ?›2](3P›0](B ) (?›2](3P›0](B . ?›2](3P›0](B ) (?›2](3Q›0](B . ?›2](3Q›0](B ) (?›2](4T›0](B . ?›2](3Q›0](B )
319 (?[2](4U[0](B . ?[2](4V[0](B) (?[2](4V[0](B . ?[2](4V[0](B) (?[2](4W[0](B . ?[2](4W[0](B) (?[2](4X[0](B . ?[2](4W[0](B) 319 (?›2](4U›0](B . ?›2](4V›0](B) (?›2](4V›0](B . ?›2](4V›0](B) (?›2](4W›0](B . ?›2](4W›0](B) (?›2](4X›0](B . ?›2](4W›0](B)
320 (?[2](4Y[0](B . ?[2](3R[0](B ) (?[2](3R[0](B . ?[2](3R[0](B ) (?[2](3S[0](B . ?[2](3S[0](B ) (?[2](4Z[0](B . ?[2](3S[0](B ) 320 (?›2](4Y›0](B . ?›2](3R›0](B ) (?›2](3R›0](B . ?›2](3R›0](B ) (?›2](3S›0](B . ?›2](3S›0](B ) (?›2](4Z›0](B . ?›2](3S›0](B )
321 (?[2](3T[0](B . ?[2](3U[0](B ) (?[2](3U[0](B . ?[2](3U[0](B ) (?[2](3V[0](B . ?[2](3V[0](B ) (?[2](3W[0](B . ?[2](3V[0](B ) 321 (?›2](3T›0](B . ?›2](3U›0](B ) (?›2](3U›0](B . ?›2](3U›0](B ) (?›2](3V›0](B . ?›2](3V›0](B ) (?›2](3W›0](B . ?›2](3V›0](B )
322 (?[2](4[[0](B . ?[2](3X[0](B ) (?[2](3X[0](B . ?[2](3X[0](B ) (?[2](3Y[0](B . ?[2](3Y[0](B ) (?[2](4\[0](B . ?[2](3Y[0](B ) 322 (?›2](4[›0](B . ?›2](3X›0](B ) (?›2](3X›0](B . ?›2](3X›0](B ) (?›2](3Y›0](B . ?›2](3Y›0](B ) (?›2](4\›0](B . ?›2](3Y›0](B )
323 (?[2](3Z[0](B . ?[2](3[[0](B ) (?[2](3[[0](B . ?[2](3[[0](B ) (?[2](3\[0](B . ?[2](3\[0](B ) (?[2](3][0](B . ?[2](3\[0](B ) 323 (?›2](3Z›0](B . ?›2](3[›0](B ) (?›2](3[›0](B . ?›2](3[›0](B ) (?›2](3\›0](B . ?›2](3\›0](B ) (?›2](3]›0](B . ?›2](3\›0](B )
324 (?[2](4_[0](B . ?[2](3`[0](B ) (?[2](3`[0](B . ?[2](3`[0](B ) (?[2](3a[0](B . ?[2](3a[0](B ) (?[2](4`[0](B . ?[2](3a[0](B ) 324 (?›2](4_›0](B . ?›2](3`›0](B ) (?›2](3`›0](B . ?›2](3`›0](B ) (?›2](3a›0](B . ?›2](3a›0](B ) (?›2](4`›0](B . ?›2](3a›0](B )
325 (?[2](4e[0](B . ?[2](3f[0](B ) (?[2](3f[0](B . ?[2](3f[0](B ) (?[2](3g[0](B . ?[2](3g[0](B ) (?[2](4f[0](B . ?[2](3g[0](B) 325 (?›2](4e›0](B . ?›2](3f›0](B ) (?›2](3f›0](B . ?›2](3f›0](B ) (?›2](3g›0](B . ?›2](3g›0](B ) (?›2](4f›0](B . ?›2](3g›0](B)
326 (?[2](4g[0](B . ?[2](4h[0](B) (?[2](4h[0](B . ?[2](4h[0](B) (?[2](4i[0](B . ?[2](4i[0](B) (?[2](4j[0](B . ?[2](4i[0](B) 326 (?›2](4g›0](B . ?›2](4h›0](B) (?›2](4h›0](B . ?›2](4h›0](B) (?›2](4i›0](B . ?›2](4i›0](B) (?›2](4j›0](B . ?›2](4i›0](B)
327 (?[2](4k[0](B . ?[2](4l[0](B) (?[2](4l[0](B . ?[2](4l[0](B) (?[2](4m[0](B . ?[2](4m[0](B) (?[2](4n[0](B . ?[2](4m[0](B))) 327 (?›2](4k›0](B . ?›2](4l›0](B) (?›2](4l›0](B . ?›2](4l›0](B) (?›2](4m›0](B . ?›2](4m›0](B) (?›2](4n›0](B . ?›2](4m›0](B)))
328 328
329 (defconst *arabic-removing-connection-from-right* 329 (defconst *arabic-removing-connection-from-right*
330 '((?[2](3/[0](B . ?[2](3.[0](B ) 330 '((?›2](3/›0](B . ?›2](3.›0](B )
331 (?[2](31[0](B . ?[2](30[0](B ) 331 (?›2](31›0](B . ?›2](30›0](B )
332 (?[2](33[0](B . ?[2](32[0](B ) 332 (?›2](33›0](B . ?›2](32›0](B )
333 (?[2](35[0](B . ?[2](34[0](B ) 333 (?›2](35›0](B . ?›2](34›0](B )
334 (?[2](4"[0](B . ?[2](4![0](B) (?[2](37[0](B . ?[2](36[0](B ) 334 (?›2](4"›0](B . ?›2](4!›0](B) (?›2](37›0](B . ?›2](36›0](B )
335 (?[2](39[0](B . ?[2](38[0](B ) 335 (?›2](39›0](B . ?›2](38›0](B )
336 (?[2](4$[0](B . ?[2](4#[0](B) (?[2](3;[0](B . ?[2](3:[0](B ) 336 (?›2](4$›0](B . ?›2](4#›0](B) (?›2](3;›0](B . ?›2](3:›0](B )
337 (?[2](3=[0](B . ?[2](3<[0](B ) 337 (?›2](3=›0](B . ?›2](3<›0](B )
338 (?[2](4&[0](B . ?[2](4%[0](B) (?[2](3?[0](B . ?[2](3>[0](B ) 338 (?›2](4&›0](B . ?›2](4%›0](B) (?›2](3?›0](B . ?›2](3>›0](B )
339 (?[2](4([0](B . ?[2](4'[0](B) (?[2](3A[0](B . ?[2](3@[0](B ) 339 (?›2](4(›0](B . ?›2](4'›0](B) (?›2](3A›0](B . ?›2](3@›0](B )
340 (?[2](4,[0](B . ?[2](4)[0](B) (?[2](4+[0](B . ?[2](4*[0](B) 340 (?›2](4,›0](B . ?›2](4)›0](B) (?›2](4+›0](B . ?›2](4*›0](B)
341 (?[2](40[0](B . ?[2](4-[0](B) (?[2](4/[0](B . ?[2](4.[0](B) 341 (?›2](40›0](B . ?›2](4-›0](B) (?›2](4/›0](B . ?›2](4.›0](B)
342 (?[2](44[0](B . ?[2](41[0](B) (?[2](43[0](B . ?[2](42[0](B) 342 (?›2](44›0](B . ?›2](41›0](B) (?›2](43›0](B . ?›2](42›0](B)
343 (?[2](3C[0](B . ?[2](3B[0](B ) 343 (?›2](3C›0](B . ?›2](3B›0](B )
344 (?[2](3E[0](B . ?[2](3D[0](B ) 344 (?›2](3E›0](B . ?›2](3D›0](B )
345 (?[2](3G[0](B . ?[2](3F[0](B ) 345 (?›2](3G›0](B . ?›2](3F›0](B )
346 (?[2](3I[0](B . ?[2](3H[0](B ) 346 (?›2](3I›0](B . ?›2](3H›0](B )
347 (?[2](48[0](B . ?[2](45[0](B) (?[2](47[0](B . ?[2](46[0](B) 347 (?›2](48›0](B . ?›2](45›0](B) (?›2](47›0](B . ?›2](46›0](B)
348 (?[2](4<[0](B . ?[2](49[0](B) (?[2](4;[0](B . ?[2](4:[0](B) 348 (?›2](4<›0](B . ?›2](49›0](B) (?›2](4;›0](B . ?›2](4:›0](B)
349 (?[2](4@[0](B . ?[2](4=[0](B) (?[2](4?[0](B . ?[2](4>[0](B) 349 (?›2](4@›0](B . ?›2](4=›0](B) (?›2](4?›0](B . ?›2](4>›0](B)
350 (?[2](4D[0](B . ?[2](4A[0](B) (?[2](4C[0](B . ?[2](4B[0](B) 350 (?›2](4D›0](B . ?›2](4A›0](B) (?›2](4C›0](B . ?›2](4B›0](B)
351 (?[2](4H[0](B . ?[2](4E[0](B) (?[2](4G[0](B . ?[2](4F[0](B) 351 (?›2](4H›0](B . ?›2](4E›0](B) (?›2](4G›0](B . ?›2](4F›0](B)
352 (?[2](4L[0](B . ?[2](4I[0](B) (?[2](4K[0](B . ?[2](4J[0](B) 352 (?›2](4L›0](B . ?›2](4I›0](B) (?›2](4K›0](B . ?›2](4J›0](B)
353 (?[2](4N[0](B . ?[2](4M[0](B) (?[2](3K[0](B . ?[2](3J[0](B ) 353 (?›2](4N›0](B . ?›2](4M›0](B) (?›2](3K›0](B . ?›2](3J›0](B )
354 (?[2](4P[0](B . ?[2](4O[0](B) (?[2](3M[0](B . ?[2](3L[0](B ) 354 (?›2](4P›0](B . ?›2](4O›0](B) (?›2](3M›0](B . ?›2](3L›0](B )
355 (?[2](4R[0](B . ?[2](4Q[0](B) (?[2](3O[0](B . ?[2](3N[0](B ) 355 (?›2](4R›0](B . ?›2](4Q›0](B) (?›2](3O›0](B . ?›2](3N›0](B )
356 (?[2](4T[0](B . ?[2](4S[0](B) (?[2](3Q[0](B . ?[2](3P[0](B ) 356 (?›2](4T›0](B . ?›2](4S›0](B) (?›2](3Q›0](B . ?›2](3P›0](B )
357 (?[2](4X[0](B . ?[2](4U[0](B) (?[2](4W[0](B . ?[2](4V[0](B) 357 (?›2](4X›0](B . ?›2](4U›0](B) (?›2](4W›0](B . ?›2](4V›0](B)
358 (?[2](4Z[0](B . ?[2](4Y[0](B) (?[2](3S[0](B . ?[2](3R[0](B ) 358 (?›2](4Z›0](B . ?›2](4Y›0](B) (?›2](3S›0](B . ?›2](3R›0](B )
359 (?[2](3W[0](B . ?[2](3T[0](B ) (?[2](3V[0](B . ?[2](3U[0](B ) 359 (?›2](3W›0](B . ?›2](3T›0](B ) (?›2](3V›0](B . ?›2](3U›0](B )
360 (?[2](4\[0](B . ?[2](4[[0](B) (?[2](3Y[0](B . ?[2](3X[0](B ) 360 (?›2](4\›0](B . ?›2](4[›0](B) (?›2](3Y›0](B . ?›2](3X›0](B )
361 (?[2](3][0](B . ?[2](3Z[0](B ) (?[2](3\[0](B . ?[2](3[[0](B ) 361 (?›2](3]›0](B . ?›2](3Z›0](B ) (?›2](3\›0](B . ?›2](3[›0](B )
362 (?[2](3_[0](B . ?[2](3^[0](B ) 362 (?›2](3_›0](B . ?›2](3^›0](B )
363 (?[2](4^[0](B . ?[2](4][0](B) 363 (?›2](4^›0](B . ?›2](4]›0](B)
364 (?[2](4`[0](B . ?[2](4_[0](B) (?[2](3a[0](B . ?[2](3`[0](B ) 364 (?›2](4`›0](B . ?›2](4_›0](B) (?›2](3a›0](B . ?›2](3`›0](B )
365 (?[2](4a[0](B . ?[2](3b[0](B ) 365 (?›2](4a›0](B . ?›2](3b›0](B )
366 (?[2](4b[0](B . ?[2](3c[0](B ) 366 (?›2](4b›0](B . ?›2](3c›0](B )
367 (?[2](4c[0](B . ?[2](3d[0](B ) 367 (?›2](4c›0](B . ?›2](3d›0](B )
368 (?[2](4d[0](B . ?[2](3e[0](B ) 368 (?›2](4d›0](B . ?›2](3e›0](B )
369 (?[2](4f[0](B . ?[2](4e[0](B) (?[2](3g[0](B . ?[2](3f[0](B ) 369 (?›2](4f›0](B . ?›2](4e›0](B) (?›2](3g›0](B . ?›2](3f›0](B )
370 (?[2](4j[0](B . ?[2](4g[0](B) (?[2](4i[0](B . ?[2](4h[0](B) 370 (?›2](4j›0](B . ?›2](4g›0](B) (?›2](4i›0](B . ?›2](4h›0](B)
371 (?[2](3i[0](B . ?[2](3h[0](B) 371 (?›2](3i›0](B . ?›2](3h›0](B)
372 (?[2](4n[0](B . ?[2](4k[0](B) (?[2](4m[0](B . ?[2](4l[0](B))) 372 (?›2](4n›0](B . ?›2](4k›0](B) (?›2](4m›0](B . ?›2](4l›0](B)))
373 373
374 (defconst *arabic-removing-connection-from-left* 374 (defconst *arabic-removing-connection-from-left*
375 '((?[2](36[0](B . ?[2](4![0](B) (?[2](37[0](B . ?[2](4"[0](B) 375 '((?›2](36›0](B . ?›2](4!›0](B) (?›2](37›0](B . ?›2](4"›0](B)
376 (?[2](3:[0](B . ?[2](4#[0](B) (?[2](3;[0](B . ?[2](4$[0](B) 376 (?›2](3:›0](B . ?›2](4#›0](B) (?›2](3;›0](B . ?›2](4$›0](B)
377 (?[2](3>[0](B . ?[2](4%[0](B) (?[2](3?[0](B . ?[2](4&[0](B) 377 (?›2](3>›0](B . ?›2](4%›0](B) (?›2](3?›0](B . ?›2](4&›0](B)
378 (?[2](3@[0](B . ?[2](4'[0](B) (?[2](3A[0](B . ?[2](4([0](B) 378 (?›2](3@›0](B . ?›2](4'›0](B) (?›2](3A›0](B . ?›2](4(›0](B)
379 (?[2](4*[0](B . ?[2](4)[0](B) (?[2](4+[0](B . ?[2](4,[0](B) 379 (?›2](4*›0](B . ?›2](4)›0](B) (?›2](4+›0](B . ?›2](4,›0](B)
380 (?[2](4.[0](B . ?[2](4-[0](B) (?[2](4/[0](B . ?[2](40[0](B) 380 (?›2](4.›0](B . ?›2](4-›0](B) (?›2](4/›0](B . ?›2](40›0](B)
381 (?[2](42[0](B . ?[2](41[0](B) (?[2](43[0](B . ?[2](44[0](B) 381 (?›2](42›0](B . ?›2](41›0](B) (?›2](43›0](B . ?›2](44›0](B)
382 (?[2](46[0](B . ?[2](45[0](B) (?[2](47[0](B . ?[2](48[0](B) 382 (?›2](46›0](B . ?›2](45›0](B) (?›2](47›0](B . ?›2](48›0](B)
383 (?[2](4:[0](B . ?[2](49[0](B) (?[2](4;[0](B . ?[2](4<[0](B) 383 (?›2](4:›0](B . ?›2](49›0](B) (?›2](4;›0](B . ?›2](4<›0](B)
384 (?[2](4>[0](B . ?[2](4=[0](B) (?[2](4?[0](B . ?[2](4@[0](B) 384 (?›2](4>›0](B . ?›2](4=›0](B) (?›2](4?›0](B . ?›2](4@›0](B)
385 (?[2](4D[0](B . ?[2](4A[0](B) (?[2](4C[0](B . ?[2](4A[0](B) 385 (?›2](4D›0](B . ?›2](4A›0](B) (?›2](4C›0](B . ?›2](4A›0](B)
386 (?[2](4F[0](B . ?[2](4E[0](B) (?[2](4G[0](B . ?[2](4H[0](B) 386 (?›2](4F›0](B . ?›2](4E›0](B) (?›2](4G›0](B . ?›2](4H›0](B)
387 (?[2](4J[0](B . ?[2](4I[0](B) (?[2](4K[0](B . ?[2](4L[0](B) 387 (?›2](4J›0](B . ?›2](4I›0](B) (?›2](4K›0](B . ?›2](4L›0](B)
388 (?[2](3J[0](B . ?[2](4M[0](B) (?[2](3K[0](B . ?[2](4N[0](B) 388 (?›2](3J›0](B . ?›2](4M›0](B) (?›2](3K›0](B . ?›2](4N›0](B)
389 (?[2](3L[0](B . ?[2](4O[0](B) (?[2](3M[0](B . ?[2](4P[0](B) 389 (?›2](3L›0](B . ?›2](4O›0](B) (?›2](3M›0](B . ?›2](4P›0](B)
390 (?[2](3N[0](B . ?[2](4Q[0](B) (?[2](3O[0](B . ?[2](4R[0](B) 390 (?›2](3N›0](B . ?›2](4Q›0](B) (?›2](3O›0](B . ?›2](4R›0](B)
391 (?[2](3P[0](B . ?[2](4S[0](B) (?[2](3Q[0](B . ?[2](4T[0](B) 391 (?›2](3P›0](B . ?›2](4S›0](B) (?›2](3Q›0](B . ?›2](4T›0](B)
392 (?[2](4V[0](B . ?[2](4U[0](B) (?[2](4W[0](B . ?[2](4X[0](B) 392 (?›2](4V›0](B . ?›2](4U›0](B) (?›2](4W›0](B . ?›2](4X›0](B)
393 (?[2](3R[0](B . ?[2](4Y[0](B) (?[2](3S[0](B . ?[2](4Z[0](B) 393 (?›2](3R›0](B . ?›2](4Y›0](B) (?›2](3S›0](B . ?›2](4Z›0](B)
394 (?[2](3U[0](B . ?[2](3T[0](B ) (?[2](3V[0](B . ?[2](3W[0](B ) 394 (?›2](3U›0](B . ?›2](3T›0](B ) (?›2](3V›0](B . ?›2](3W›0](B )
395 (?[2](3X[0](B . ?[2](4[[0](B) (?[2](3Y[0](B . ?[2](4\[0](B) 395 (?›2](3X›0](B . ?›2](4[›0](B) (?›2](3Y›0](B . ?›2](4\›0](B)
396 (?[2](3[[0](B . ?[2](3Z[0](B ) (?[2](3\[0](B . ?[2](3][0](B ) 396 (?›2](3[›0](B . ?›2](3Z›0](B ) (?›2](3\›0](B . ?›2](3]›0](B )
397 (?[2](3`[0](B . ?[2](4_[0](B) (?[2](3a[0](B . ?[2](4`[0](B) 397 (?›2](3`›0](B . ?›2](4_›0](B) (?›2](3a›0](B . ?›2](4`›0](B)
398 (?[2](4h[0](B . ?[2](4g[0](B) (?[2](4i[0](B . ?[2](4j[0](B) 398 (?›2](4h›0](B . ?›2](4g›0](B) (?›2](4i›0](B . ?›2](4j›0](B)
399 (?[2](4l[0](B . ?[2](4k[0](B) (?[2](4m[0](B . ?[2](4n[0](B))) 399 (?›2](4l›0](B . ?›2](4k›0](B) (?›2](4m›0](B . ?›2](4n›0](B)))
400 400
401 (defun arabic-make-connection nil 401 (defun arabic-make-connection nil
402 "If possible, tie the two characters around the cursor." 402 "If possible, tie the two characters around the cursor."
403 (interactive) 403 (interactive)
404 (let ((lch (assoc (visual-char-left) *arabic-adding-connection-to-right*)) 404 (let ((lch (assoc (visual-char-left) *arabic-adding-connection-to-right*))
469 469
470 (defun arabic-insert-gaaf (arg) 470 (defun arabic-insert-gaaf (arg)
471 "Insert gaaf as if it were typed from keyboard." 471 "Insert gaaf as if it were typed from keyboard."
472 (interactive "*p") 472 (interactive "*p")
473 (while (> arg 0) 473 (while (> arg 0)
474 (arabic-keyboard-insert-1-char ?[2](4k[0](B) 474 (arabic-keyboard-insert-1-char ?›2](4k›0](B)
475 (setq arg (1- arg)))) 475 (setq arg (1- arg))))
476 476
477 (defun arabic-insert-isolated-hamza (arg) 477 (defun arabic-insert-isolated-hamza (arg)
478 "Insert an isolated hamza as if it were typed from keyboard." 478 "Insert an isolated hamza as if it were typed from keyboard."
479 (interactive "*p") 479 (interactive "*p")
480 (while (> arg 0) 480 (while (> arg 0)
481 (arabic-keyboard-insert-1-char ?[2](3-[0](B) 481 (arabic-keyboard-insert-1-char ?›2](3-›0](B)
482 (setq arg (1- arg)))) 482 (setq arg (1- arg))))
483 483
484 (defun arabic-insert-madda nil 484 (defun arabic-insert-madda nil
485 "Put madda on the previous alif." 485 "Put madda on the previous alif."
486 (interactive) 486 (interactive)
487 (let ((rch (visual-char-right))) 487 (let ((rch (visual-char-right)))
488 (cond 488 (cond
489 ((eq rch ?[2](38[0](B ) (visual-replace-right-1-char ?[2](3.[0](B )) 489 ((eq rch ?›2](38›0](B ) (visual-replace-right-1-char ?›2](3.›0](B ))
490 ((eq rch ?[2](39[0](B ) (visual-replace-right-1-char ?[2](3/[0](B )) 490 ((eq rch ?›2](39›0](B ) (visual-replace-right-1-char ?›2](3/›0](B ))
491 ((eq rch ?[2](3e[0](B ) (visual-replace-right-1-char ?[2](3b[0](B )) 491 ((eq rch ?›2](3e›0](B ) (visual-replace-right-1-char ?›2](3b›0](B ))
492 ((eq rch ?[2](4d[0](B) (visual-replace-right-1-char ?[2](4a[0](B)) 492 ((eq rch ?›2](4d›0](B) (visual-replace-right-1-char ?›2](4a›0](B))
493 (t (beep))))) 493 (t (beep)))))
494 494
495 (defun arabic-insert-alif (arg) 495 (defun arabic-insert-alif (arg)
496 "Insert ARG number of alif's. 496 "Insert ARG number of alif's.
497 If the previous character is a laam, replace it with an alif+laam ligature." 497 If the previous character is a laam, replace it with an alif+laam ligature."
499 (let (rch) 499 (let (rch)
500 (while (> arg 0) 500 (while (> arg 0)
501 (setq rch (visual-char-right)) 501 (setq rch (visual-char-right))
502 (cond 502 (cond
503 ((eq last-command 'arabic-cut-connection) 503 ((eq last-command 'arabic-cut-connection)
504 (visual-insert-right-1-char ?[2](38[0](B)) 504 (visual-insert-right-1-char ?›2](38›0](B))
505 ((or (eq rch ?[2](4Y[0](B) (eq rch ?[2](3R[0](B )) 505 ((or (eq rch ?›2](4Y›0](B) (eq rch ?›2](3R›0](B ))
506 (visual-replace-right-1-char ?[2](3e[0](B )) 506 (visual-replace-right-1-char ?›2](3e›0](B ))
507 ((or (eq rch ?[2](3S[0](B ) (eq rch ?[2](4Z[0](B)) 507 ((or (eq rch ?›2](3S›0](B ) (eq rch ?›2](4Z›0](B))
508 (visual-replace-right-1-char ?[2](4d[0](B)) 508 (visual-replace-right-1-char ?›2](4d›0](B))
509 (t 509 (t
510 (visual-insert-left-1-char ?[2](38[0](B ) 510 (visual-insert-left-1-char ?›2](38›0](B )
511 (arabic-make-connection) 511 (arabic-make-connection)
512 (visual-move-to-left-1-char))) 512 (visual-move-to-left-1-char)))
513 (setq arg (1- arg))) 513 (setq arg (1- arg)))
514 (arabic-cut-connection))) 514 (arabic-cut-connection)))
515 515
520 (let (rch) 520 (let (rch)
521 (while (> arg 0) 521 (while (> arg 0)
522 (setq rch (visual-char-right)) 522 (setq rch (visual-char-right))
523 (cond 523 (cond
524 ((eq last-command 'arabic-cut-connection) 524 ((eq last-command 'arabic-cut-connection)
525 (visual-insert-right-1-char ?[2](3-[0](B)) 525 (visual-insert-right-1-char ?›2](3-›0](B))
526 ((eq rch ?[2](38[0](B ) (visual-replace-right-1-char ?[2](30[0](B )) 526 ((eq rch ?›2](38›0](B ) (visual-replace-right-1-char ?›2](30›0](B ))
527 ((eq rch ?[2](39[0](B ) (visual-replace-right-1-char ?[2](31[0](B )) 527 ((eq rch ?›2](39›0](B ) (visual-replace-right-1-char ?›2](31›0](B ))
528 ((eq rch ?[2](30[0](B ) (visual-replace-right-1-char ?[2](34[0](B )) 528 ((eq rch ?›2](30›0](B ) (visual-replace-right-1-char ?›2](34›0](B ))
529 ((eq rch ?[2](31[0](B ) (visual-replace-right-1-char ?[2](35[0](B )) 529 ((eq rch ?›2](31›0](B ) (visual-replace-right-1-char ?›2](35›0](B ))
530 ((eq rch ?[2](3^[0](B ) (visual-replace-right-1-char ?[2](32[0](B )) 530 ((eq rch ?›2](3^›0](B ) (visual-replace-right-1-char ?›2](32›0](B ))
531 ((eq rch ?[2](3_[0](B ) (visual-replace-right-1-char ?[2](33[0](B )) 531 ((eq rch ?›2](3_›0](B ) (visual-replace-right-1-char ?›2](33›0](B ))
532 ((eq rch ?[2](4_[0](B) (visual-replace-right-1-char ?[2](4![0](B)) 532 ((eq rch ?›2](4_›0](B) (visual-replace-right-1-char ?›2](4!›0](B))
533 ((eq rch ?[2](3`[0](B ) (visual-replace-right-1-char ?[2](36[0](B )) 533 ((eq rch ?›2](3`›0](B ) (visual-replace-right-1-char ?›2](36›0](B ))
534 ((eq rch ?[2](3a[0](B ) (visual-replace-right-1-char ?[2](37[0](B )) 534 ((eq rch ?›2](3a›0](B ) (visual-replace-right-1-char ?›2](37›0](B ))
535 ((eq rch ?[2](4`[0](B) (visual-replace-right-1-char ?[2](4"[0](B)) 535 ((eq rch ?›2](4`›0](B) (visual-replace-right-1-char ?›2](4"›0](B))
536 ((eq rch ?[2](4][0](B) (visual-replace-right-1-char ?[2](4![0](B)) 536 ((eq rch ?›2](4]›0](B) (visual-replace-right-1-char ?›2](4!›0](B))
537 ((eq rch ?[2](4^[0](B) (visual-replace-right-1-char ?[2](4"[0](B)) 537 ((eq rch ?›2](4^›0](B) (visual-replace-right-1-char ?›2](4"›0](B))
538 ((eq rch ?[2](3e[0](B ) (visual-replace-right-1-char ?[2](3c[0](B )) 538 ((eq rch ?›2](3e›0](B ) (visual-replace-right-1-char ?›2](3c›0](B ))
539 ((eq rch ?[2](4d[0](B) (visual-replace-right-1-char ?[2](4b[0](B)) 539 ((eq rch ?›2](4d›0](B) (visual-replace-right-1-char ?›2](4b›0](B))
540 ((eq rch ?[2](3c[0](B ) (visual-replace-right-1-char ?[2](3d[0](B )) 540 ((eq rch ?›2](3c›0](B ) (visual-replace-right-1-char ?›2](3d›0](B ))
541 ((eq rch ?[2](4b[0](B) (visual-replace-right-1-char ?[2](4c[0](B)) 541 ((eq rch ?›2](4b›0](B) (visual-replace-right-1-char ?›2](4c›0](B))
542 (t (arabic-cut-connection) 542 (t (arabic-cut-connection)
543 (visual-insert-right-1-char ?[2](3-[0](B))) 543 (visual-insert-right-1-char ?›2](3-›0](B)))
544 (setq arg (1- arg))))) 544 (setq arg (1- arg)))))
545 545
546 (defun arabic-toggle-input-char nil 546 (defun arabic-toggle-input-char nil
547 "Toggle Arabic key input and ASCII key input." 547 "Toggle Arabic key input and ASCII key input."
548 (interactive) 548 (interactive)
549 (if arabic-input-arabic-char 549 (if arabic-input-arabic-char
550 (setq arabic-input-arabic-char nil 550 (setq arabic-input-arabic-char nil
551 arabic-mode-indicator " Arabic") 551 arabic-mode-indicator " Arabic")
552 (setq arabic-input-arabic-char t 552 (setq arabic-input-arabic-char t
553 arabic-mode-indicator " [2](3=a:GJ[0](B")) 553 arabic-mode-indicator " ›2](3=a:GJ›0](B"))
554 (redraw-modeline t)) 554 (redraw-modeline t))
555 555
556 (defun arabic-newline (arg) 556 (defun arabic-newline (arg)
557 "Newline for arabic-mode." 557 "Newline for arabic-mode."
558 (interactive "*p") 558 (interactive "*p")
669 (if display-direction 669 (if display-direction
670 (arabic-backward-kill-word arg) 670 (arabic-backward-kill-word arg)
671 (arabic-kill-word arg))) 671 (arabic-kill-word arg)))
672 672
673 ;;; 673 ;;;
674 (provide 'arabic) 674 (provide 'language/arabic-util)
675
675 ;;; arabic-util.el ends here 676 ;;; arabic-util.el ends here