annotate lisp/mule/arabic.el @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents
children 5a88923fcbfe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
70
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
1 ;;; arabic.el --- minor mode for editing Arabic.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
2 ;; Copyright (C) 1994 Free Software Foundation, Inc.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
3
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
4 ;; This file is part of XEmacs.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
5
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
6 ;; XEmacs is free software; you can redistribute it and/or modify it
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
7 ;; under the terms of the GNU General Public License as published by
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
8 ;; the Free Software Foundation; either version 2, or (at your option)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
9 ;; any later version.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
10
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
11 ;; XEmacs is distributed in the hope that it will be useful, but
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
12 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
14 ;; General Public License for more details.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
15
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
16 ;; You should have received a copy of the GNU General Public License
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
17 ;; along with XEmacs; see the file COPYING. If not, write to the
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
18 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
19 ;; Boston, MA 02111-1307, USA.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
20
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
21 ;;; Synched up with: Mule 2.3.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
22
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
23 ;;; 94.6.13 created for Mule Ver.1.1 by Takahashi N. <ntakahas@etl.go.jp>
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
24
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
25 (require 'visual-mode)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
26
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
27 (defvar arabic-mode-indicator " [2](3=a:GJ[0](B"
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
28 "String displayed in mode-line.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
29 \" Arabic\" for Arabic keyboard input, \" [2](3=a:GJ[0](B\".")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
30
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
31 (make-variable-buffer-local 'arabic-mode-indicator)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
32
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
33 ;;;###autoload
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
34 (defvar arabic-mode nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
35 "Non-nil if in arabic-mode.")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
36
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
37 (make-variable-buffer-local 'arabic-mode)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
38
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
39 (if (not (assq 'arabic-mode minor-mode-alist))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
40 (setq minor-mode-alist
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
41 (cons '(arabic-mode arabic-mode-indicator) minor-mode-alist)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
42
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
43 (define-key global-map [(meta \\)] 'arabic-mode)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
44
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
45 (defvar arabic-input-arabic-char t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
46 "Non-nil if key input is Arabic. Nil if key input is ASCII.")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
47
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
48 (make-variable-buffer-local 'arabic-input-arabic-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
49
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
50 (defvar arabic-input-keymap 'arabic-keymap-0
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
51 "Specify which input table is used for Arabic input. Should be on of:
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
52 arabic-keymap-0 (default),
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
53 arabic-keymap-1 (Farsi standard), or
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
54 arabic-keymap-2 (Microsoft Arabic).")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
55
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
56 (defvar arabic-translate-table
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
57 (cond
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
58 ((eq arabic-input-keymap 'arabic-keymap-0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
59 [?[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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
60 ?(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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
61 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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
62 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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
63 ?[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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
64 ?[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])
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
65 ((eq arabic-input-keymap 'arabic-keymap-1)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
66 [?[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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
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](4U[0](B ?[2](3*[0](B nil ?[2](3+[0](B ?[2](3)[0](B
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
68 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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
69 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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
70 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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
71 ?[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 ])
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
72 (t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
73 [?[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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
75 ?@ 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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
76 ?[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 ?^ ?_
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
77 ?[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
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
78 ?[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 ])))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
79
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
80 (defvar arabic-mode-map
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
81 (let ((map (make-keymap)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
82 (substitute-key-definition 'self-insert-command
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
83 'arabic-self-insert-command
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
84 map global-map)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
85
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
86 (define-key map [(control c) (control c)] 'arabic-mode)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
87 (define-key map [(control d)] 'arabic-delete-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
88 (define-key map [(control k)] 'arabic-kill-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
89 (define-key map [(control m)] 'arabic-newline)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
90 (define-key map [(control o)] 'arabic-open-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
91 (define-key map [(control w)] 'arabic-kill-region)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
92 (define-key map [(control y)] 'arabic-yank)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
93 (define-key map [delete] 'arabic-backward-delete-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
94 (define-key map [(meta d)] 'arabic-delete-word)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
95 (define-key map [(meta y)] 'arabic-yank-pop)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
96 (define-key map [(meta z)] 'arabic-help)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
97 (define-key map [(meta \\)] 'arabic-toggle-input-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
98 (define-key map [(meta delete)] 'arabic-backward-kill-word)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
99
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
100 (define-key map [(control n)] 'visual-next-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
101 (define-key map [(control p)] 'visual-previous-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
102 (define-key map [(meta <)] 'visual-beginning-of-buffer)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
103 (define-key map [(meta >)] 'visual-end-of-buffer)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
104 (define-key map [up] 'visual-previous-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
105 (define-key map [down] 'visual-next-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
106 (define-key map [home] 'visual-beginning-of-buffer)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
107 (define-key map [end] 'visual-end-of-buffer)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
108 (define-key map [left] 'visual-move-to-left-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
109 (define-key map [right] 'visual-move-to-right-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
110 (define-key map [(meta left)] 'visual-move-to-left-word)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
111 (define-key map [(meta right)] 'visual-move-to-right-word)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
112
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
113 (if visual-use-lr-commands
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
114 (progn
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
115 (define-key map [(control a)] 'visual-left-end-of-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
116 (define-key map [(control b)] 'visual-move-to-left-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
117 (define-key map [(control e)] 'visual-right-end-of-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
118 (define-key map [(control f)] 'visual-move-to-right-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
119 (define-key map [(meta b)] 'visual-move-to-left-word)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
120 (define-key map [(meta f)] 'visual-move-to-right-word))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
121 (define-key map [(control a)] 'visual-beginning-of-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
122 (define-key map [(control b)] 'visual-backward-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
123 (define-key map [(control e)] 'visual-end-of-line)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
124 (define-key map [(control f)] 'visual-forward-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
125 (define-key map [(meta b)] 'visual-backward-word)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
126 (define-key map [(meta f)] 'visual-forward-word))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
127
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
128 (cond
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
129 ((eq arabic-input-keymap 'arabic-keymap-0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
130 (define-key map [?~] 'arabic-insert-madda)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
131 (define-key map [?'] 'arabic-insert-hamza)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
132 (define-key map [?a] 'arabic-insert-alif)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
133 (define-key map [?_] 'arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
134 (define-key map [?|] 'arabic-cut-connection))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
135 ((eq arabic-input-keymap 'arabic-keymap-1)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
136 (define-key map [?~] 'arabic-insert-madda)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
137 (define-key map [?'] 'arabic-insert-hamza)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
138 (define-key map [?a] 'arabic-insert-alif)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
139 (define-key map [?_] 'arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
140 (define-key map [?|] 'arabic-cut-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
141 (define-key map [(alt \;)] 'arabic-insert-gaaf)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
142 (define-key map [(alt v)] 'arabic-insert-isolated-hamza))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
143 (t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
144 (define-key map [(alt z)] 'arabic-insert-madda)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
145 (define-key map [(alt x)] 'arabic-insert-hamza)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
146 (define-key map [(alt h)] 'arabic-insert-alif)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
147 (define-key map [(alt _)] 'arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
148 (define-key map [(alt |)] 'arabic-cut-connection)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
149
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
150 map)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
151 "minor-mode-keymap for arabic-mode.")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
152
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
153 (if (not (assq 'arabic-mode minor-mode-map-alist))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
154 (setq minor-mode-map-alist
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
155 (cons (cons 'arabic-mode arabic-mode-map) minor-mode-map-alist)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
156
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
157 (defvar arabic-help-string
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
158 (cond
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
159 ((eq arabic-input-keymap 'arabic-keymap-0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
160 "\
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
161 Keymap in Arabic-mode
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
162
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
163 +----------------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
164 |! [2](3"[0](B |@ |# |$ |% |^ |& |* |( [2](3#[0](B |) [2](3$[0](B |_ |+ |~ |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
165 |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|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
166 +----------------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
167 |Q |W |E |R |T [2](4E[0](B|Y |U |I |O |P |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
168 |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|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
169 +--------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
170 |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 |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
171 |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 |' |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
172 +------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
173 |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 |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
174 |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|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
175 +-------------------------------------------------+")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
176
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
177 ((eq arabic-input-keymap 'arabic-keymap-1)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
178 "\
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
179 Keymap in Arabic-mode +--------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
180 | ALT SHIFT|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
181 +-------------------------------------------------+ |ASCII ARABIC|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
182 | [2](3"[0](B | | | | | | | | [2](3#[0](B | [2](3$[0](B | +--------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
183 |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 |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
184 +-------------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
185 | | | | | | | | | | | | |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
186 |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|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
187 +-----------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
188 | | | | [2](4e[0](B| [2](3.[0](B | | | | |[2](4k[0](B [2](3'[0](B|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
189 |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|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
190 +---------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
191 | | | |[2](3-[0](B [2](30[0](B | [2](3h[0](B | | | [2](3*[0](B | [2](3+[0](B | [2](3)[0](B |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
192 |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 |/ |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
193 +-------------------------------------------------+")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
194
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
195 (t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
196 "\
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
197 +-----------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
198 |S-ASCII S-Arabic|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
199 | ASCII Arabic | +----+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
200 +-----------------+ || ||
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
201 |\\ \\|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
202 +-----------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
203 |! [2](3"[0](B|@ @|# #|$ $|% %|^ ^|& &|* *|( [2](3#[0](B|) [2](3$[0](B|_ _|+ +|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
204 |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|- -|= =|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
205 +-------------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
206 |Q |W |E |R |T [2](3d[0](B|Y [2](34[0](B|U '|I |O |P [2](3([0](B|{ <|} >|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
207 | [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|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
208 +-------------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
209 |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 |
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
210 | [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|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
211 +-----------------------------------------------------------+
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
212 |Z ~|X |C {|V }|B [2](3b[0](B|N [2](3.[0](B|M `|< ,|> [2](3&[0](B|? [2](3)[0](B|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
213 | [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|
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
214 +-------------------------------------------------+"))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
215
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
216 "Document shown by arabic-help (M-z).")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
217
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
218 ;;;###autoload
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
219 (defun arabic-mode (&optional arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
220 "Toggle arabic-mode. With ARG, turn arabic-mode on iff ARG is positive."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
221 (interactive "P")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
222 (if (null arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
223 (if arabic-mode (exit-arabic-mode) (enter-arabic-mode))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
224 (if (> (prefix-numeric-value arg) 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
225 (enter-arabic-mode)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
226 (exit-arabic-mode))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
227
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
228 (defun enter-arabic-mode nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
229 "Enter arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
230 (interactive)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
231 (if (not arabic-mode)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
232 (progn
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
233 (setq arabic-mode t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
234 arabic-input-arabic-char t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
235 arabic-mode-indicator " [2](3=a:GJ[0](B")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
236 (redraw-modeline t)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
237 (message "M-z to display arabic keymap.")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
238 (run-hooks 'arabic-mode-hooks))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
239
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
240 (defun exit-arabic-mode nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
241 "Exit arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
242 (interactive)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
243 (if arabic-mode
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
244 (progn
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
245 (setq arabic-mode nil)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
246 (redraw-modeline t))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
247
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
248 (defconst *arabic-adding-connection-to-right*
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
249 '((?[2](3.[0](B . ?[2](3/[0](B ) (?[2](3/[0](B . ?[2](3/[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
250 (?[2](30[0](B . ?[2](31[0](B ) (?[2](31[0](B . ?[2](31[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
251 (?[2](32[0](B . ?[2](33[0](B ) (?[2](33[0](B . ?[2](33[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
252 (?[2](34[0](B . ?[2](35[0](B ) (?[2](35[0](B . ?[2](35[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
253 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
254 (?[2](36[0](B . ?[2](37[0](B ) (?[2](37[0](B . ?[2](37[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
255 (?[2](38[0](B . ?[2](39[0](B ) (?[2](39[0](B . ?[2](39[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
256 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
257 (?[2](3<[0](B . ?[2](3=[0](B ) (?[2](3=[0](B . ?[2](3=[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
258 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
259 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
260 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
261 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
262 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
263 (?[2](3B[0](B . ?[2](3C[0](B ) (?[2](3C[0](B . ?[2](3C[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
264 (?[2](3D[0](B . ?[2](3E[0](B ) (?[2](3E[0](B . ?[2](3E[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
265 (?[2](3F[0](B . ?[2](3G[0](B ) (?[2](3G[0](B . ?[2](3G[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
266 (?[2](3H[0](B . ?[2](3I[0](B ) (?[2](3I[0](B . ?[2](3I[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
267 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
268 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
269 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
270 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
271 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
272 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
273 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
274 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
275 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
276 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
277 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
278 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
279 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
280 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
281 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
282 (?[2](3^[0](B . ?[2](3_[0](B ) (?[2](3_[0](B . ?[2](3_[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
283 (?[2](4][0](B . ?[2](4^[0](B) (?[2](4^[0](B . ?[2](4^[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
284 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
285 (?[2](3b[0](B . ?[2](4a[0](B) (?[2](4a[0](B . ?[2](4a[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
286 (?[2](3c[0](B . ?[2](4b[0](B) (?[2](4b[0](B . ?[2](4b[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
287 (?[2](3d[0](B . ?[2](4c[0](B) (?[2](4c[0](B . ?[2](4c[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
288 (?[2](3e[0](B . ?[2](4d[0](B) (?[2](4d[0](B . ?[2](4d[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
289 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
290 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
291 (?[2](3h[0](B . ?[2](3i[0](B ) (?[2](3i[0](B . ?[2](3i[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
292 (?[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)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
293
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
294 (defconst *arabic-adding-connection-to-left*
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
295 '((?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
296 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
297 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
298 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
299 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
300 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
301 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
302 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
303 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
304 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
305 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
306 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
307 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
308 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
309 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
310 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
311 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
312 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
313 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
314 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
315 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
316 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
317 (?[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 )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
318 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
319 (?[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)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
320 (?[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)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
321
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
322 (defconst *arabic-removing-connection-from-right*
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
323 '((?[2](3/[0](B . ?[2](3.[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
324 (?[2](31[0](B . ?[2](30[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
325 (?[2](33[0](B . ?[2](32[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
326 (?[2](35[0](B . ?[2](34[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
327 (?[2](4"[0](B . ?[2](4![0](B) (?[2](37[0](B . ?[2](36[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
328 (?[2](39[0](B . ?[2](38[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
329 (?[2](4$[0](B . ?[2](4#[0](B) (?[2](3;[0](B . ?[2](3:[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
330 (?[2](3=[0](B . ?[2](3<[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
331 (?[2](4&[0](B . ?[2](4%[0](B) (?[2](3?[0](B . ?[2](3>[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
332 (?[2](4([0](B . ?[2](4'[0](B) (?[2](3A[0](B . ?[2](3@[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
333 (?[2](4,[0](B . ?[2](4)[0](B) (?[2](4+[0](B . ?[2](4*[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
334 (?[2](40[0](B . ?[2](4-[0](B) (?[2](4/[0](B . ?[2](4.[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
335 (?[2](44[0](B . ?[2](41[0](B) (?[2](43[0](B . ?[2](42[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
336 (?[2](3C[0](B . ?[2](3B[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
337 (?[2](3E[0](B . ?[2](3D[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
338 (?[2](3G[0](B . ?[2](3F[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
339 (?[2](3I[0](B . ?[2](3H[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
340 (?[2](48[0](B . ?[2](45[0](B) (?[2](47[0](B . ?[2](46[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
341 (?[2](4<[0](B . ?[2](49[0](B) (?[2](4;[0](B . ?[2](4:[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
342 (?[2](4@[0](B . ?[2](4=[0](B) (?[2](4?[0](B . ?[2](4>[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
343 (?[2](4D[0](B . ?[2](4A[0](B) (?[2](4C[0](B . ?[2](4B[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
344 (?[2](4H[0](B . ?[2](4E[0](B) (?[2](4G[0](B . ?[2](4F[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
345 (?[2](4L[0](B . ?[2](4I[0](B) (?[2](4K[0](B . ?[2](4J[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
346 (?[2](4N[0](B . ?[2](4M[0](B) (?[2](3K[0](B . ?[2](3J[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
347 (?[2](4P[0](B . ?[2](4O[0](B) (?[2](3M[0](B . ?[2](3L[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
348 (?[2](4R[0](B . ?[2](4Q[0](B) (?[2](3O[0](B . ?[2](3N[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
349 (?[2](4T[0](B . ?[2](4S[0](B) (?[2](3Q[0](B . ?[2](3P[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
350 (?[2](4X[0](B . ?[2](4U[0](B) (?[2](4W[0](B . ?[2](4V[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
351 (?[2](4Z[0](B . ?[2](4Y[0](B) (?[2](3S[0](B . ?[2](3R[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
352 (?[2](3W[0](B . ?[2](3T[0](B ) (?[2](3V[0](B . ?[2](3U[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
353 (?[2](4\[0](B . ?[2](4[[0](B) (?[2](3Y[0](B . ?[2](3X[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
354 (?[2](3][0](B . ?[2](3Z[0](B ) (?[2](3\[0](B . ?[2](3[[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
355 (?[2](3_[0](B . ?[2](3^[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
356 (?[2](4^[0](B . ?[2](4][0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
357 (?[2](4`[0](B . ?[2](4_[0](B) (?[2](3a[0](B . ?[2](3`[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
358 (?[2](4a[0](B . ?[2](3b[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
359 (?[2](4b[0](B . ?[2](3c[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
360 (?[2](4c[0](B . ?[2](3d[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
361 (?[2](4d[0](B . ?[2](3e[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
362 (?[2](4f[0](B . ?[2](4e[0](B) (?[2](3g[0](B . ?[2](3f[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
363 (?[2](4j[0](B . ?[2](4g[0](B) (?[2](4i[0](B . ?[2](4h[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
364 (?[2](3i[0](B . ?[2](3h[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
365 (?[2](4n[0](B . ?[2](4k[0](B) (?[2](4m[0](B . ?[2](4l[0](B)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
366
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
367 (defconst *arabic-removing-connection-from-left*
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
368 '((?[2](36[0](B . ?[2](4![0](B) (?[2](37[0](B . ?[2](4"[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
369 (?[2](3:[0](B . ?[2](4#[0](B) (?[2](3;[0](B . ?[2](4$[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
370 (?[2](3>[0](B . ?[2](4%[0](B) (?[2](3?[0](B . ?[2](4&[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
371 (?[2](3@[0](B . ?[2](4'[0](B) (?[2](3A[0](B . ?[2](4([0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
372 (?[2](4*[0](B . ?[2](4)[0](B) (?[2](4+[0](B . ?[2](4,[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
373 (?[2](4.[0](B . ?[2](4-[0](B) (?[2](4/[0](B . ?[2](40[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
374 (?[2](42[0](B . ?[2](41[0](B) (?[2](43[0](B . ?[2](44[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
375 (?[2](46[0](B . ?[2](45[0](B) (?[2](47[0](B . ?[2](48[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
376 (?[2](4:[0](B . ?[2](49[0](B) (?[2](4;[0](B . ?[2](4<[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
377 (?[2](4>[0](B . ?[2](4=[0](B) (?[2](4?[0](B . ?[2](4@[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
378 (?[2](4D[0](B . ?[2](4A[0](B) (?[2](4C[0](B . ?[2](4A[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
379 (?[2](4F[0](B . ?[2](4E[0](B) (?[2](4G[0](B . ?[2](4H[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
380 (?[2](4J[0](B . ?[2](4I[0](B) (?[2](4K[0](B . ?[2](4L[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
381 (?[2](3J[0](B . ?[2](4M[0](B) (?[2](3K[0](B . ?[2](4N[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
382 (?[2](3L[0](B . ?[2](4O[0](B) (?[2](3M[0](B . ?[2](4P[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
383 (?[2](3N[0](B . ?[2](4Q[0](B) (?[2](3O[0](B . ?[2](4R[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
384 (?[2](3P[0](B . ?[2](4S[0](B) (?[2](3Q[0](B . ?[2](4T[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
385 (?[2](4V[0](B . ?[2](4U[0](B) (?[2](4W[0](B . ?[2](4X[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
386 (?[2](3R[0](B . ?[2](4Y[0](B) (?[2](3S[0](B . ?[2](4Z[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
387 (?[2](3U[0](B . ?[2](3T[0](B ) (?[2](3V[0](B . ?[2](3W[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
388 (?[2](3X[0](B . ?[2](4[[0](B) (?[2](3Y[0](B . ?[2](4\[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
389 (?[2](3[[0](B . ?[2](3Z[0](B ) (?[2](3\[0](B . ?[2](3][0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
390 (?[2](3`[0](B . ?[2](4_[0](B) (?[2](3a[0](B . ?[2](4`[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
391 (?[2](4h[0](B . ?[2](4g[0](B) (?[2](4i[0](B . ?[2](4j[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
392 (?[2](4l[0](B . ?[2](4k[0](B) (?[2](4m[0](B . ?[2](4n[0](B)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
393
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
394 (defun arabic-make-connection nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
395 "If possible, tie the two characters around the cursor."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
396 (interactive)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
397 (let ((lch (assoc (visual-char-left) *arabic-adding-connection-to-right*))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
398 (rch (assoc (visual-char-right) *arabic-adding-connection-to-left*)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
399 (if (not (and lch rch))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
400 (arabic-cut-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
401 (visual-replace-left-1-char (cdr lch))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
402 (visual-replace-right-1-char (cdr rch)))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
403
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
404 (defun arabic-cut-connection nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
405 "Remove the connection between the two characters around the cursor, if any."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
406 (interactive)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
407 (let
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
408 ((lch (assoc (visual-char-left) *arabic-removing-connection-from-right*))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
409 (rch (assoc (visual-char-right) *arabic-removing-connection-from-left*)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
410 (if lch
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
411 (visual-replace-left-1-char (cdr lch)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
412 (if rch
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
413 (visual-replace-right-1-char (cdr rch)))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
414
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
415 (defun arabic-insert-char (ch arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
416 "Insert ARG (2nd arg; > 0) number of CHs (1st arg; character) around
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
417 visual point.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
418 If CH is l2r, inserted on the left. Otherwise, on the right."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
419 (while (> arg 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
420 (arabic-insert-1-char ch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
421 (setq arg (1- arg))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
422
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
423 (defun arabic-insert-1-char (ch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
424 "Insert CH (1st arg; character) around visual point.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
425 If CH is l2r, inserted on the left. Otherwise, on the right."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
426 (if (= (visual-char-direction ch) 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
427 ; if visual-char-direction = 0, always disjoint.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
428 (progn
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
429 (arabic-cut-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
430 (visual-insert-left-1-char ch))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
431 (visual-insert-left-1-char ch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
432 (arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
433 (visual-move-to-left-1-char)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
434 (arabic-make-connection)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
435
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
436 (defun arabic-self-insert-command (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
437 "Self-insert-command for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
438 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
439 (let ((ch last-command-char))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
440 (if arabic-input-arabic-char
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
441 (setq ch (aref arabic-translate-table (- ch 32))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
442 (if (null ch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
443 (beep)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
444 (while (> arg 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
445 (arabic-keyboard-insert-1-char ch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
446 (setq arg (1- arg))))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
447
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
448 (defun arabic-keyboard-insert-1-char (ch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
449 "Insert CH (1st arg; Arabic character) at visual cursor position.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
450 if last-command is arabic-cut-connection, CH will not connected to the
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
451 right adjacent character (but connected to the left, if possible)."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
452 (let ((rch (visual-char-right)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
453 (cond
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
454 ((= (visual-char-direction ch) 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
455 (arabic-cut-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
456 (visual-insert-left-1-char ch))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
457 ((eq last-command 'arabic-cut-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
458 (visual-insert-right-1-char ch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
459 (arabic-make-connection))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
460 (t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
461 (arabic-insert-1-char ch)))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
462
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
463 (defun arabic-insert-gaaf (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
464 "Insert gaaf as if it were typed from keyboard."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
465 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
466 (while (> arg 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
467 (arabic-keyboard-insert-1-char ?[2](4k[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
468 (setq arg (1- arg))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
469
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
470 (defun arabic-insert-isolated-hamza (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
471 "Insert an isolated hamza as if it were typed from keyboard."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
472 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
473 (while (> arg 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
474 (arabic-keyboard-insert-1-char ?[2](3-[0](B)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
475 (setq arg (1- arg))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
476
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
477 (defun arabic-insert-madda nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
478 "Put madda on the previous alif."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
479 (interactive)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
480 (let ((rch (visual-char-right)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
481 (cond
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
482 ((eq rch ?[2](38[0](B ) (visual-replace-right-1-char ?[2](3.[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
483 ((eq rch ?[2](39[0](B ) (visual-replace-right-1-char ?[2](3/[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
484 ((eq rch ?[2](3e[0](B ) (visual-replace-right-1-char ?[2](3b[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
485 ((eq rch ?[2](4d[0](B) (visual-replace-right-1-char ?[2](4a[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
486 (t (beep)))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
487
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
488 (defun arabic-insert-alif (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
489 "Insert ARG number of alif's.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
490 If the previous character is a laam, replace it with an alif+laam ligature."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
491 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
492 (let (rch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
493 (while (> arg 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
494 (setq rch (visual-char-right))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
495 (cond
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
496 ((eq last-command 'arabic-cut-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
497 (visual-insert-right-1-char ?[2](38[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
498 ((or (eq rch ?[2](4Y[0](B) (eq rch ?[2](3R[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
499 (visual-replace-right-1-char ?[2](3e[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
500 ((or (eq rch ?[2](3S[0](B ) (eq rch ?[2](4Z[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
501 (visual-replace-right-1-char ?[2](4d[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
502 (t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
503 (visual-insert-left-1-char ?[2](38[0](B )
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
504 (arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
505 (visual-move-to-left-1-char)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
506 (setq arg (1- arg)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
507 (arabic-cut-connection)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
508
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
509 (defun arabic-insert-hamza (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
510 "Insert ARG number of hamza's.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
511 Put it on/under previous characters, if possible."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
512 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
513 (let (rch)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
514 (while (> arg 0)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
515 (setq rch (visual-char-right))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
516 (cond
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
517 ((eq last-command 'arabic-cut-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
518 (visual-insert-right-1-char ?[2](3-[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
519 ((eq rch ?[2](38[0](B ) (visual-replace-right-1-char ?[2](30[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
520 ((eq rch ?[2](39[0](B ) (visual-replace-right-1-char ?[2](31[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
521 ((eq rch ?[2](30[0](B ) (visual-replace-right-1-char ?[2](34[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
522 ((eq rch ?[2](31[0](B ) (visual-replace-right-1-char ?[2](35[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
523 ((eq rch ?[2](3^[0](B ) (visual-replace-right-1-char ?[2](32[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
524 ((eq rch ?[2](3_[0](B ) (visual-replace-right-1-char ?[2](33[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
525 ((eq rch ?[2](4_[0](B) (visual-replace-right-1-char ?[2](4![0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
526 ((eq rch ?[2](3`[0](B ) (visual-replace-right-1-char ?[2](36[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
527 ((eq rch ?[2](3a[0](B ) (visual-replace-right-1-char ?[2](37[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
528 ((eq rch ?[2](4`[0](B) (visual-replace-right-1-char ?[2](4"[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
529 ((eq rch ?[2](4][0](B) (visual-replace-right-1-char ?[2](4![0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
530 ((eq rch ?[2](4^[0](B) (visual-replace-right-1-char ?[2](4"[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
531 ((eq rch ?[2](3e[0](B ) (visual-replace-right-1-char ?[2](3c[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
532 ((eq rch ?[2](4d[0](B) (visual-replace-right-1-char ?[2](4b[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
533 ((eq rch ?[2](3c[0](B ) (visual-replace-right-1-char ?[2](3d[0](B ))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
534 ((eq rch ?[2](4b[0](B) (visual-replace-right-1-char ?[2](4c[0](B))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
535 (t (arabic-cut-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
536 (visual-insert-right-1-char ?[2](3-[0](B)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
537 (setq arg (1- arg)))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
538
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
539 (defun arabic-toggle-input-char nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
540 "Toggle Arabic key input and ASCII key input."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
541 (interactive)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
542 (if arabic-input-arabic-char
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
543 (setq arabic-input-arabic-char nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
544 arabic-mode-indicator " Arabic")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
545 (setq arabic-input-arabic-char t
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
546 arabic-mode-indicator " [2](3=a:GJ[0](B"))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
547 (redraw-modeline t))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
548
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
549 (defun arabic-newline (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
550 "Newline for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
551 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
552 (arabic-insert-char ?\n arg))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
553
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
554 (defun arabic-open-line (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
555 "Openline for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
556 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
557 (arabic-insert-char ?\n arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
558 (visual-backward-char arg))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
559
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
560 (defun arabic-delete-char (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
561 "Delete ARG (1st arg; integer) chars visually after visual point.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
562 After that, Arabic ligature is performed."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
563 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
564 (visual-delete-char arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
565 (arabic-make-connection))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
566
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
567 (defun arabic-backward-delete-char (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
568 "Delete ARG (1st arg; integer) chars visually before visual point.
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
569 After that, Arabic ligature is performed."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
570 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
571 (visual-backward-delete-char arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
572 (arabic-make-connection))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
573
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
574 (defun arabic-kill-region (beg end)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
575 "Kill-region command for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
576 (interactive "r")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
577 (if (or (and buffer-read-only (not inhibit-read-only))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
578 (text-property-not-all beg end 'read-only nil))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
579 (visual-kill-region beg end)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
580 (visual-kill-region beg end)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
581 (arabic-make-connection)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
582
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
583 (defun arabic-kill-word (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
584 "Kill-word command for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
585 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
586 (visual-kill-word arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
587 (arabic-make-connection))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
588
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
589 (defun arabic-backward-kill-word (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
590 "Backword-ill-word command for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
591 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
592 (visual-backward-kill-word arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
593 (arabic-make-connection))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
594
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
595 (defun arabic-kill-line (&optional arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
596 "Kill-line command for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
597 (interactive "*P")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
598 (visual-kill-line arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
599 (arabic-make-connection))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
600
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
601 (defun arabic-yank (&optional arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
602 "yank command for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
603 (interactive "*P")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
604 (visual-yank arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
605 (let ((p1 (point)) (p2 (mark t)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
606 (arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
607 (goto-char p2)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
608 (arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
609 (goto-char p1)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
610 (set-marker (mark-marker) p2 (current-buffer))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
611 nil))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
612
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
613 (defun arabic-yank-pop (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
614 "yank-pop command for arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
615 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
616 (visual-yank-pop arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
617 (let ((p1 (point)) (p2 (mark t)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
618 (arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
619 (goto-char p2)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
620 (arabic-make-connection)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
621 (goto-char p1)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
622 (set-marker (mark-marker) p2 (current-buffer))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
623 nil))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
624
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
625 (defun arabic-help nil
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
626 "Display keymap in Arabic-mode."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
627 (interactive)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
628 (let ((arabic-help-buffer (get-buffer-create "*Help*")))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
629 (set-buffer arabic-help-buffer)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
630 (erase-buffer)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
631 (insert arabic-help-string)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
632 (goto-char (point-min))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
633 (display-buffer (current-buffer))))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
634
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
635
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
636 ;; arabic LR commands
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
637
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
638 (defun arabic-delete-left-char (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
639 "Kill N (1st arg; integer) characters on the left of visual point."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
640 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
641 (if display-direction
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
642 (arabic-delete-char arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
643 (arabic-backward-delete-char arg)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
644
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
645 (defun arabic-delete-right-char (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
646 "Kill N (1st arg; integer) characters on the right of visual point."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
647 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
648 (if display-direction
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
649 (arabic-backward-delete-char arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
650 (arabic-delete-char arg)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
651
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
652 (defun arabic-kill-left-word (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
653 "Kill N (1st arg; integer) words on the left of visual point."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
654 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
655 (if display-direction
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
656 (arabic-kill-word arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
657 (arabic-backward-kill-word arg)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
658
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
659 (defun arabic-kill-right-word (arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
660 "Kill N (1st arg; integer) words on the right of visual point."
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
661 (interactive "*p")
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
662 (if display-direction
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
663 (arabic-backward-kill-word arg)
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
664 (arabic-kill-word arg)))
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
665
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
666 ;;;
131b0175ea99 Import from CVS: tag r20-0b30
cvs
parents:
diff changeset
667 (provide 'arabic)