aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenichi Handa2009-12-12 02:20:34 +0000
committerKenichi Handa2009-12-12 02:20:34 +0000
commit3ff3655cac0932fa5932aa2fe35f4a9b37b73a51 (patch)
tree9df006297965db366d508821bdde040444821da4
parentd0db2ec8c0e5e56205d17737eacb3ce8bd36b36b (diff)
downloademacs-3ff3655cac0932fa5932aa2fe35f4a9b37b73a51.tar.gz
emacs-3ff3655cac0932fa5932aa2fe35f4a9b37b73a51.zip
(indian-compose-regexp): New function.
(malayalam-composable-pattern): Fix the pattern. (composition-function-table): Set malayalam-composable-pattern for Malayalam characters.
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/language/indian.el38
2 files changed, 38 insertions, 7 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 0afa5ecf453..c01c77b9c92 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12009-12-12 Kenichi Handa <handa@m17n.org>
2
3 * language/indian.el (indian-compose-regexp): New function.
4 (malayalam-composable-pattern): Fix the pattern.
5 (composition-function-table): Set malayalam-composable-pattern for
6 Malayalam characters.
7
12009-12-11 Chong Yidong <cyd@stupidchicken.com> 82009-12-11 Chong Yidong <cyd@stupidchicken.com>
2 9
3 * progmodes/bug-reference.el (bug-reference-map): Bind mouse-2 10 * progmodes/bug-reference.el (bug-reference-map): Bind mouse-2
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 841ec26eb9c..a4eee0643b8 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -129,6 +129,15 @@ environment."))
129South Indian language Malayalam is supported in this language environment.")) 129South Indian language Malayalam is supported in this language environment."))
130 '("Indian")) 130 '("Indian"))
131 131
132;; Replace mnemonic characters in REGEXP according to TABLE. TABLE is
133;; an alist of (MNEMONIC-STRING . REPLACEMENT-STRING).
134
135(defun indian-compose-regexp (regexp table)
136 (let ((case-fold-search nil))
137 (dolist (elt table)
138 (setq regexp (replace-regexp-in-string (car elt) (cdr elt) regexp t t)))
139 regexp))
140
132(defconst devanagari-composable-pattern 141(defconst devanagari-composable-pattern
133 (concat 142 (concat
134 "\\([अ-औॠॡ][ँं]?\\)\\|[ः।]" 143 "\\([अ-औॠॡ][ँं]?\\)\\|[ः।]"
@@ -156,12 +165,27 @@ South Indian language Malayalam is supported in this language environment."))
156 "Regexp matching a composable sequence of Kannada characters.") 165 "Regexp matching a composable sequence of Kannada characters.")
157 166
158(defconst malayalam-composable-pattern 167(defconst malayalam-composable-pattern
159 (concat 168 (let ((table '(("V" . "[\u0D05-\u0D14\u0D60-\u0D61]") ; independent vowel
160 "\\([അ-ഔ][ം]?\\)\\|ഃ" 169 ("C" . "[\u0D15-\u0D39]") ; consonant
161 "\\|\\(" 170 ("m" . "[\u0D46-\u0D48\u0D4A-\u0D4C]") ; prebase matra
162 "\\(?:\\(?:[ക-ഹ]്\\)?\\(?:[ക-ഹ]്\\)?\\(?:[ക-ഹ]്\\)?[ക-ഹ]്\\)?" 171 ("p" . "[\u0D3E-\u0D44\u0D57]") ; postname matra
163 "[ക-ഹ]\\(?:്\\|[ാ-ൃെേൈൊൊോൌ]?[ം്]?\\)?" 172 ("b" . "[\u0D62-\u0D63]") ; belowbase matra
164 "\\)") 173 ("a" . "[\u0D02-\u0D03]") ; abovebase sign
174 ("H" . "്") ; virama sign
175 ("N" . "\u200D") ; ZWJ
176 ("J" . "\u200C") ; ZWNJ
177 ("X" . "[\u0D00-\u0D7F]")))) ; all coverage
178 (indian-compose-regexp
179 (concat
180 ;; consonant-based syllables
181 "\\(CJ?HJ?\\)*C\\(H[NJ]?\\|m?b?p?a?\\)\\|"
182 ;; syllables with an independent vowel
183 "V\\(J?HC\\)?m?b?p?n?a?\\|"
184 ;; special consonant form
185 "JHC\\|"
186 ;; any other singleton characters
187 "X")
188 table))
165 "Regexp matching a composable sequence of Malayalam characters.") 189 "Regexp matching a composable sequence of Malayalam characters.")
166 190
167(let ((script-regexp-alist 191(let ((script-regexp-alist
@@ -173,7 +197,7 @@ South Indian language Malayalam is supported in this language environment."))
173 (tamil . "[\xB80-\xBFF\x200C\x200D]+") 197 (tamil . "[\xB80-\xBFF\x200C\x200D]+")
174 (telugu . "[\xC00-\xC7F\x200C\x200D]+") 198 (telugu . "[\xC00-\xC7F\x200C\x200D]+")
175 (kannada . "[\xC80-\xCFF\x200C\x200D]+") 199 (kannada . "[\xC80-\xCFF\x200C\x200D]+")
176 (malayalam . "[\xD00-\xD7F\x200C\x200D]+")))) 200 (malayalam . ,malayalam-composable-pattern))))
177 (map-char-table 201 (map-char-table
178 #'(lambda (key val) 202 #'(lambda (key val)
179 (let ((slot (assq val script-regexp-alist))) 203 (let ((slot (assq val script-regexp-alist)))