annotate lisp/mule/ethiopic.el @ 5916:1152e0091f8c

Avoid confusion about ELC vs. source file encoding, #'load, #'load-internal. lisp/ChangeLog addition: 2015-06-03 Aidan Kehoe <kehoea@parhasard.net> * code-files.el (load): Revise this to respect load-ignore-out-of-date-elc-files, rather than leaving that to #'load-internal. Avoids a corner case where the source and the compiled file have different, incompatible encodings. Move the call to #'substitute-in-file-name here. No longer check for a zero-length filename, since #'load-internal no longer chokes on same and errors correctly. src/ChangeLog addition: 2015-06-03 Aidan Kehoe <kehoea@parhasard.net> * lread.c (Fload_internal): Delegate calling the handler and #'substitute-in-file-name to #'load. Error correctly with a zero-length file name, instead of giving a bus error on my machine. Delegate the check for out-of-date ELC files to #'load, avoiding a bug where the encoding of the ELC file and the source file differed. * lread.c (PRINT_LOADING_MESSAGE_1): This is simplified, now we no longer have to talk about out-of-date ELC files. tests/ChangeLog addition: 2015-06-03 Aidan Kehoe <kehoea@parhasard.net> * automated/file-tests.el: Gross sanity check for #'load and #'load-internal with a zero-length FILE, something that crashed until today.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 03 Jun 2015 20:13:07 +0100
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
1 ;;; ethiopic.el --- Support for Ethiopic -*- coding: iso-2022-7bit; -*-
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
2
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
3 ;; Copyright (C) 1995,1999 Electrotechnical Laboratory, JAPAN.
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
4 ;; Licensed to the Free Software Foundation.
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
5 ;; Copyright (C) 1997 MORIOKA Tomohiko
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
6
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
7 ;; Keywords: multilingual, Ethiopic
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
8
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
9 ;; This file is part of XEmacs.
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
10
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
11 ;; XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
12 ;; under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
13 ;; Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
14 ;; option) any later version.
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
15
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
16 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
17 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
18 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
19 ;; for more details.
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
20
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4072
diff changeset
22 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
23
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
24 ;; Author: TAKAHASHI Naoto <ntakahas@etl.go.jp>
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
25 ;; modified by MORIOKA Tomohiko <morioka@jaist.ac.jp> for XEmacs.
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
26
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
27 ;;; Code:
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
28
778
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 444
diff changeset
29 ;; Ethiopic characters (Amahric and Tigrigna).
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 444
diff changeset
30 (make-charset 'ethiopic "Ethiopic characters"
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 444
diff changeset
31 '(dimension
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 444
diff changeset
32 2
3659
98af8a976fc3 [xemacs-hg @ 2006-11-05 22:31:31 by aidan]
aidan
parents: 778
diff changeset
33 registries ["Ethiopic-Unicode"]
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
34 chars 94
778
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 444
diff changeset
35 columns 2
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 444
diff changeset
36 direction l2r
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
37 final ?3
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
38 graphic 0
778
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 444
diff changeset
39 short-name "Ethiopic"
2923009caf47 [xemacs-hg @ 2002-03-16 10:38:59 by ben]
ben
parents: 444
diff changeset
40 long-name "Ethiopic characters"
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
41 ))
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
42
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
43 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
44 ;;; ETHIOPIC
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
45 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
46
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
47 (define-category ?E "Ethiopic (Ge'ez) character.")
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
48 (modify-category-entry 'ethiopic ?E)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
49
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
50 (define-ccl-program ccl-encode-ethio-font
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
51 '(0
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
52 ;; In: R0:ethiopic (not checked)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
53 ;; R1:position code 1
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
54 ;; R2:position code 2
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
55 ;; Out: R1:font code point 1
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
56 ;; R2:font code point 2
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
57 ((r1 -= 33)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
58 (r2 -= 33)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
59 (r1 *= 94)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
60 (r2 += r1)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
61 (if (r2 < 256)
4072
aa28d959af41 [xemacs-hg @ 2007-07-22 22:03:29 by aidan]
aidan
parents: 3970
diff changeset
62 (r1 = #x12)
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
63 (if (r2 < 448)
4072
aa28d959af41 [xemacs-hg @ 2007-07-22 22:03:29 by aidan]
aidan
parents: 3970
diff changeset
64 ((r1 = #x13) (r2 -= 256))
aa28d959af41 [xemacs-hg @ 2007-07-22 22:03:29 by aidan]
aidan
parents: 3970
diff changeset
65 ((r1 = #xfd) (r2 -= 208))
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
66 ))))
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
67 "CCL program to encode an Ethiopic code to code point of Ethiopic font.")
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
68
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 353
diff changeset
69 (set-charset-ccl-program 'ethiopic 'ccl-encode-ethio-font)
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
70
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
71 (set-language-info-alist
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
72 "Ethiopic" '((setup-function . setup-ethiopic-environment-internal)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
73 (exit-function . exit-ethiopic-environment)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
74 (charset ethiopic)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
75 (coding-system iso-2022-7bit)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
76 (coding-priority iso-2022-7bit)
3970
949ac151a10d [xemacs-hg @ 2007-05-20 20:09:20 by aidan]
aidan
parents: 3659
diff changeset
77 ;; (input-method . "ethiopic")
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
78 (features ethio-util)
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
79 (sample-text . "$(3$Q#U!.(B")
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
80 (documentation . t)))
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
81
3659
98af8a976fc3 [xemacs-hg @ 2006-11-05 22:31:31 by aidan]
aidan
parents: 778
diff changeset
82 ;; In a more ideal world, we could set the default face fallback from here
98af8a976fc3 [xemacs-hg @ 2006-11-05 22:31:31 by aidan]
aidan
parents: 778
diff changeset
83 ;; to use one of the misc-fixed sizes that handles Ethiopic.
98af8a976fc3 [xemacs-hg @ 2006-11-05 22:31:31 by aidan]
aidan
parents: 778
diff changeset
84
353
3b3709405255 Import from CVS: tag r21-1-6
cvs
parents:
diff changeset
85 ;;; ethiopic.el ends here