;;; EMU-ELS --- list of EMU modules to install. -*-Emacs-Lisp-*- ;;; Commentary: ;; APEL-MK imports `emu-modules' and `emu-modules-to-compile' from here. ;;; Code: (defvar emu-modules-not-to-compile nil) (defvar emu-modules-to-compile nil) ;; We use compile-time evaluation heavily. So, order of compilation is ;; very significant. For example, loading some module before compiling ;; it will cause "compile-time" evaluation many times. (defvar emu-modules (nconc ;; modules are sorted by compilation order. '(static broken) ;; product information. '(product apel-ver) ;; poe modules; poe modules depend on static. '(pym) (cond ;; XEmacs. ((featurep 'xemacs) '(poe-xemacs poe)) ;; Emacs 19.29 and earlier. (yes, includes Emacs 19.29.) ((and (= emacs-major-version 19) (<= emacs-minor-version 29)) '(localhook poe)) ;; Emacs 19.30 and later. ((>= emacs-major-version 19) '(poe)) (t ;; v18. '(localhook env poe-18 poe))) ;; pcustom modules; pcustom modules depend on poe. (if (and (module-installed-p 'custom) ;; new custom requires widget. (module-installed-p 'widget)) ;; if both 'custom and 'widget are found, we have new custom. '(pcustom) ;; pcustom does (require 'custom) at compile-time, and tinycustom ;; need to test existence of some custom macros at compile-time! ;; so, we must compile tinycustom first. '(tinycustom pcustom)) ;; pccl modules; pccl modules depend on broken. (cond ((featurep 'xemacs) (cond ;; XEmacs 21 w/ mule. ((and (featurep 'mule) (>= emacs-major-version 21)) '(pccl-20 pccl)) (t '(pccl)))) ((featurep 'mule) (cond ;; Emacs 20. ((>= emacs-major-version 20) '(pccl-20 pccl)) ;; Mule 1.* and 2.*. (t '(pccl-om pccl)))) (t '(pccl))) ;; pces modules; pces modules depend on poe. (cond ((featurep 'xemacs) (cond ((featurep 'mule) ;; XEmacs w/ mule. ;; pces-xfc depends pces-20, so we compile pces-20 first. '(pces-20 pces-xm pces-xfc pces)) ((featurep 'file-coding) ;; XEmacs w/ file-coding. ;; pces-xfc depends pces-20, so we compile pces-20 first. '(pces-20 pces-xfc pces)) (t '(pces-raw pces)))) ((featurep 'mule) (cond ;; Emacs 20.3 and later. ((and (fboundp 'set-buffer-multibyte) (subrp (symbol-function 'set-buffer-multibyte))) ;; pces-e20 depends pces-20, so we compile pces-20 first. '(pces-20 pces-e20 pces)) ;; Emacs 20.1 and 20.2. ((= emacs-major-version 20) ;; pces-e20 depends pces-20, so we compile pces-20 first. '(pces-20 pces-e20_2 pces-e20 pces)) (t ;; Mule 1.* and 2.*. '(pces-om pces)))) ((boundp 'NEMACS) ;; Nemacs. '(pces-nemacs pces)) (t '(pces-raw pces))) ;; poem modules; poem modules depend on pces. (cond ((featurep 'mule) (cond ((featurep 'xemacs) ;; XEmacs w/ mule. '(poem-xm poem)) ((>= emacs-major-version 20) (if (and (fboundp 'set-buffer-multibyte) (subrp (symbol-function 'set-buffer-multibyte))) ;; Emacs 20.3 and later. '(poem-e20_3 poem-e20 poem) ;; Emacs 20.1 and 20.2. '(poem-e20_2 poem-e20 poem))) (t ;; Mule 1.* and 2.*. '(poem-om poem)))) ((boundp 'NEMACS) '(poem-nemacs poem)) (t '(poem-ltn1 poem))) ;; mcharset modules; mcharset modules depend on poem and pcustom. (cond ((featurep 'mule) (cond ((featurep 'xemacs) ;; XEmacs w/ mule. (if (featurep 'utf-2000) ;; XEmacs w/ UTF-2000. (setq emu-modules-not-to-compile (cons 'mcs-xmu emu-modules-not-to-compile))) ;; mcs-xm depends mcs-20, so we compile mcs-20 first. '(mcs-20 mcs-xmu mcs-xm mcharset)) ((>= emacs-major-version 20) ;; Emacs 20 and later. ;; mcs-e20 depends mcs-20, so we compile mcs-20 first. '(mcs-20 mcs-e20 mcharset)) (t ;; Mule 1.* and 2.*. '(mcs-om mcharset)))) ((boundp 'NEMACS) ;; Nemacs. '(mcs-nemacs mcharset)) (t '(mcs-ltn1 mcharset))) ;; timezone.el; Some versions have Y2K problem. (condition-case nil (let ((load-path (delete (expand-file-name ".") (copy-sequence load-path)))) ;; v18 does not have timezone.el. (require 'timezone) ;; Is timezone.el APEL version? (if (product-find 'timezone) (error "timezone.el is APEL version. Install newer version.")) ;; Y2K test. (or (string= (aref (timezone-parse-date "Sat, 1 Jan 00 00:00:00 GMT") 0) "2000") (error "timezone.el has Y2K problem. Install fixed version.")) ;; Old parser test. (if (string= (aref (timezone-parse-date "Wednesday, 31-Jan-01 09:00:00 GMT") 0) "0") (error "timezone.el has old date parser. Install fixed version.")) ;; no problem. '()) (error '(timezone))) ;; invisible modules; provided for backward compatibility with old "tm". (cond ((featurep 'xemacs) ;; XEmacs. '(inv-xemacs invisible)) ((>= emacs-major-version 23) ;; Emacs 23 and later '(inv-23 invisible)) ((>= emacs-major-version 19) ;; Emacs 19 and later. '(inv-19 invisible)) (t ;; v18. '(inv-18 invisible))) ;; emu modules; provided for backward compatibility with old "tm". (if (and (featurep 'mule) (< emacs-major-version 20)) ;; Mule 1.* and 2.*. '(emu-mule emu) '(emu)) ;; emu submodules; text/richtext and text/enriched support. (if (if (featurep 'xemacs) (or (>= emacs-major-version 20) (and (= emacs-major-version 19) (>= emacs-minor-version 14))) (or (>= emacs-major-version 20) (and (= emacs-major-version 19) (>= emacs-minor-version 29)))) ;; XEmacs 19.14 and later, or Emacs 19.29 and later. '(richtext) '(tinyrich)) ;; mule-caesar.el; part of apel-modules, but it is version-dependent. '(mule-caesar))) ;; Generate `emu-modules-to-compile' from `emu-modules-not-to-compile' ;; and `emu-modules'. (let ((modules emu-modules-not-to-compile)) (setq emu-modules-to-compile (copy-sequence emu-modules)) (while modules (setq emu-modules-to-compile (delq (car modules) emu-modules-to-compile) modules (cdr modules)))) ;;; EMU-ELS ends here