| 1 |
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 |
|
|---|
| 16 |
|
|---|
| 17 |
|
|---|
| 18 |
|
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 |
|
|---|
| 22 |
|
|---|
| 23 |
|
|---|
| 24 |
|
|---|
| 25 |
|
|---|
| 26 |
|
|---|
| 27 |
|
|---|
| 28 |
|
|---|
| 29 |
|
|---|
| 30 |
|
|---|
| 31 |
|
|---|
| 32 |
|
|---|
| 33 |
|
|---|
| 34 |
|
|---|
| 35 |
(defvar rmail-current-message) |
|---|
| 36 |
(defvar rmail-message-vector) |
|---|
| 37 |
|
|---|
| 38 |
|
|---|
| 39 |
(defvar exit-ethiopic-environment-data nil) |
|---|
| 40 |
|
|---|
| 41 |
|
|---|
| 42 |
(defun setup-ethiopic-environment-internal () |
|---|
| 43 |
(let ((key-bindings '((" " . ethio-insert-space) |
|---|
| 44 |
([?\S- ] . ethio-insert-ethio-space) |
|---|
| 45 |
([?\C-'] . ethio-gemination) |
|---|
| 46 |
|
|---|
| 47 |
|
|---|
| 48 |
|
|---|
| 49 |
|
|---|
| 50 |
|
|---|
| 51 |
|
|---|
| 52 |
|
|---|
| 53 |
|
|---|
| 54 |
|
|---|
| 55 |
|
|---|
| 56 |
|
|---|
| 57 |
|
|---|
| 58 |
|
|---|
| 59 |
|
|---|
| 60 |
|
|---|
| 61 |
|
|---|
| 62 |
|
|---|
| 63 |
|
|---|
| 64 |
|
|---|
| 65 |
([f3] . ethio-fidel-to-sera-buffer) |
|---|
| 66 |
([S-f3] . ethio-fidel-to-sera-region) |
|---|
| 67 |
([C-f3] . ethio-fidel-to-sera-mail-or-marker) |
|---|
| 68 |
([f4] . ethio-sera-to-fidel-buffer) |
|---|
| 69 |
([S-f4] . ethio-sera-to-fidel-region) |
|---|
| 70 |
([C-f4] . ethio-sera-to-fidel-mail-or-marker) |
|---|
| 71 |
([S-f5] . ethio-toggle-punctuation) |
|---|
| 72 |
([S-f6] . ethio-modify-vowel) |
|---|
| 73 |
([S-f7] . ethio-replace-space) |
|---|
| 74 |
([S-f8] . ethio-input-special-character) |
|---|
| 75 |
([C-f9] . ethio-toggle-space) |
|---|
| 76 |
([S-f9] . ethio-replace-space) |
|---|
| 77 |
)) |
|---|
| 78 |
kb) |
|---|
| 79 |
(while key-bindings |
|---|
| 80 |
(setq kb (car (car key-bindings))) |
|---|
| 81 |
(setq exit-ethiopic-environment-data |
|---|
| 82 |
(cons (cons kb (global-key-binding kb)) |
|---|
| 83 |
exit-ethiopic-environment-data)) |
|---|
| 84 |
(global-set-key kb (cdr (car key-bindings))) |
|---|
| 85 |
(setq key-bindings (cdr key-bindings)))) |
|---|
| 86 |
|
|---|
| 87 |
(add-hook 'quail-activate-hook 'ethio-select-a-translation) |
|---|
| 88 |
(add-hook 'find-file-hook 'ethio-find-file) |
|---|
| 89 |
(add-hook 'write-file-functions 'ethio-write-file) |
|---|
| 90 |
(add-hook 'after-save-hook 'ethio-find-file)) |
|---|
| 91 |
|
|---|
| 92 |
(defun exit-ethiopic-environment () |
|---|
| 93 |
"Exit Ethiopic language environment." |
|---|
| 94 |
(while exit-ethiopic-environment-data |
|---|
| 95 |
(global-set-key (car (car exit-ethiopic-environment-data)) |
|---|
| 96 |
(cdr (car exit-ethiopic-environment-data))) |
|---|
| 97 |
(setq exit-ethiopic-environment-data |
|---|
| 98 |
(cdr exit-ethiopic-environment-data))) |
|---|
| 99 |
|
|---|
| 100 |
(remove-hook 'quail-activate-hook 'ethio-select-a-translation) |
|---|
| 101 |
(remove-hook 'find-file-hook 'ethio-find-file) |
|---|
| 102 |
(remove-hook 'write-file-functions 'ethio-write-file) |
|---|
| 103 |
(remove-hook 'after-save-hook 'ethio-find-file)) |
|---|
| 104 |
|
|---|
| 105 |
|
|---|
| 106 |
|
|---|
| 107 |
|
|---|
| 108 |
|
|---|
| 109 |
|
|---|
| 110 |
|
|---|
| 111 |
|
|---|
| 112 |
|
|---|
| 113 |
|
|---|
| 114 |
|
|---|
| 115 |
|
|---|
| 116 |
|
|---|
| 117 |
|
|---|
| 118 |
|
|---|
| 119 |
|
|---|
| 120 |
|
|---|
| 121 |
|
|---|
| 122 |
|
|---|
| 123 |
|
|---|
| 124 |
|
|---|
| 125 |
|
|---|
| 126 |
|
|---|
| 127 |
|
|---|
| 128 |
|
|---|
| 129 |
|
|---|
| 130 |
|
|---|
| 131 |
|
|---|
| 132 |
(defvar ethio-primary-language 'tigrigna |
|---|
| 133 |
"*Symbol that defines the primary language in SERA --> FIDEL conversion. |
|---|
| 134 |
The value should be one of: `tigrigna', `amharic' or `english'.") |
|---|
| 135 |
|
|---|
| 136 |
(defvar ethio-secondary-language 'english |
|---|
| 137 |
"*Symbol that defines the secondary language in SERA --> FIDEL conversion. |
|---|
| 138 |
The value should be one of: `tigrigna', `amharic' or `english'.") |
|---|
| 139 |
|
|---|
| 140 |
(defvar ethio-use-colon-for-colon nil |
|---|
| 141 |
"*Non-nil means associate ASCII colon with Ethiopic colon. |
|---|
| 142 |
If nil, associate ASCII colon with Ethiopic word separator, i.e., two |
|---|
| 143 |
vertically stacked dots. All SERA <--> FIDEL converters refer this |
|---|
| 144 |
variable.") |
|---|
| 145 |
|
|---|
| 146 |
(defvar ethio-use-three-dot-question nil |
|---|
| 147 |
"*Non-nil means associate ASCII question mark with Ethiopic old style question mark (three vertically stacked dots). |
|---|
| 148 |
If nil, associate ASCII question mark with Ethiopic stylized question |
|---|
| 149 |
mark. All SERA <--> FIDEL converters refer this variable.") |
|---|
| 150 |
|
|---|
| 151 |
(defvar ethio-quote-vowel-always nil |
|---|
| 152 |
"*Non-nil means always put an apostrophe before an isolated vowel (except at word initial) in FIDEL --> SERA conversion. |
|---|
| 153 |
If nil, put an apostrophe only between a sixth-form consonant and an |
|---|
| 154 |
isolated vowel.") |
|---|
| 155 |
|
|---|
| 156 |
(defvar ethio-W-sixth-always nil |
|---|
| 157 |
"*Non-nil means convert the Wu-form of a 12-form consonant to \"W'\" instead of \"Wu\" in FIDEL --> SERA conversion.") |
|---|
| 158 |
|
|---|
| 159 |
(defvar ethio-numeric-reduction 0 |
|---|
| 160 |
"*Degree of reduction in converting Ethiopic digits into Arabic digits. |
|---|
| 161 |
Should be 0, 1 or 2. |
|---|
| 162 |
For example, ({10}{9}{100}{80}{7}) is converted into: |
|---|
| 163 |
`10`9`100`80`7 if `ethio-numeric-reduction' is 0, |
|---|
| 164 |
`109100807 if `ethio-numeric-reduction' is 1, |
|---|
| 165 |
`10900807 if `ethio-numeric-reduction' is 2.") |
|---|
| 166 |
|
|---|
| 167 |
(defvar ethio-implicit-period-conversion t |
|---|
| 168 |
"*Non-nil means replacing the Ethiopic dot at the end of an Ethiopic sentence |
|---|
| 169 |
with an Ethiopic full stop.") |
|---|
| 170 |
|
|---|
| 171 |
(defvar ethio-java-save-lowercase nil |
|---|
| 172 |
"*Non-nil means save Ethiopic characters in lowercase hex numbers to Java files. |
|---|
| 173 |
If nil, use uppercases.") |
|---|
| 174 |
|
|---|
| 175 |
|
|---|
| 176 |
|
|---|
| 177 |
|
|---|
| 178 |
|
|---|
| 179 |
(defconst ethio-sera-to-fidel-table |
|---|
| 180 |
[ |
|---|
| 181 |
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil |
|---|
| 182 |
nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil |
|---|
| 183 |
|
|---|
| 184 |
(" " |
|---|
| 185 |
(?: (if ethio-use-colon-for-colon " $(3$l(B" "$(3$h(B") |
|---|
| 186 |
(32 (if ethio-use-colon-for-colon " $(3$l(B " "$(3$h(B")) |
|---|
| 187 |
(?- " $(3$m(B") |
|---|
| 188 |
(?: " $(3$i(B") |
|---|
| 189 |
(?| (if ethio-use-colon-for-colon " $(3$l(B|" " $(3$h(B|") |
|---|
| 190 |
(?: " $(3$o(B")))) |
|---|
| 191 |
|
|---|
| 192 |
|
|---|
| 193 |
nil nil nil nil nil nil ("" (?' "$(3%s(B")) |
|---|
| 194 |
|
|---|
| 195 |
nil nil nil nil ("$(3$j(B") ("-" (?: "$(3$l(B")) ("$(3%u(B") |
|---|
| 196 |
|
|---|
| 197 |
nil nil nil nil nil nil nil nil nil nil nil |
|---|
| 198 |
|
|---|
| 199 |
((if ethio-use-colon-for-colon "$(3$l(B" "$(3$h(B") |
|---|
| 200 |
(32 (if ethio-use-colon-for-colon "$(3$l(B " "$(3$h(B")) |
|---|
| 201 |
(?- "$(3$m(B") |
|---|
| 202 |
(?: "$(3$i(B") |
|---|
| 203 |
(?| (if ethio-use-colon-for-colon "$(3$l(B|" "$(3$h(B|") |
|---|
| 204 |
(?: "$(3$o(B"))) |
|---|
| 205 |
|
|---|
| 206 |
("$(3$k(B") ("<" (?< "$(3%v(B")) nil (">" (?> "$(3%w(B")) |
|---|
| 207 |
|
|---|
| 208 |
((if ethio-use-three-dot-question "$(3$n(B" "$(3%x(B")) |
|---|
| 209 |
|
|---|
| 210 |
nil |
|---|
| 211 |
|
|---|
| 212 |
("$(3"f(B" (?2 "$(3#8(B")) |
|---|
| 213 |
|
|---|
| 214 |
$(3"((B" (?e "$(3"#(B") (?u "$(3"$(B") (?i "$(3"%(B") (?a "$(3"&(B") (?E "$(3"'(B") (?o "$(3")(B") |
|---|
| 215 |
(?W "$(3%b(B" (?e "$(3%2(B") (?u "$(3%b(B") (?i "$(3%B(B") (?a "$(3"*(B") (?E "$(3%R(B"))) |
|---|
| 216 |
;;; C |
|---|
| 217 |
("$(3$4(B" (?e "$(3$/(B") (?u "$(3$0(B") (?i "$(3$1(B") (?a "$(3$2(B") (?E "$(3$3(B") (?o "$(3$5(B") |
|---|
| 218 |
(?W "$(3$6(B" (?a "$(3$6(B") |
|---|
| 219 |
(?e "$(3$4%n(B") (?u "$(3$4%r(B") (?i "$(3$4%o(B") (?E "$(3$4%q(B"))) |
|---|
| 220 |
;;; D |
|---|
| 221 |
("$(3#b(B" (?e "$(3#](B") (?u "$(3#^(B") (?i "$(3#_(B") (?a "$(3#`(B") (?E "$(3#a(B") (?o "$(3#c(B") |
|---|
| 222 |
(?W "$(3#d(B" (?a "$(3#d(B") |
|---|
| 223 |
(?e "$(3#b%n(B") (?u "$(3#b%r(B") (?i "$(3#b%o(B") (?E "$(3#b%q(B"))) |
|---|
| 224 |
;;; E |
|---|
| 225 |
("$(3"g(B" (?2 "$(3#9(B")) |
|---|
| 226 |
|
|---|
| 227 |
("$(3$T(B" (?e "$(3$O(B") (?u "$(3$P(B") (?i "$(3$Q(B") (?a "$(3$R(B") (?E "$(3$S(B") (?o "$(3$U(B") |
|---|
| 228 |
(?W "$(3%d(B" (?e "$(3%4(B") (?u "$(3%d(B") (?i "$(3%D(B") (?a "$(3$V(B") (?E "$(3%T(B")) |
|---|
| 229 |
(?Y "$(3$a(B" (?a "$(3$a(B"))) |
|---|
| 230 |
|
|---|
| 231 |
("$(3$$(B" (?e "$(3#}(B") (?u "$(3#~(B") (?i "$(3$!(B") (?a "$(3$"(B") (?E "$(3$#(B") (?o "$(3$%(B") |
|---|
| 232 |
$(3%c(B" (?e "$(3%3(B") (?u "$(3%c(B") (?i "$(3%C(B") (?a "$(3$&(B") (?E "$(3%S(B"))) |
|---|
| 233 |
|
|---|
| 234 |
$(3!6(B" (?e "$(3!1(B") (?u "$(3!2(B") (?i "$(3!3(B") (?a "$(3!4(B") (?E "$(3!5(B") (?o "$(3!7(B") |
|---|
| 235 |
$(3!8(B" (?a "$(3!8(B") |
|---|
| 236 |
$(3!6%n(B") (?u "$(3!6%r(B") (?i "$(3!6%o(B") (?E "$(3!6%q(B"))) |
|---|
| 237 |
|
|---|
| 238 |
$(3"h(B" (?2 "$(3#:(B")) |
|---|
| 239 |
|
|---|
| 240 |
("$(3#j(B" (?e "$(3#e(B") (?u "$(3#f(B") (?i "$(3#g(B") (?a "$(3#h(B") (?E "$(3#i(B") (?o "$(3#k(B") |
|---|
| 241 |
(?W "$(3#l(B" (?a "$(3#l(B") |
|---|
| 242 |
(?e "$(3#j%n(B") (?u "$(3#j%r(B") (?i "$(3#j%o(B") (?E "$(3#j%q(B"))) |
|---|
| 243 |
|
|---|
| 244 |
("$(3#"(B" (?e "$(3"{(B") (?u "$(3"|(B") (?i "$(3"}(B") (?a "$(3"~(B") (?E "$(3#!(B") (?o "$(3##(B") |
|---|
| 245 |
$(3#*(B" (?e "$(3#%(B") (?u "$(3#*(B") (?i "$(3#'(B") (?a "$(3#((B") (?E "$(3#)(B"))) |
|---|
| 246 |
|
|---|
| 247 |
$(3!.(B" (?e "$(3!)(B") (?u "$(3!*(B") (?i "$(3!+(B") (?a "$(3!,(B") (?E "$(3!-(B") (?o "$(3!/(B") |
|---|
| 248 |
$(3!0(B" (?a "$(3!0(B") |
|---|
| 249 |
$(3!.%n(B") (?u "$(3!.%r(B") (?i "$(3!.%o(B") (?E "$(3!.%q(B"))) |
|---|
| 250 |
|
|---|
| 251 |
$(3!>(B" (?e "$(3!9(B") (?u "$(3!:(B") (?i "$(3! |
|---|
| 252 |
(?W "$(3%a(B" (?e "$(3%1(B") (?u "$(3%a(B") (?i "$(3%A(B") (?a "$(3!@(B") (?E "$(3%Q(B")) |
|---|
| 253 |
(?Y "$(3$_(B" (?a "$(3$_(B"))) |
|---|
| 254 |
|
|---|
| 255 |
("$(3"`(B" (?e "$(3"[(B") (?u "$(3"\(B") (?i "$(3"](B") (?a "$(3"^(B") (?E "$(3"_(B") (?o "$(3"a(B") |
|---|
| 256 |
$(3"b(B" (?a "$(3"b(B") |
|---|
| 257 |
$(3"`%n(B") (?u "$(3"`%r(B") (?i "$(3"`%o(B") (?E "$(3"`%q(B"))) |
|---|
| 258 |
|
|---|
| 259 |
$(3"i(B" (?2 "$(3#;(B")) |
|---|
| 260 |
|
|---|
| 261 |
("$(3$<(B" (?e "$(3$7(B") (?u "$(3$8(B") (?i "$(3$9(B") (?a "$(3$:(B") (?E "$(3$;(B") (?o "$(3$=(B") |
|---|
| 262 |
(?W "$(3$>(B" (?a "$(3$>(B") |
|---|
| 263 |
(?e "$(3$<%n(B") (?u "$(3$<%r(B") (?i "$(3$<%o(B") (?E "$(3$<%q(B"))) |
|---|
| 264 |
|
|---|
| 265 |
("$(3!v(B" (?e "$(3!q(B") (?u "$(3!r(B") (?i "$(3!s(B") (?a "$(3!t(B") (?E "$(3!u(B") (?o "$(3!w(B") |
|---|
| 266 |
(?W "$(3!~(B" (?e "$(3!y(B") (?u "$(3!~(B") (?i "$(3!{(B") (?a "$(3!|(B") (?E "$(3!}(B"))) |
|---|
| 267 |
|
|---|
| 268 |
("$(3!N(B" (?e "$(3!I(B") (?u "$(3!J(B") (?i "$(3!K(B") (?a "$(3!L(B") (?E "$(3!M(B") (?o "$(3!O(B") |
|---|
| 269 |
(?W "$(3!P(B" (?a "$(3!P(B") |
|---|
| 270 |
(?e "$(3!N%n(B") (?u "$(3!N%r(B") (?i "$(3!N%o(B") (?E "$(3!N%q(B")) |
|---|
| 271 |
(?Y "$(3$`(B" (?a "$(3$`(B"))) |
|---|
| 272 |
|
|---|
| 273 |
("$(3$D(B" (?e "$(3$?(B") (?u "$(3$@(B") (?i "$(3$A(B") (?a "$(3$B(B") (?E "$(3$C(B") (?o "$(3$E(B") |
|---|
| 274 |
(?W "$(3$F(B" (?a "$(3$F(B") |
|---|
| 275 |
(?e "$(3$D%n(B") (?u "$(3$D%r(B") (?i "$(3$D%o(B") (?E "$(3$D%q(B")) |
|---|
| 276 |
(?2 "$(3$L(B" |
|---|
| 277 |
(?e "$(3$G(B") (?u "$(3$H(B") (?i "$(3$I(B") (?a "$(3$J(B") (?E "$(3$K(B") (?o "$(3$M(B") |
|---|
| 278 |
(?W "$(3$F(B" (?a "$(3$F(B") |
|---|
| 279 |
(?e "$(3$L%n(B") (?u "$(3$L%r(B") (?i "$(3$L%o(B") (?E "$(3$L%q(B")))) |
|---|
| 280 |
|
|---|
| 281 |
("$(3$,(B" (?e "$(3$'(B") (?u "$(3$((B") (?i "$(3$)(B") (?a "$(3$*(B") (?E "$(3$+(B") (?o "$(3$-(B") |
|---|
| 282 |
(?W "$(3$.(B" (?a "$(3$.(B") |
|---|
| 283 |
(?e "$(3$,%n(B") (?u "$(3$,%r(B") (?i "$(3$,%o(B") (?E "$(3$,%q(B"))) |
|---|
| 284 |
|
|---|
| 285 |
("$(3"d(B" (?2 "$(3#6(B")) |
|---|
| 286 |
|
|---|
| 287 |
$(3"0(B" (?e "$(3"+(B") (?u "$(3",(B") (?i "$(3"-(B") (?a "$(3".(B") (?E "$(3"/(B") (?o "$(3"1(B") |
|---|
| 288 |
(?W "$(3"2(B" (?a "$(3"2(B") |
|---|
| 289 |
(?e "$(3"0%n(B") (?u "$(3"0%r(B") (?i "$(3"0%o(B") (?E "$(3"0%q(B"))) |
|---|
| 290 |
|
|---|
| 291 |
("$(3%r(B" (?e "$(3%n(B") (?u "$(3%r(B") (?i "$(3%o(B") (?a "$(3%p(B") (?E "$(3%q(B")) |
|---|
| 292 |
|
|---|
| 293 |
("$(3%N(B" (?e "$(3%I(B") (?u "$(3%J(B") (?i "$(3%K(B") (?a "$(3%L(B") (?E "$(3%M(B") (?o "$(3%O(B")) |
|---|
| 294 |
|
|---|
| 295 |
("$(3#R(B" (?e "$(3#M(B") (?u "$(3#N(B") (?i "$(3#O(B") (?a "$(3#P(B") (?E "$(3#Q(B") (?o "$(3#S(B") |
|---|
| 296 |
(?W "$(3#T(B" (?a "$(3#T(B") |
|---|
| 297 |
(?e "$(3#R%n(B") (?u "$(3#R%r(B") (?i "$(3#R%o(B") (?E "$(3#R%q(B"))) |
|---|
| 298 |
|
|---|
| 299 |
("$(3#J(B" (?e "$(3#E(B") (?u "$(3#F(B") (?i "$(3#G(B") (?a "$(3#H(B") (?E "$(3#I(B") (?o "$(3#K(B") |
|---|
| 300 |
(?W "$(3#L(B" (?a "$(3#L(B") |
|---|
| 301 |
(?e "$(3#J%n(B") (?u "$(3#J%r(B") (?i "$(3#J%o(B") (?E "$(3#J%q(B"))) |
|---|
| 302 |
|
|---|
| 303 |
nil nil nil nil nil |
|---|
| 304 |
|
|---|
| 305 |
("" |
|---|
| 306 |
(?: "$(3$h(B") |
|---|
| 307 |
(?? (if ethio-use-three-dot-question "$(3%x(B" "$(3$n(B")) |
|---|
| 308 |
(?! "$(3%t(B") |
|---|
| 309 |
(?e "$(3#5(B") (?u "$(3#6(B") (?U "$(3#6(B") (?i "$(3#7(B") (?a "$(3#8(B") (?A "$(3#8(B") |
|---|
| 310 |
(?E "$(3#9(B") (?I "$(3#:(B") (?o "$(3#;(B") (?O "$(3#;(B") |
|---|
| 311 |
(?g "$(3%^(B" |
|---|
| 312 |
(?e "$(3%Y(B") (?u "$(3%Z(B") (?i "$(3%[(B") (?a "$(3%\(B") (?E "$(3%](B") (?o "$(3%_(B")) |
|---|
| 313 |
(?h "$(3"H(B" |
|---|
| 314 |
(?e "$(3"C(B") (?u "$(3"D(B") (?i "$(3"E(B") (?a "$(3"F(B") (?E "$(3"G(B") (?o "$(3"I(B") |
|---|
| 315 |
(?W "$(3"P(B" (?e "$(3"K(B") (?u "$(3"P(B") (?i "$(3"M(B") (?a "$(3"N(B") (?E "$(3"O(B"))) |
|---|
| 316 |
(?k "$(3%>(B" |
|---|
| 317 |
(?e "$(3%9(B") (?u "$(3%:(B") (?i "$(3% |
|---|
| 318 |
(?s "$(3!F(B" |
|---|
| 319 |
(?e "$(3!A(B") (?u "$(3!B(B") (?i "$(3!C(B") (?a "$(3!D(B") (?E "$(3!E(B") (?o "$(3!G(B") |
|---|
| 320 |
(?W "$(3!H(B" (?a "$(3!H(B") |
|---|
| 321 |
(?e "$(3!F%n(B") (?u "$(3!F%r(B") (?i "$(3!F%o(B") (?E "$(3!F%q(B"))) |
|---|
| 322 |
(?S "$(3$L(B" |
|---|
| 323 |
(?e "$(3$G(B") (?u "$(3$H(B") (?i "$(3$I(B") (?a "$(3$J(B") (?E "$(3$K(B") (?o "$(3$M(B") |
|---|
| 324 |
(?W "$(3$F(B" (?a "$(3$F(B") |
|---|
| 325 |
(?e "$(3$L%n(B") (?u "$(3$L%r(B") (?i "$(3$L%o(B") (?E "$(3$L%q(B"))) |
|---|
| 326 |
(?q "$(3%.(B" (?e "$(3%)(B") (?u "$(3%*(B") (?i "$(3%+(B") (?a "$(3%,(B") (?E "$(3%-(B") (?o "$(3%/(B"))) |
|---|
| 327 |
|
|---|
| 328 |
("$(3"f(B" (?2 "$(3#8(B")) |
|---|
| 329 |
|
|---|
| 330 |
$(3"((B" (?e "$(3"#(B") (?u "$(3"$(B") (?i "$(3"%(B") (?a "$(3"&(B") (?E "$(3"'(B") (?o "$(3")(B") |
|---|
| 331 |
(?W "$(3%b(B" (?e "$(3%2(B") (?u "$(3%b(B") (?i "$(3%B(B") (?a "$(3"*(B") (?E "$(3%R(B"))) |
|---|
| 332 |
;;; c |
|---|
| 333 |
("$(3"@(B" (?e "$(3" |
|---|
| 334 |
(?W "$(3"B(B" (?a "$(3"B(B") |
|---|
| 335 |
(?e "$(3"@%n(B") (?u "$(3"@%r(B") (?i "$(3"@%o(B") (?E "$(3"@%q(B"))) |
|---|
| 336 |
|
|---|
| 337 |
("$(3#Z(B" (?e "$(3#U(B") (?u "$(3#V(B") (?i "$(3#W(B") (?a "$(3#X(B") (?E "$(3#Y(B") (?o "$(3#[(B") |
|---|
| 338 |
(?W "$(3#\(B" (?a "$(3#\(B") |
|---|
| 339 |
(?e "$(3#Z%o(B") (?u "$(3#Z%r(B") (?i "$(3#Z%p(B") (?E "$(3#Z%q(B"))) |
|---|
| 340 |
|
|---|
| 341 |
("$(3"c(B" (?2 "$(3#5(B") (?a "$(3"j(B")) |
|---|
| 342 |
|
|---|
| 343 |
("$(3$T(B" (?e "$(3$O(B") (?u "$(3$P(B") (?i "$(3$Q(B") (?a "$(3$R(B") (?E "$(3$S(B") (?o "$(3$U(B") |
|---|
| 344 |
(?W "$(3%d(B" (?e "$(3%4(B") (?u "$(3%d(B") (?i "$(3%D(B") (?a "$(3$V(B") (?E "$(3%T(B")) |
|---|
| 345 |
(?Y "$(3$a(B" (?a "$(3$a(B"))) |
|---|
| 346 |
|
|---|
| 347 |
("$(3#r(B" (?e "$(3#m(B") (?u "$(3#n(B") (?i "$(3#o(B") (?a "$(3#p(B") (?E "$(3#q(B") (?o "$(3#s(B") |
|---|
| 348 |
(?W "$(3#z(B" (?e "$(3#u(B") (?u "$(3#z(B") (?i "$(3#w(B") (?a "$(3#x(B") (?E "$(3#y(B")) |
|---|
| 349 |
(?2 "$(3%^(B" (?e "$(3%Y(B") (?u "$(3%Z(B") (?i "$(3%[(B") (?a "$(3%\(B") (?E "$(3%](B") (?o "$(3%_(B"))) |
|---|
| 350 |
|
|---|
| 351 |
("$(3!&(B" (?e "$(3!!(B") (?u "$(3!"(B") (?i "$(3!#(B") (?a "$(3!$(B") (?E "$(3!%(B") (?o "$(3!'(B") |
|---|
| 352 |
$(3"P(B" (?e "$(3"K(B") (?u "$(3"P(B") (?i "$(3"M(B") (?a "$(3"N(B") (?E "$(3"O(B")) |
|---|
| 353 |
$(3"H(B" (?e "$(3"C(B") (?u "$(3"D(B") (?i "$(3"E(B") (?a "$(3"F(B") (?E "$(3"G(B") (?o "$(3"I(B") |
|---|
| 354 |
(?W "$(3"P(B" (?e "$(3"K(B") (?u "$(3"P(B") (?i "$(3"M(B") (?a "$(3"N(B") (?E "$(3"O(B")))) |
|---|
| 355 |
|
|---|
| 356 |
("$(3"e(B" (?2 "$(3#7(B")) |
|---|
| 357 |
|
|---|
| 358 |
$(3#j(B" (?e "$(3#e(B") (?u "$(3#f(B") (?i "$(3#g(B") (?a "$(3#h(B") (?E "$(3#i(B") (?o "$(3#k(B") |
|---|
| 359 |
$(3#l(B" (?a "$(3#l(B") |
|---|
| 360 |
$(3#j%n(B") (?u "$(3#j%r(B") (?i "$(3#j%o(B") (?E "$(3#j%q(B"))) |
|---|
| 361 |
|
|---|
| 362 |
$(3"p(B" (?e "$(3"k(B") (?u "$(3"l(B") (?i "$(3"m(B") (?a "$(3"n(B") (?E "$(3"o(B") (?o "$(3"q(B") |
|---|
| 363 |
(?W "$(3"x(B" (?e "$(3"s(B") (?u "$(3"x(B") (?i "$(3"u(B") (?a "$(3"v(B") (?E "$(3"w(B")) |
|---|
| 364 |
(?2 "$(3%>(B" (?e "$(3%9(B") (?u "$(3%:(B") (?i "$(3%;(B") (?a "$(3%<(B") (?E "$(3%=(B") (?o "$(3%?(B"))) |
|---|
| 365 |
|
|---|
| 366 |
("$(3!.(B" (?e "$(3!)(B") (?u "$(3!*(B") (?i "$(3!+(B") (?a "$(3!,(B") (?E "$(3!-(B") (?o "$(3!/(B") |
|---|
| 367 |
(?W "$(3!0(B" (?a "$(3!0(B") |
|---|
| 368 |
(?e "$(3!.%n(B") (?u "$(3!.%r(B") (?i "$(3!.%o(B") (?E "$(3!.%q(B"))) |
|---|
| 369 |
|
|---|
| 370 |
("$(3!>(B" (?e "$(3!9(B") (?u "$(3!:(B") (?i "$(3!;(B") (?a "$(3!<(B") (?E "$(3!=(B") (?o "$(3!?(B") |
|---|
| 371 |
(?W "$(3%a(B" (?e "$(3%1(B") (?u "$(3%a(B") (?i "$(3%A(B") (?a "$(3!@(B") (?E "$(3%Q(B")) |
|---|
| 372 |
(?Y "$(3$_(B" (?a "$(3$_(B"))) |
|---|
| 373 |
|
|---|
| 374 |
("$(3"X(B" (?e "$(3"S(B") (?u "$(3"T(B") (?i "$(3"U(B") (?a "$(3"V(B") (?E "$(3"W(B") (?o "$(3"Y(B") |
|---|
| 375 |
$(3"Z(B" (?a "$(3"Z(B") |
|---|
| 376 |
$(3"X%n(B") (?u "$(3"X%r(B") (?i "$(3"X%o(B") (?E "$(3"X%q(B"))) |
|---|
| 377 |
|
|---|
| 378 |
$(3"i(B" (?2 "$(3#;(B")) |
|---|
| 379 |
|
|---|
| 380 |
("$(3$\(B" (?e "$(3$W(B") (?u "$(3$X(B") (?i "$(3$Y(B") (?a "$(3$Z(B") (?E "$(3$[(B") (?o "$(3$](B") |
|---|
| 381 |
(?W "$(3%e(B" (?e "$(3%5(B") (?u "$(3%e(B") (?i "$(3%E(B") (?a "$(3$^(B") (?E "$(3%U(B"))) |
|---|
| 382 |
|
|---|
| 383 |
("$(3!f(B" (?e "$(3!a(B") (?u "$(3!b(B") (?i "$(3!c(B") (?a "$(3!d(B") (?E "$(3!e(B") (?o "$(3!g(B") |
|---|
| 384 |
(?W "$(3!n(B" (?e "$(3!i(B") (?u "$(3!n(B") (?i "$(3!k(B") (?a "$(3!l(B") (?E "$(3!m(B")) |
|---|
| 385 |
(?2 "$(3%.(B" (?e "$(3%)(B") (?u "$(3%*(B") (?i "$(3%+(B") (?a "$(3%,(B") (?E "$(3%-(B") (?o "$(3%/(B"))) |
|---|
| 386 |
|
|---|
| 387 |
("$(3!N(B" (?e "$(3!I(B") (?u "$(3!J(B") (?i "$(3!K(B") (?a "$(3!L(B") (?E "$(3!M(B") (?o "$(3!O(B") |
|---|
| 388 |
(?W "$(3!P(B" (?a "$(3!P(B") |
|---|
| 389 |
(?e "$(3!N%n(B") (?u "$(3!N%r(B") (?i "$(3!N%o(B") (?E "$(3!N%q(B")) |
|---|
| 390 |
(?Y "$(3$`(B" (?a "$(3$`(B"))) |
|---|
| 391 |
|
|---|
| 392 |
("$(3!V(B" (?e "$(3!Q(B") (?u "$(3!R(B") (?i "$(3!S(B") (?a "$(3!T(B") (?E "$(3!U(B") (?o "$(3!W(B") |
|---|
| 393 |
(?W "$(3!X(B" (?a "$(3!X(B") |
|---|
| 394 |
(?e "$(3!V%n(B") (?u "$(3!V%r(B") (?i "$(3!V%o(B") (?E "$(3!V%q(B")) |
|---|
| 395 |
(?2 "$(3!F(B" (?e "$(3!A(B") (?u "$(3!B(B") (?i "$(3!C(B") (?a "$(3!D(B") (?E "$(3!E(B") (?o "$(3!G(B") |
|---|
| 396 |
(?W "$(3!H(B" (?a "$(3!H(B") |
|---|
| 397 |
(?e "$(3!F%n(B") (?u "$(3!F%r(B") (?i "$(3!F%o(B") (?E "$(3!F%q(B")))) |
|---|
| 398 |
|
|---|
| 399 |
("$(3"8(B" (?e "$(3"3(B") (?u "$(3"4(B") (?i "$(3"5(B") (?a "$(3"6(B") (?E "$(3"7(B") (?o "$(3"9(B") |
|---|
| 400 |
$(3":(B" (?a "$(3":(B") |
|---|
| 401 |
$(3"8%n(B") (?u "$(3"8%r(B") (?i "$(3"8%o(B") (?E "$(3"8%q(B"))) |
|---|
| 402 |
|
|---|
| 403 |
$(3"d(B" (?2 "$(3#6(B")) |
|---|
| 404 |
|
|---|
| 405 |
("$(3"0(B" (?e "$(3"+(B") (?u "$(3",(B") (?i "$(3"-(B") (?a "$(3".(B") (?E "$(3"/(B") (?o "$(3"1(B") |
|---|
| 406 |
$(3"2(B" (?a "$(3"2(B") |
|---|
| 407 |
$(3"0%n(B") (?u "$(3"0%r(B") (?i "$(3"0%o(B") (?E "$(3"0%q(B"))) |
|---|
| 408 |
|
|---|
| 409 |
$(3#2(B" (?e "$(3#-(B") (?u "$(3#.(B") (?i "$(3#/(B") (?a "$(3#0(B") (?E "$(3#1(B") (?o "$(3#3(B") |
|---|
| 410 |
$(3%p(B" (?e "$(3%n(B") (?u "$(3%r(B") (?i "$(3%o(B") (?a "$(3%p(B") (?E "$(3%q(B"))) |
|---|
| 411 |
|
|---|
| 412 |
$(3!^(B" (?e "$(3!Y(B") (?u "$(3!Z(B") (?i "$(3 (?o "$(3!_(B") |
|---|
| 413 |
$(3!`(B" (?a "$(3!`(B") |
|---|
| 414 |
$(3!^%n(B") (?u "$(3!^%r(B") (?i "$(3!^%o(B") (?E "$(3!^%q(B"))) |
|---|
| 415 |
|
|---|
| 416 |
$(3#R(B" (?e "$(3#M(B") (?u "$(3#N(B") (?i "$(3#O(B") (?a "$(3#P(B") (?E "$(3#Q(B") (?o "$(3#S(B") |
|---|
| 417 |
$(3#T(B" (?a "$(3#T(B") |
|---|
| 418 |
$(3#R%n(B") (?u "$(3#R%r(B") (?i "$(3#R%o(B") (?E "$(3#R%q(B"))) |
|---|
| 419 |
|
|---|
| 420 |
$(3#B(B" (?e "$(3#=(B") (?u "$(3#>(B") (?i "$(3#?(B") (?a "$(3#@(B") (?E "$(3#A(B") (?o "$(3#C(B") |
|---|
| 421 |
$(3#D(B" (?a "$(3#D(B") |
|---|
| 422 |
$(3#B%n(B") (?u "$(3#B%r(B") (?i "$(3#B%o(B") (?E "$(3#B%q(B"))) |
|---|
| 423 |
|
|---|
| 424 |
|
|---|
| 425 |
|
|---|
| 426 |
|
|---|
| 427 |
|
|---|
| 428 |
|
|---|
| 429 |
|
|---|
| 430 |
|
|---|
| 431 |
|
|---|
| 432 |
|
|---|
| 433 |
|
|---|
| 434 |
Convert the characters in region from SERA to FIDEL. |
|---|
| 435 |
The variable `ethio-primary-language' specifies the primary language |
|---|
| 436 |
and `ethio-secondary-language' specifies the secondary. |
|---|
| 437 |
|
|---|
| 438 |
If the 3rd parameter SECONDARY is given and non-nil, assume the region |
|---|
| 439 |
begins with the secondary language |
|---|
| 440 |
language. |
|---|
| 441 |
|
|---|
| 442 |
If the 4th parameter FORCE is given and non-nil, perform conversion |
|---|
| 443 |
even if the buffer is read-only. |
|---|
| 444 |
|
|---|
| 445 |
See also the descriptions of the variables |
|---|
| 446 |
`ethio-use-colon-for-colon' and |
|---|
| 447 |
`ethio-use-three-dot-question'." |
|---|
| 448 |
|
|---|
| 449 |
(interactive "r\nP") |
|---|
| 450 |
(save-restriction |
|---|
| 451 |
(narrow-to-region beg end) |
|---|
| 452 |
(ethio-sera-to-fidel-buffer secondary force))) |
|---|
| 453 |
|
|---|
| 454 |
;;;###autoload |
|---|
| 455 |
(defun ethio-sera-to-fidel-buffer (&optional secondary force) |
|---|
| 456 |
"Convert the current buffer from SERA to FIDEL. |
|---|
| 457 |
|
|---|
| 458 |
The variable `ethio-primary-language' specifies the primary |
|---|
| 459 |
language and `ethio-secondary-language' specifies the secondary. |
|---|
| 460 |
|
|---|
| 461 |
If the 1st optional parameter SECONDARY is non-nil, assume the buffer |
|---|
| 462 |
begins with the secondary language |
|---|
| 463 |
language. |
|---|
| 464 |
|
|---|
| 465 |
If the 2nd optional parametr FORCE is non-nil, perform conversion even if the |
|---|
| 466 |
buffer is read-only. |
|---|
| 467 |
|
|---|
| 468 |
See also the descriptions of the variables |
|---|
| 469 |
`ethio-use-colon-for-colon' and |
|---|
| 470 |
`ethio-use-three-dot-question'." |
|---|
| 471 |
|
|---|
| 472 |
(interactive "P") |
|---|
| 473 |
|
|---|
| 474 |
(if (and buffer-read-only |
|---|
| 475 |
(not force) |
|---|
| 476 |
(not (y-or-n-p "Buffer is read-only. Force to convert? "))) |
|---|
| 477 |
(error "")) |
|---|
| 478 |
|
|---|
| 479 |
(let ((ethio-primary-language ethio-primary-language) |
|---|
| 480 |
(ethio-secondary-language ethio-secondary-language) |
|---|
| 481 |
(ethio-use-colon-for-colon ethio-use-colon-for-colon) |
|---|
| 482 |
(ethio-use-three-dot-question ethio-use-three-dot-question) |
|---|
| 483 |
;; The above four variables may be changed temporary |
|---|
| 484 |
;; by tilde escapes during conversion. So we bind them to other |
|---|
| 485 |
;; variables but of the same names. |
|---|
| 486 |
(buffer-read-only nil) |
|---|
| 487 |
(case-fold-search nil) |
|---|
| 488 |
current-language |
|---|
| 489 |
next-language) |
|---|
| 490 |
|
|---|
| 491 |
(setq current-language |
|---|
| 492 |
(if secondary |
|---|
| 493 |
ethio-secondary-language |
|---|
| 494 |
ethio-primary-language)) |
|---|
| 495 |
|
|---|
| 496 |
(goto-char (point-min)) |
|---|
| 497 |
|
|---|
| 498 |
(while (not (eobp)) |
|---|
| 499 |
(setq next-language |
|---|
| 500 |
(cond |
|---|
| 501 |
((eq current-language 'english) |
|---|
| 502 |
(ethio-sera-to-fidel-english)) |
|---|
| 503 |
((eq current-language 'amharic) |
|---|
| 504 |
(ethio-sera-to-fidel-ethio 'amharic)) |
|---|
| 505 |
((eq current-language 'tigrigna) |
|---|
| 506 |
(ethio-sera-to-fidel-ethio 'tigrigna)) |
|---|
| 507 |
(t ; we don't know what to do |
|---|
| 508 |
(ethio-sera-to-fidel-english)))) |
|---|
| 509 |
|
|---|
| 510 |
(setq current-language |
|---|
| 511 |
(cond |
|---|
| 512 |
|
|---|
| 513 |
;; when language tag is explicitly specified |
|---|
| 514 |
((not (eq next-language 'toggle)) |
|---|
| 515 |
next-language) |
|---|
| 516 |
|
|---|
| 517 |
;; found a toggle in a primary language section |
|---|
| 518 |
((eq current-language ethio-primary-language) |
|---|
| 519 |
ethio-secondary-language) |
|---|
| 520 |
|
|---|
| 521 |
;; found a toggle in a secondary, third, fourth, ... |
|---|
| 522 |
;; language section |
|---|
| 523 |
(t |
|---|
| 524 |
ethio-primary-language)))) |
|---|
| 525 |
|
|---|
| 526 |
;; If ethio-implicit-period-conversion is non-nil, the |
|---|
| 527 |
;; Ethiopic dot "$(3%u(B" at the end of an Ethiopic sentence is |
|---|
|
|---|