source: projects/emacsen-common/trunk/apel-sample/usr/share/emacs/site-lisp/apel/EMU-ELS @ 7238

Revision 7238, 6.3 KB checked in by daisuke, 12 years ago (diff)

import emacsen-common

Line 
1;;; EMU-ELS --- list of EMU modules to install. -*-Emacs-Lisp-*-
2
3;;; Commentary:
4
5;; APEL-MK imports `emu-modules' and `emu-modules-to-compile' from here.
6
7;;; Code:
8
9(defvar emu-modules-not-to-compile nil)
10(defvar emu-modules-to-compile nil)
11
12;; We use compile-time evaluation heavily.  So, order of compilation is
13;; very significant.  For example, loading some module before compiling
14;; it will cause "compile-time" evaluation many times.
15(defvar emu-modules
16  (nconc
17   ;; modules are sorted by compilation order.
18   '(static broken)
19
20   ;; product information.
21   '(product apel-ver)
22
23   ;; poe modules; poe modules depend on static.
24   '(pym)
25   (cond
26    ;; XEmacs.
27    ((featurep 'xemacs)
28     '(poe-xemacs poe))
29    ;; Emacs 19.29 and earlier. (yes, includes Emacs 19.29.)
30    ((and (= emacs-major-version 19)
31          (<= emacs-minor-version 29))
32     '(localhook poe))
33    ;; Emacs 19.30 and later.
34    ((>= emacs-major-version 19)
35     '(poe))
36    (t
37     ;; v18.
38     '(localhook env poe-18 poe)))
39
40   ;; pcustom modules; pcustom modules depend on poe.
41   (if (and (module-installed-p 'custom)
42            ;; new custom requires widget.
43            (module-installed-p 'widget))
44       ;; if both 'custom and 'widget are found, we have new custom.
45       '(pcustom)
46     ;; pcustom does (require 'custom) at compile-time, and tinycustom
47     ;; need to test existence of some custom macros at compile-time!
48     ;; so, we must compile tinycustom first.
49     '(tinycustom pcustom))
50
51   ;; pccl modules; pccl modules depend on broken.
52   (cond
53    ((featurep 'xemacs)
54     (cond
55      ;; XEmacs 21 w/ mule.
56      ((and (featurep 'mule)
57            (>= emacs-major-version 21))
58       '(pccl-20 pccl))
59      (t
60       '(pccl))))
61    ((featurep 'mule)
62     (cond
63      ;; Emacs 20.
64      ((>= emacs-major-version 20)
65       '(pccl-20 pccl))
66      ;; Mule 1.* and 2.*.
67      (t
68       '(pccl-om pccl))))
69    (t
70     '(pccl)))
71
72   ;; pces modules; pces modules depend on poe.
73   (cond
74    ((featurep 'xemacs)
75     (cond
76      ((featurep 'mule)
77       ;; XEmacs w/ mule.
78       ;; pces-xfc depends pces-20, so we compile pces-20 first.
79       '(pces-20 pces-xm pces-xfc pces))
80      ((featurep 'file-coding)
81       ;; XEmacs w/ file-coding.
82       ;; pces-xfc depends pces-20, so we compile pces-20 first.
83       '(pces-20 pces-xfc pces))
84      (t
85       '(pces-raw pces))))
86    ((featurep 'mule)
87     (cond
88      ;; Emacs 20.3 and later.
89      ((and (fboundp 'set-buffer-multibyte)
90            (subrp (symbol-function 'set-buffer-multibyte)))
91       ;; pces-e20 depends pces-20, so we compile pces-20 first.
92       '(pces-20 pces-e20 pces))
93      ;; Emacs 20.1 and 20.2.
94      ((= emacs-major-version 20)
95       ;; pces-e20 depends pces-20, so we compile pces-20 first.
96       '(pces-20 pces-e20_2 pces-e20 pces))
97      (t
98       ;; Mule 1.* and 2.*.
99       '(pces-om pces))))
100    ((boundp 'NEMACS)
101     ;; Nemacs.
102     '(pces-nemacs pces))
103    (t
104     '(pces-raw pces)))
105
106   ;; poem modules; poem modules depend on pces.
107   (cond
108    ((featurep 'mule)
109     (cond
110      ((featurep 'xemacs)
111       ;; XEmacs w/ mule.
112       '(poem-xm poem))
113      ((>= emacs-major-version 20)
114       (if (and (fboundp 'set-buffer-multibyte)
115                (subrp (symbol-function 'set-buffer-multibyte)))
116           ;; Emacs 20.3 and later.
117           '(poem-e20_3 poem-e20 poem)
118         ;; Emacs 20.1 and 20.2.
119         '(poem-e20_2 poem-e20 poem)))
120      (t
121       ;; Mule 1.* and 2.*.
122       '(poem-om poem))))
123    ((boundp 'NEMACS)
124     '(poem-nemacs poem))
125    (t
126     '(poem-ltn1 poem)))
127
128   ;; mcharset modules; mcharset modules depend on poem and pcustom.
129   (cond
130    ((featurep 'mule)
131     (cond
132      ((featurep 'xemacs)
133       ;; XEmacs w/ mule.
134       (if (featurep 'utf-2000)
135           ;; XEmacs w/ UTF-2000.
136           (setq emu-modules-not-to-compile
137                 (cons 'mcs-xmu emu-modules-not-to-compile)))
138       ;; mcs-xm depends mcs-20, so we compile mcs-20 first.
139       '(mcs-20 mcs-xmu mcs-xm mcharset))
140      ((>= emacs-major-version 20)
141       ;; Emacs 20 and later.
142       ;; mcs-e20 depends mcs-20, so we compile mcs-20 first.
143       '(mcs-20 mcs-e20 mcharset))
144      (t
145       ;; Mule 1.* and 2.*.
146       '(mcs-om mcharset))))
147    ((boundp 'NEMACS)
148     ;; Nemacs.
149     '(mcs-nemacs mcharset))
150    (t
151     '(mcs-ltn1 mcharset)))
152
153   ;; time-stamp.el; First appeared in Emacs 19.16.
154   (if (and (not (featurep 'xemacs))
155            (or (< emacs-major-version 19)
156                (and (= emacs-major-version 19)
157                     (< emacs-minor-version 16))))
158       '(time-stamp)
159     ;; no problem.
160     '())
161
162   ;; timezone.el; Some versions have Y2K problem.
163   (condition-case nil
164       (let ((load-path (delete (expand-file-name ".")
165                                (copy-sequence load-path))))
166         ;; v18 does not have timezone.el.
167         (require 'timezone)
168         ;; Is timezone.el APEL version?
169         (if (product-find 'timezone)
170             (error "timezone.el is APEL version. Install newer version."))
171         ;; Y2K test.
172         (or (string= (aref (timezone-parse-date "Sat, 1 Jan 00 00:00:00 GMT")
173                            0)
174                      "2000")
175             (error "timezone.el has Y2K problem. Install fixed version."))
176         ;; no problem.
177         '())
178     (error
179      '(timezone)))
180
181   ;; invisible modules; provided for backward compatibility with old "tm".
182   (cond
183    ((featurep 'xemacs)
184     ;; XEmacs.
185     '(inv-xemacs invisible))
186    ((>= emacs-major-version 19)
187     ;; Emacs 19 and later.
188     '(inv-19 invisible))
189    (t
190     ;; v18.
191     '(inv-18 invisible)))
192
193   ;; emu modules; provided for backward compatibility with old "tm".
194   (if (and (featurep 'mule)
195            (< emacs-major-version 20))
196       ;; Mule 1.* and 2.*.
197       '(emu-mule emu)
198     '(emu))
199
200   ;; emu submodules; text/richtext and text/enriched support.
201   (if (if (featurep 'xemacs)
202           (or (>= emacs-major-version 20)
203               (and (= emacs-major-version 19)
204                    (>= emacs-minor-version 14)))
205         (or (>= emacs-major-version 20)
206             (and (= emacs-major-version 19)
207                  (>= emacs-minor-version 29))))
208       ;; XEmacs 19.14 and later, or Emacs 19.29 and later.
209       '(richtext)
210     '(tinyrich))
211
212   ;; mule-caesar.el; part of apel-modules, but it is version-dependent.
213   '(mule-caesar)))
214
215;; Generate `emu-modules-to-compile' from `emu-modules-not-to-compile'
216;; and `emu-modules'.
217(let ((modules emu-modules-not-to-compile))
218  (setq emu-modules-to-compile (copy-sequence emu-modules))
219  (while modules
220    (setq emu-modules-to-compile (delq (car modules) emu-modules-to-compile)
221          modules (cdr modules))))
222
223;;; EMU-ELS ends here
Note: See TracBrowser for help on using the repository browser.