Anonymous avatar Anonymous committed 833a3fa

Update to APEL 10.2

Comments (0)

Files changed (39)

+2000-05-25  Tanaka Akira      <akr@m17n.org>
+
+	* README.en, README.ja: Update for CVS via SSH.
+
+2000-05-24  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* pces-raw.el (encode-coding-string, decode-coding-string): Return
+	a copy of string.
+
+2000-04-25  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* EMU-ELS (emu-modules): Don't include `pccl-20' for XEmacs 20 and
+	earlier.
+
+2000-03-25  Mikio Nakajima  <minakaji@osaka.email.ne.jp>
+
+	* pym.el: Define edebug specs for `static-if', `static-when',
+	`static-unless', `static-condition-case', `static-defconst' and
+	`static-cond'.
+
+2000-03-08  Akihiro Arisawa  <ari@atesoft.advantest.co.jp>
+
+	* poe.el (format-time-string): Fix problem when `format' contains "%d"
+	or "%D".
+
+2000-03-04   Daiki Ueno  <ueno@ueda.info.waseda.ac.jp>
+
+	* poe.el (remassq,remassoc,remrassoc): Rewrite.
+	(remrassq): New function.
+
+
+2000-03-01  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* APEL: Version 10.2 released.
+
+2000-02-29  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* poe-18.el (current-time-string): Fixed leap year's day counting bug.
+
+2000-02-28  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* emu.el (enriched-encode): Do nothing for it if FSF Emacs 19.28
+	and earlier or XEmacs 19.13 and earlier is used.
+
+2000-02-25  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* emu.el (enriched-encode): Allow the 3rd argument ORIG-BUF for old
+	Emacsen.
+
+2000-02-21  Makoto Nakagawa  <Makoto.Nakagawa@jp.compaq.com>
+
+	* poe.el (format-time-string): New function for Emacs 19.28 and
+	earlier.
+	(format-time-month-list): New constant for `format-time-string'.
+	(format-time-week-list): New constant for `format-time-string'.
+
+2000-02-21   Daiki Ueno  <ueno@ueda.info.waseda.ac.jp>
+
+	* poe-18.el (walk-windows): New function.
+
+	* poe-xemacs.el
+	(set-extent-properties): New function.
+	(run-at-time): New function.
+	(cancel-timer): New function.
+	(with-timeout-handler): New function.
+	(with-timeout): New function.
+
+	* poe.el (remassq): New function.
+	(remassoc): New function.
+	(remrassoc): New function.
+	(get-buffer-window-list): New function.
+	(save-selected-frame): New macro.
+
+2000-02-10  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* poe.el (replace-match): Redefined to add `STRING' optional
+	argument.
+
+2000-02-07  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* poe-18.el (mod): Define as an alias for `%'.
+	(overlayp, move-overlay, delete-overlay, overlay-start,
+	overlay-end, overlay-buffer, overlay-properties, overlays-at,
+	overlays-in, next-overlay-change, previous-overlay-change,
+	overlay-lists, overlay-recenter, overlay-get):
+	Define as null function.
+
+2000-02-05  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* mcs-20.el (mime-charset-coding-system-alist): Add
+	`iso-2022-jp-3'.
+
+2000-02-04  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* poe.el (read-file-name): Replacement for Emacs 19.28 and earlier
+	(except for Emacs 18) or XEmacs 19.13 and earlier, for
+	compatibility.
+
+2000-02-04  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* timezone.el (timezone-floor): Eliminated.
+	(timezone-fix-time-2): Use `floor' instead of `timezone-floor'.
+
+	* poe-18.el (current-time): Fixed leap year count bug.
+	(set-time-zone-rule): New function.
+	(current-time-zone): Use `set-time-zone-rule'.
+	(floor): New function.
+	(window-live-p): New function.
+	(read-from-minibuffer): Redefined to add `HIST' optional argument.
+	(accept-process-output): Redefined to add `TIMEOUT' and
+	`TIMEOUT-MSECS' optional arguments.
+	(get-buffer-window): Redefined to add `FRAME' optional argument.
+
+	* poe.el (completing-read): Redefined to adjust optional arguments
+	for some emacsen.
+
+2000-01-31  Mikio Nakajima  <minakaji@osaka.email.ne.jp>
+
+	* poe-18.el (defalias): Remove its definition as a function and
+	define it as an alias for `fset'.
+	(auto-fill-function): Declare with defvar-maybe.
+	(unread-command-event): Ditto.
+	(unread-command-events): Ditto.
+	(insert-and-inherit): Defile with defalias.
+	(insert-before-markers-and-inherit): Ditto.
+	(number-to-string): Ditto.
+
+2000-01-30  Mikio Nakajima  <minakaji@osaka.email.ne.jp>
+
+	* poe-18.el (window-minibuffer-p): New function.
+
+2000-01-30  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>
+
+	* pces-om.el (insert-file-contents-as-coding-system): Ignore BEG,
+	END and REPLACE under Emacs 18, or Mule 1.1 or earlier.
+	(insert-file-contents-as-binary): Ditto.
+
+2000-01-27  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* APEL-CFG: Typo.
+
+2000-01-26  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* poe-18.el (set-match-data): New alias for `store-match-data'.
+	(save-match-data-internal): New variable.
+	(save-match-data): New macro; use above.
+
+	(defalias): Docstring sync.
+	(put-text-property): Typo.
+
+2000-01-23  Tsukamoto Tetsuo  <czkmt@remus.dti.ne.jp>
+
+	* poe-18.el (byte-code-function-p): Check if the CDR of OBJECT is
+	a cons cell.
+
+
+2000-01-21  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* APEL: Version 10.1 released.
+
+2000-01-19  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* poe.el (require): Handle `file-error' only.
+
+2000-01-12  OKAZAKI Tetsurou  <okazaki@be.to>
+
+	* EMU-ELS (emu-modules): Add `pccl' even if `mule' is not provided.
+
+2000-01-05  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* Makefile, README.en, README.ja: Update for the new CVS server.
+
+1999-12-24  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* poe.el (functionp): Define it before loading "localhook".
+
+
+1999-12-24  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* APEL: Version 10.0 released.
+
+1999-12-24  Keiichi Suzuki  <keiichi@nanap.org>
+
+	* apel-ver.el: Fix file header.
+
+1999-12-23  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* timezone.el (timezone-abs): Eliminated.
+	(timezone-zone-to-minute): Use `abs' instead of `timezone-abs'.
+
+	* poe-18.el (current-time-zone): Use `abs'.
+
+1999-12-23  Keiichi Suzuki  <keiichi@nanap.org>
+
+	* product.el: Fix file header. `checkdoc' fix.
+
+	* apel-ver.el: Fix file header.
+
+1999-12-22  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* APEL-ELS, EMU-ELS: product.el, apel-ver.el, time-stamp.el,
+	and timezone.el are version-dependent.
+
+	* product.el (emacs-major-version, emacs-minor-version): Moved
+	from poe.el.
+
+	* poe.el (emacs-major-version, emacs-minor-version): Removed.
+
+	* pym.el: Add product information.
+
+1999-12-22  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* poe.el (string-to-int): Commented out an alias for
+	`string-to-number'.
+
+1999-12-13  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* poe-18.el: Fix open parenthesis.
+
+	* README.ja: Sync up with README.en.
+
+	* README.en: Fix what versions of Emacsen can use
+	`normal-top-level-add-to-load-path'.
+
+1999-12-12  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* APEL-MK: Modified comments.
+
+	* poe.el: Modified comments.
+
+	* pym.el: Modified comments.
+	(defalias-maybe): Don't update `current-load-list'.
+
+1999-12-06  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* pym.el (subr-fboundp): Reverted; but considered as obsolete.
+
+1999-12-05  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* poe-18.el (numberp): New function; alias for `integerp'.
+	(abs): New function.
+
+	* poe-18.el (byte-code-function-p): Docstring sync.
+	(cyclic-function-indirection): New error symbol.
+	(indirect-function): New function; use above symbol.
+
+1999-11-30  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* poe-18.el (current-time-string): New local variable `lyear'
+	for leap year; renamed from `uru' and bind locally.
+
+	* poe.el (emacs-major-version, emacs-minor-version): Define
+	at compile-time as well as at load-time in order to do compile-
+	time version check.
+	(tcp): Require if `open-network-stream' is not available;
+	moved from "pces.el".
+
+	* pym.el: Removed comment.
+
+1999-11-28  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* poe.el, poe-18.el, poe-xemacs.el, pym.el: Modified comments.
+
+1999-11-25  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* poe-18.el: Modified comments.
+	(buffer-undo-list, data-directory): Use `defvar'.
+	(generate-new-buffer-name): Use `defun'.
+
+1999-11-22  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* pccl-20.el, pccl-om.el: Removed "[SOURCE INFO]" style
+	comment from docstrings.
+
+	* pccl-om.el, localhook.el, pcustom.el: Updated header.
+
+1999-11-13  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* Removed "[SOURCE INFO]" style comment from docstrings.
+	Most of them are out of sync, and now there are some other
+	ways to get such information.
+
+	* poe-18.el: Rearranged.
+	(lambda): New macro.
+	(get-char-property, next-single-property-change,
+	 previous-property-change, previous-single-property-change,
+	 text-property-any, text-property-not-all,
+	 next-char-property-change, previous-char-property-change):
+	Define as null function.
+
+	* poe-xemacs.el: Rearranged.
+	(eval-after-load): Moved to poe.el.
+
+	* poe.el: Rearranged; reduce load-time check.
+	Moved many macros to pym.el.
+	(require): New function; emulate optional 3rd arg.
+	(plist-get, plist-put): New functions.
+	(string-to-number): New function.
+	(push, pop): New macros.
+	(assoc-default): New function.
+	(eval-after-load, eval-next-after-load): New functions;
+	moved from poe-xemacs.el and modified for Emacs 19.28.
+	(buffer-file-type): New variable.
+	(with-temp-message, with-output-to-string): New macros.
+	(combine-after-change-calls): Docstring sync.
+	(match-string-no-properties): New function.
+	(convert-standard-filename): Do load-time check.
+
+1999-11-13  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* pym.el (defsubst-maybe-cond): New macro.
+
+	* pym.el (defun-maybe, defmacro-maybe, defsubst-maybe,
+	defalias-maybe, defvar-maybe, defconst-maybe,
+	defun-maybe-cond, defmacro-maybe-cond, def-edebug-spec):
+	Moved from poe.el.
+
+	* EMU-ELS (emu-modules): Added 'pym.
+
+	* pym.el: New file.
+
+1999-11-13  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* APEL-MK, APEL-CFG, APEL-ELS, EMU-ELS, Makefile: Revised.
+
+1999-11-12  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* inv-18.el, inv-19.el, inv-xemacs.el:
+	Require 'poe in each submodule.
+	(enable-invisible): Changed to function.
+	(disable-invisible): Renamed from `end-of-invisible'.
+	Changed to function.
+	(end-of-invisible): Make obsolete.
+
+1999-11-12  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* README.en (Version specific information): New section.
+	(Bug reports): Updated description of APEL mailing-lists.
+
+	* pcustom.el [old custom]: Refer to it.
+
+	* tinycustom.el: checkdoc.
+
+1999-11-12  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* APEL-MK: Require 'path-util explicitly.
+
+1999-11-12  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* APEL-MK, APEL-CFG, APEL-ELS, EMU-ELS: Rewritten.
+
+	* install.el: Removed v18 stuff; now we require 'poe.
+	Modified some comments.
+
+
+1999-12-22  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* timezone.el: Modified comments.
+	(toplevel): Require 'product.
+
+1999-12-21  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* apel-ver.el: Footer fix.
+
+1999-12-21  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* poe-18.el (current-time-zone): New function.
+	(current-time-world-timezones, current-time-local-timezone):
+	New variables.
+	(current-time-string): Use `current-time-zone' to get local timezone.
+	(current-time): Ditto.
+
+	* timezone.el: New file.
+
+	* APEL-ELS (apel-modules): Add `timezone' if existing timezone.el
+	has y2k problem.
+
+	* product.el (product-string-1): Use `int-to-string' instead of
+	`number-to-string'.
+
+1999-12-20  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* apel-ver.el, product.el: Header fix.
+
+1999-12-20  Keiichi Suzuki  <keiichi@nanap.org>
+
+	* alist.el, atype.el, broken.el, calist.el, emu-mule.el, emu.el,
+	  env.el, file-detect.el, filename.el, install.el, inv-18.el,
+	  inv-19.el, inv-xemacs.el, invisible.el, localhook.el,
+	  mcharset.el, mcs-20.el, mcs-e20.el, mcs-ltn1.el, mcs-nemacs.el,
+	  mcs-om.el, mcs-xm.el, mcs-xmu.el, mule-caesar.el, path-util.el,
+	  pccl-20.el, pccl-om.el, pccl.el, pces-20.el, pces-e20.el,
+	  pces-e20_2.el, pces-nemacs.el, pces-om.el, pces-raw.el,
+	  pces-xfc.el, pces-xm.el, pces.el, pcustom.el, poe-18.el,
+	  poe-xemacs.el, poe.el, poem-e20.el, poem-e20_2.el,
+	  poem-e20_3.el, poem-ltn1.el, poem-nemacs.el, poem-om.el,
+	  poem-xm.el, poem.el, richtext.el, static.el, time-stamp.el,
+	  tinycustom.el, tinyrich.el (TopLevel): Add product information.
+
+	* Sync up with apel-product.
+
+* 1999-11-12  Keiichi Suzuki  <keiichi@nanap.org>
+
+	* product.el (product-define): Add new slot `version-string'.
+	(product-provide): Likewise.
+	(product-version-string): New function.
+	(product-set-version-string): New function.
+	(product-string-1): Use `version-string'.
+	(product-for-each): New function.
+	(product-string): Separate `product-string' and
+	`product-string-verbose'.
+	(product-string-verbose): Likewise.
+	(product-parse-version-string): New function.
+
+* 1999-11-12  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* product.el: Some `checkdoc' fixes.
+	(product-version>=): Eliminate local variable.
+
+* 1999-11-12  Keiichi Suzuki  <keiichi@nanap.org>
+
+	* product.el: New file.
+
+	* apel-ver.el: New file.
+
+	* APEL-ELS (apel-modules): Add `apel-ver' and `product'.
+
+1999-11-25  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* poe-18.el (current-time-string, current-time): New functions.
+
+1999-11-11  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+	* localhook.el, pcustom.el: checkdoc.
+
+1999-11-09  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* pcustom.el: Warn if the new custom library is not found at the
+	compile time.
+
+	* APEL-CFG: Don't add the path of "custom" to `load-path'.
+
+	* poe-18.el (file-executable-p): Returns nil if the file does not
+	exist.
+
+1999-11-08  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* poe-18.el (put-text-property, next-property-change,
+	text-properties-at): Define as null function.
+
+1999-11-02  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* poe-18.el (add-text-properties, get-text-property): Define as
+	null function.
+	(file-executable-p): New function.
+
+
+1999-10-22  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* APEL: Version 9.23 released.
+
+1999-10-22  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* APEL-MK (compile-apel-package): Compile `emu-modules-to-compile'
+	instead of `emu-modules'.
+	(compile-apel): Likewise.
+
+	* EMU-ELS (emu-modules-to-compile): New variable which is used for
+	compiling in APEL-MK.  If the feature `utf-2000' is provided,
+	`mcs-xmu' is removed from its value even if `emu-modules' contains
+	it.
+	(emu-modules-not-to-compile): New variable.
+
+	* mcs-xm.el (mime-iso646-character-unification-alist): Move to
+	mcs-xmu.el.
+	(mime-unified-character-face): Move to mcs-xmu.el.
+	(mime-character-unification-limit-size): Move to mcs-xmu.el.
+	(decode-mime-charset-region-with-iso646-unification): Move to
+	mcs-xmu.el.
+
+	* mcs-xmu.el: New file.
+
+1999-10-22  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* EMU-ELS (pces-modules): Don't check for the feature `mule'
+	whether `pces-xfc' is required.
+	* pces.el: Likewise.
+
+	* mcs-xm.el: (decode-mime-charset-region-with-iso646-unification):
+	Narrow to the region while decoding; bind `case-fold-search' to nil.
+	(mime-character-unification-limit-size): Make it can also be nil
+	which means the size is unlimited.
+
+1999-10-14  Mikio Nakajima    <minakaji@osaka.email.ne.jp>
+
+	* mcs-xm.el (decode-mime-charset-region-with-iso646-unification):
+	Don't put `mime-unified-character-face' to unified text if it is
+	nil.
+	(mime-character-unification-limit-size): Fix doc string.
+
+1999-10-13  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* poe.el (file-coding): Provide it for XEmacs 20.4 or earlier with
+	MULE.
+
+1999-10-13  Daiki Ueno  <ueno@ueda.info.waseda.ac.jp>
+
+	* EMU-ELS (pces-modules): Add `pces-raw' if file-coding feature is
+	not available in a XEmacs-without-MULE.
+
+	* pces.el: Require `pces-raw' if file-coding feature is	not
+	available in a XEmacs-without-MULE.
+
+1999-10-04  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* path-util.el (exec-installed-p): Add parens.
+
+1999-10-04  Keiichi Suzuki  <keiichi@nanap.org>
+
+	* path-util.el (exec-installed-p): Use `file-executable-p' instead
+	of `file-exists-p'.
+	When FILE already inculdes suffix in `exec-suffix-list', do not
+	expand file name with `exec-suffix-list'.
+	(module-installed-p): Do not use `exec-installed-p'.
+
+1999-09-27  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* mcs-xm.el: Use `unless' instead `static-unless' to share *.elc
+	between UTF-2000 and non-UTF-2000.
+
+1999-09-24  Mikio Nakajima    <minakaji@osaka.email.ne.jp>
+
+	* pces-om.el (find-coding-system): New inline function.
+	<cf. [tm-ja:5238]>
+
+1999-09-23  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* mcs-20.el (mime-charset-coding-system-alist): Use coding-system
+	`tis-620' instead of `tis620'.
+
+	* mcs-xm.el (charsets-mime-charset-alist): Add setting for
+	`tis-620'.
+
+1999-09-22  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* mcs-20.el (mime-charset-coding-system-alist): Add `cp874'.
+
+1999-09-21  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* EMU-ELS (pces-modules): Add `pces-xfc' if the feature `mule' is
+	provided even though the feature `file-coding' is not provided.
+
+	* pces.el: Require `pces-xfc' if the feature `mule' is provided
+	even though the feature `file-coding' is not provided.
+
+
+1999-09-13  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* APEL: Version 9.22 released.
+
+1999-09-12  Mikio Nakajima  <minakaji@osaka.email.ne.jp>
+
+	* poe.el (defmacro-maybe-cond): Add edebug spec.
+
+1999-09-12  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* poe.el (defun-maybe-cond): Add edebug spec.
+
+1999-09-09  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* mcs-xm.el (mime-charset-decoder-alist): Don't use
+	`decode-mime-charset-region-with-iso646-unification' if running
+	XEmacs-UTF-2000.
+	(mime-iso646-character-unification-alist): Don't define if running
+	XEmacs-UTF-2000.
+	(mime-unified-character-face): Likewise.
+	(mime-character-unification-limit-size): Likewise.
+	(decode-mime-charset-region-with-iso646-unification): Likewise.
+
+1999-09-09  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* tinycustom.el (defface): Allow `type' in SPEC; enrich doc string.
+
+1999-09-08  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* tinycustom.el (frame-background-mode): New variable.
+
+	* poe.el (frame-background-mode): Move to tinycustom.el.
+
+1999-09-03  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* tinycustom.el (defface): Set the face attributes according to
+	SPEC.
+
+	* poe.el (frame-background-mode): New variable.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* poe.el: Delete autoload setting for `filename'.
+	(convert-standard-filename): Require `filename'.
+
+1999-09-02  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* poe.el (convert-standard-filename): Rearrange.
+
+1999-09-01  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* poe.el (convert-standard-filename): New function.
+
+1999-08-27  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* install.el (emacs-major-version): Deleted.
+	(emacs-minor-version): Deleted.
+
+	* path-util.el: Require `poe'. [cf. <tm-ja:5051>]
+
+1999-08-27  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* install.el: Require `poe'. <cf. [tm-ja:5055]>
+
+	* path-util.el (directory-files): Don't redefine.
+
+1999-08-26  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* path-util.el (directory-files): Emulate as Emacs 19 or later to
+	accept the optional fourth argument for old Emacsen.  It is needed
+	here for compiling other packages.
+
+	* APEL-ELS (apel-modules): Add `time-stamp' if Emacs version is
+	less than 19.16.
+
+	* time-stamp.el: New file imported from Emacs 19.28.
+
+1999-08-26  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* tinycustom.el (defface): Quote the argument of `make-face'.
+
+1999-08-25  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+	* APEL-CFG: Don't provide `emu'; add the latest path of "custom"
+	to `load-path'.
+
+1999-08-25  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* install.el: Don't require `emu'.
+	(emacs-major-version): New variable [for old emacsen].
+	(emacs-minor-version): New variable [for old emacsen].
+
+1999-08-25  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* poe-18.el (inline): New implementation using `defmacro'.
+
+
+1999-08-24  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* APEL: Version 9.21 released.
+
+1999-08-24  Taiji Can         <Taiji.Can@atesoft.advantest.co.jp>
+
+	* poem-nemacs.el: Use `char-width' instead of `char-columns'.
+
+1999-08-24  MORIOKA Tomohiko  <tomo@m17n.org>
+
+	* poe-18.el (inline): Use `defalias' instead of `defalias-maybe'.
+
+1999-08-21  Mikio Nakajima  <minakaji@osaka.email.ne.jp>
+
+	* poe.el (rassoc): Just ignore elements of LIST that are not conse
+	cell and add doc string according to its features.
+
+1999-08-20  Yuuichi Teranishi  <teranisi@gohome.org>
+
+	* poe-18.el (delete): Return nil when argument 'list' is nil.
+
+1999-08-17  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+	* README.en, README.ja (Anonymous FTP): New section.
+	* README.ja (CVS): Translate.
+
+
 2000-06-25  AichnerAd  <aichner@ecf.teradyne.com>
 
 	* Makefile (PRELOADS): Use lisp instead of `pwd`.  Handle
 	Native-NT XEmacs command-line quoting.
 
-2000-05-24  Katsumi Yamaoka   <yamaoka@jpl.org>
-
-	* pces-raw.el (encode-coding-string, decode-coding-string): Return
-	a copy of string.
-
 1999-07-26  SL Baur  <steve@miho>
 
 	* Makefile (ELCS): Restore missing files that tm needs.
 REQUIRES = fsf-compat xemacs-base
 CATEGORY = libs
 
-ELCS = broken.elc calist.elc emu.elc filename.elc \
-	install.elc inv-xemacs.elc invisible.elc mcharset.elc mcs-20.elc \
-	mcs-ltn1.elc mule-caesar.elc path-util.elc pccl.elc poe-xemacs.elc \
-	poe.elc poem-ltn1.elc poem-xm.elc poem.elc \
-	richtext.elc static.elc \
+ELCS = apel-ver.elc broken.elc calist.elc emu.elc filename.elc \
+	install.elc inv-xemacs.elc invisible.elc mcharset.elc \
+	mcs-20.elc mcs-ltn1.elc mule-caesar.elc path-util.elc \
+	pccl.elc poe-xemacs.elc poe.elc poem-ltn1.elc poem-xm.elc \
+	poem.elc product.elc pym.elc richtext.elc static.elc \
 	pcustom.elc pces.elc pces-raw.elc pces-20.elc pces-xfc.elc
 
 ## The following files are no longer in net apel, but tm needs them.
 
 include ../../XEmacs.rules
 
-ifeq ($(BUILD_MULE),t)
+ifeq ($(BUILD_WITHOUT_MULE),)
 # ELCS += emu-x20.elc
-ELCS += emu-mule.elc mcs-xm.elc pccl-20.elc pces-xm.elc 
+ELCS += emu-mule.elc mcs-xm.elc pccl-20.elc pces-xm.elc mcs-xmu.elc
 EXTRA_SOURCES += README.ja
 endif
 
       mcs-20.el     --- shared module between Emacs 20 and XEmacs-MULE
       mcs-e20.el    --- for Emacs 20
       mcs-xm.el     --- for XEmacs-MULE
+      mcs-xmu.el    --- for XEmacs-MULE to unify ISO646 characters
 
     static.el --- utility for static evaluation
 
 =============================
 
   If you are using Emacs or Mule, please add directory of apel to
-  load-path.  If you install by default setting with Emacs 20.1/20.2,
-  you can write subdirs.el for example:
+  load-path.  If you install by default setting with Emacs 19.29 or
+  later or Emacs 20.1/20.2, you can write subdirs.el for example:
 
   --------------------------------------------------------------------
   (normal-top-level-add-to-load-path '("apel"))
   set up load-path with normal installation.
 
 
+Version specific information
+============================
+
+For Emacs 18 users: "old byte-compiler" vs "new byte-compiler"
+
+  In this package, we use compile-time evaluation heavily.
+  Unfortunately, the byte-compiler bundled with Emacs 18 (the "old
+  byte-compiler") does not have features such as `eval-when-compile'
+  and `eval-and-compile', and our emulation version of these macros
+  evaluate "compile-time evaluation" at load-time or at run-time!
+  In addition, the "old byte-compiler" cannot compile top-level use of
+  macros and leaves most of our code uncompiled.
+
+  Therefore, we recommend you to use the "new" optimizing byte-compiler.
+  It is the origin of byte-compiler bundled with Emacs 19 and later.
+
+  Optimizing byte-compiler for Emacs 18 is available from the Emacs
+  Lisp Archive and its mirrors.
+
+  In Mule 1.* days, "contrib" package for Mule 1.* was distributed and
+  it contained the "new byte-compiler" for Mule.  But, I think it is
+  difficult to obtain this package now.
+
+  AFAIK, the "new byte-compiler" for Emacs 18 is also bundled with SKK
+  9.6.  It includes patch for Mule 1.*.
+
+
+For Emacs 19.34 and XEmacs 19.14 users: "old custom" vs "new custom"
+
+  "custom" library bundled with Emacs 19.32 - 19.34, XEmacs 19.14, and
+  Gnus 5.2/5.3 is "old", its API is incompatible with "new custom"
+  bundled with Emacs 20.1, XEmacs 19.15, or newer, and Gnus 5.4/5.5.
+
+  "new custom" for Emacs 19.34 and XEmacs 19.15 - 20.2 is available
+  from the following URL.
+
+  ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz
+
+  (Note that "new custom" bundled with XEmacs 19.15 - 20.2, and Gnus
+  5.4/5.5 is older than this version.)
+
+  Before installing "new custom", you should check the following points.
+
+    1) If you stick to Gnus 5.2/5.3 (or any other applications which
+       use "old custom"), you should not install "new custom".
+
+    2) If you use Mule (based on Emacs 19), you must apply this patch
+       to "new custom".
+
+----8<------8<------8<------8<------8<------8<------8<------8<----
+--- custom-1.9962/cus-face.el~	Wed Mar  4 19:52:39 1998
++++ custom-1.9962/cus-face.el	Mon Mar  9 08:05:33 1998
+@@ -96,7 +96,7 @@
+       "Define a new FACE on all frames, ignoring X resources."
+       (interactive "SMake face: ")
+       (or (internal-find-face name)
+-	  (let ((face (make-vector 8 nil)))
++	  (let ((face (make-vector face-vector-length nil)))
+ 	    (aset face 0 'face)
+ 	    (aset face 1 name)
+ 	    (let* ((frames (frame-list))
+----8<------8<------8<------8<------8<------8<------8<------8<----
+
+    3) Applications compiled with "custom" require the same version of
+       "custom" at load-time (and run-time).  Therefore, if you use
+       "new custom", you must always include "new custom" in your
+       load-path.  The easiest way to achieve this is "subdirs.el";
+       if you installed "new custom" in "/usr/local/share/emacs/19.34/
+       site-lisp/custom/", put the following line to "/usr/local/share/
+       emacs/19.34/site-lisp/subdirs.el".
+
+       (normal-top-level-add-to-load-path '("custom"))
+
+
 How to use
 ==========
 
 ===========
 
   If you write bug-reports and/or suggestions for improvement, please
-  send them to the tm Mailing List:
+  send them to the APEL Mailing List:
 
-	bug-tm-en@chamonix.jaist.ac.jp	(English)
-	bug-tm-ja@chamonix.jaist.ac.jp	(Japanese)
+	apel-en@m17n.org	(English)
+	apel-ja@m17n.org	(Japanese)
 
-  Via the tm ML, you can report APEL bugs, obtain the latest release
-  of APEL, and discuss future enhancements to APEL.  To join the tm
+  Via the APEL ML, you can report APEL bugs, obtain the latest release
+  of APEL, and discuss future enhancements to APEL.  To join the APEL
   ML, send an empty e-mail to
 
-	tm-en-help@chamonix.jaist.ac.jp	(English)
-	tm-ja-help@chamonix.jaist.ac.jp	(Japanese)
+	apel-en-ctl@m17n.org	(English)
+	apel-ja-ctl@m17n.org	(Japanese)
+
+
+Anonymous FTP
+=============
+
+  Latest release of APEL can be obtained from:
+
+    ftp://ftp.m17n.org/pub/mule/apel/
 
 
 CVS
   Development of APEL uses CVS.  So latest developing version is
   available at CVS.
 
-(0) cvs login
+(0) cvs login (first time only)
 
-    % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
-	login
+    % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login
 
     CVS password: [CR] # NULL string
 
 (1) checkout
 
-    % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
-	checkout apel
-
+    % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout apel
 
   If you would like to join CVS based development, please send mail to
 
-	cvs@chamonix.jaist.ac.jp
+	cvs@cvs.m17n.org
 
-  with your account name and UNIX /etc/passwd style crypted password.
+  with your account name and your public key for ssh.  cvsroot is
+  :ext:cvs@cvs.m17n.org:/cvs/root.
+
+  If you cannot use ssh, please send UNIX /etc/passwd style crypted
+  password.  you can commit with the cvsroot
+  :pserver:<accountname>@cvs.m17n.org:/cvs/root.
+
   We hope you will join the open development.
       mcs-20.el     --- Emacs 20 $B$H(B XEmacs-MULE $BMQ$N6&M-%b%8%e!<%k(B
       mcs-e20.el    --- Emacs 20 $BMQ(B
       mcs-xm.el     --- XEmacs-MULE $BMQ(B
+      mcs-xmu.el    --- XEmacs-MULE $BMQ(B (ISO646 $BJ8;z$NC10l2=(B)
 
     static.el --- $B@EE*I>2A$N$?$a$N%f!<%F%#%j%F%#!<(B
 
   $BCm0U$7$F$/$@$5$$!#(B
 
 
-load-path$B!J(BEmacs $B$H(B MULE $B>l9g!K(B
-===============================
+load-path$B!J(BEmacs $B$H(B MULE $B$N>l9g!K(B
+================================
 
   $B$b$7(B Emacs $B$b$7$/$O(B Mule $B$r$*;H$$$J$i!"(BAPEL $B$r(B install $B$7$?>l=j$r(B
-  load-path $B$KDI2C$7$F$/$@$5$$!#$b$7=i4|@_Dj$G%$%s%9%H!<%k$7$?$N$J$i!"(B
-  $B<!$N$h$&$K(B subdirs.el $B$r=q$/$3$H$,$G$-$^$9!#(B
-
-  $BNc(B:
+  load-path $B$KDI2C$7$F$/$@$5$$!#$b$7(B Emacs 19.29 $B0J9_$^$?$O(B Emacs 20.1,
+  20.2 $B$r;H$C$F=i4|@_Dj$G%$%s%9%H!<%k$7$?$N$J$i!"<!$N$h$&$K(B subdirs.el
+  $B$r=q$/$3$H$,$G$-$^$9!#(B
 
   --------------------------------------------------------------------
   (normal-top-level-add-to-load-path '("apel"))
   --------------------------------------------------------------------
 
-  $B$b$7(B Emacs 20.3 $B0J9_$b$7$/$O(B XEmacs $B$r$*;H$$$J$i!"(Bload-path $B$r@_Dj$9(B
-  $B$kI,MW$O$"$j$^$;$s!#(B
+  $B$b$7(B Emacs 20.3 $B0J9_$b$7$/$O(B XEmacs $B$r;H$C$FIaDL$K%$%s%9%H!<%k$9$k$N(B
+  $B$J$i$P!"(Bload-path $B$r@_Dj$9$kI,MW$O$"$j$^$;$s!#(B
+
+
+Emacs $B$N%P!<%8%g%s$K4XO"$7$?>pJs(B
+================================
+
+$B!V8E$$(B byte-compiler$B!W$H!V?7$7$$(B byte-compiler$B!W(B
+Emacs 18 $B$N%f!<%6$N$_$J$5$s$X(B:
+
+  $B$3$N%Q%C%1!<%8$G$O%3%s%Q%$%k;~$K$*$1$k>r7oH=CG$r$?$/$5$s9T$J$C$F$$$^(B
+  $B$9!#;DG0$J$,$i(B Emacs 18 $B$KIUB0$7$F$$$k(B byte-compiler $B$K$O!"Nc$($P(B
+  `eval-when-compile' $B$d(B `eval-and-compile' $B$N5!G=$,L5$$$N$GBeMQIJ$N%^(B
+  $B%/%m$rMQ0U$7$F$"$j$^$9$,!"$3$l$i$O%3%s%Q%$%k;~$@$1$G$J$/(B load $B;~$^$?(B
+  $B$O<B9T;~$K$bF/$$$F$7$^$$$^$9(B!   $B2C$($F!V8E$$(B byte-compiler$B!W$O%H%C%W(B
+  $B%l%Y%k$N%^%/%m$r%3%s%Q%$%k$7$F$/$l$J$$$N$G!"(BAPEL $B$NB?$/$N%3!<%I$,%3(B
+  $B%s%Q%$%k$5$l$J$$$^$^$K$J$C$F$7$^$$$^$9!#(B
+
+  $B$=$3$G!":GE,2=$r9T$J$&!V?7$7$$(B byte-compiler$B!W$r;H$&$3$H$r$*4+$a$7$^(B
+  $B$9!#$=$l$O(B Emacs 19 $B0J9_$KIUB0$7$F$$$k(B byte-compiler $B$N85$K$J$C$F$$(B
+  $B$k$b$N$G$9!#(B
+
+  $B:GE,2=$r9T$J$&(B byte-compiler $B$O(B Emacs Lisp Archive $B$*$h$S$=$l$i$N%_(B
+  $B%i!<$+$iF~<j$9$k$3$H$,$G$-$^$9!#(B
+
+  Mule 1.* $B$N;~Be$K$O(B Mule $BMQ$N!V?7$7$$(B byte-compiler$B!W$r4^$`(B Mule 1.*
+  $BMQ$N(B "contrib" $B%Q%C%1!<%8$,G[I[$5$l$F$$$^$7$?!#$7$+$78=:_$G$O$3$N%Q%C(B
+  $B%1!<%8$r<j$KF~$l$k$3$H$OFq$7$$$G$7$g$&!#(B
+
+  $B2f!9$NCN$k8B$j$G$O(B Emacs 18 $BMQ$N!V?7$7$$(B byte-compiler$B!W$O(B SKK 9.6
+  $B$KIUB0$7$F$$$^$9!#$3$l$O(B Mule 1.* $BMQ$N%Q%C%A$b4^$s$G$$$^$9!#(B
+
+
+$B!V8E$$(B custom$B!W$H!V?7$7$$(B custom$B!W(B
+Emacs 19.34 $B$H(B XEmacs 19.14 $B$N%f!<%6$N$_$J$5$s$X(B:
+
+  Emacs 19.32$B!A(B19.34$B!"(BXEmacs 19.14 $B$*$h$S(B Gnus 5.2/5.3 $B$K4^$^$l$F$$$k(B
+  custom $B%i%$%V%i%j$O!V8E$$!W$b$N$G!"$3$l$N(B API $B$O(B Emacs 20.1 $B$^$?$O(B
+  XEmacs 19.15 $B$h$j?7$7$$(B Emacsen $B$H(B Gnus 5.4/5.5 $B$K4^$^$l$F$$$k(B
+  $B!V?7$7$$(B custom$B!W$H$O0c$C$F$$$^$9!#(B
+
+  Emacs 19.34 $B$H(B XEmacs 19.15$B!A(B20.2 $BMQ$N!V?7$7$$(B custom$B!W$O!"0J2<$N(B
+  URL $B$+$i<j$KF~$l$k$3$H$,$G$-$^$9!#(B
+
+  ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz
+
+  ($BCm(B: XEmacs 19.15$B!A(B20.2 $B$H(B Gnus 5.4/5.5 $B$K4^$^$l$F$$$k!V?7$7$$(B
+       custom$B!W$O$3$NHG$h$j8E$$$b$N$G$9!#(B)
+
+  $B!V?7$7$$(B custom$B!W$r%$%s%9%H!<%k$9$kA0$K!"<!$N3F9`L\$r%A%'%C%/$7$F2<(B
+  $B$5$$!#(B
+
+    1) $B$b$7$"$J$?$,(B Gnus 5.2/5.3 ($B$^$?$OB>$N!V8E$$(B custom$B!W$r;H$&%"%W(B
+       $B%j%1!<%7%g%s(B) $B$r;H$&$3$H$K8G<9$7$F$$$k$N$J$i$P!V?7$7$$(B custom$B!W(B
+       $B$r%$%s%9%H!<%k$7$F$O$$$1$^$;$s!#(B
+
+    2) Emacs 19 $B$r85$K$7$?(B Mule $B$r;H$&$N$J$i$P!"$3$N%Q%C%A$r!V?7$7$$(B
+       custom$B!W$KEv$F$kI,MW$,$"$j$^$9!#(B
+
+----8<------8<------8<------8<------8<------8<------8<------8<----
+--- custom-1.9962/cus-face.el~	Wed Mar  4 19:52:39 1998
++++ custom-1.9962/cus-face.el	Mon Mar  9 08:05:33 1998
+@@ -96,7 +96,7 @@
+       "Define a new FACE on all frames, ignoring X resources."
+       (interactive "SMake face: ")
+       (or (internal-find-face name)
+-	  (let ((face (make-vector 8 nil)))
++	  (let ((face (make-vector face-vector-length nil)))
+ 	    (aset face 0 'face)
+ 	    (aset face 1 name)
+ 	    (let* ((frames (frame-list))
+----8<------8<------8<------8<------8<------8<------8<------8<----
+
+    3) custom $B$r;H$&%3%s%Q%$%k$5$l$?%"%W%j%1!<%7%g%s$O!"$=$l$r(B load $B$9(B
+       $B$k$H$-$d<B9T$9$k$H$-$KF1$8%P!<%8%g%s$N(B custom $B$rI,MW$H$7$^$9!#(B
+       $B$7$?$,$C$F!"$$$D$b(B load-path $B$K!V?7$7$$(B custom$B!W$r4^$a$F$*$+$J(B
+       $B$1$l$P$J$j$^$;$s!#(B
+       $B$3$l$r9T$J$&$?$a$N$b$C$H$b4JC1$JJ}K!$O(B subdirs.el $B$r;H$&$3$H$G(B
+       $B$9!#(B
+       $B!V?7$7$$(B custom$B!W$,(B /usr/local/share/emacs/19.34/site-lisp/custom/
+       $B$K%$%s%9%H!<%k$5$l$F$$$k$N$J$i$P!"(B
+       /usr/local/share/emacs/19.34/site-lisp/subdirs.el $B$H$$$&%U%!%$(B
+       $B%k$K0J2<$N9T$r=q$-9~$s$G2<$5$$!#(B
+
+       (normal-top-level-add-to-load-path '("custom"))
 
 
 $B;H$$J}(B
 $B%P%0Js9p(B
 ===========
 
-  $B%P%0Js9p$d2~A1$NDs0F$r=q$$$?$H$-$O!"@'Hs(B tm $B%a!<%j%s%0%j%9%H$KAw$C$F(B
-  $B$/$@$5$$(B:
+  $B%P%0Js9p$d2~A1$NDs0F$r=q$$$?$H$-$O!"@'Hs(B APEL $B%a!<%j%s%0%j%9%H$KAw$C(B
+  $B$F$/$@$5$$(B:
 
-	bug-tm-en@chamonix.jaist.ac.jp	($B1Q8l(B)
-	bug-tm-ja@chamonix.jaist.ac.jp	($BF|K\8l(B)
+	apel-en@m17n.org	($B1Q8l(B)
+	apel-ja@m17n.org	($BF|K\8l(B)
 
-  tm ML $B$rDL$7$F!"(BAPEL $B$N%P%0$rJs9p$7$?$j!"(BAPEL $B$N:G?7$N%j%j!<%9$r<hF@(B
-  $B$7$?$j!"(BAPEL $B$N>-Mh$N3HD%$N5DO@$r$7$?$j$9$k$3$H$,$G$-$^$9!#(Btm ML $B$K(B
-  $B;22C$9$k$K$O!"6u$NEE;R%a!<%k$r(B
+  APEL ML $B$rDL$7$F!"(BAPEL $B$N%P%0$rJs9p$7$?$j!"(BAPEL $B$N:G?7$N%j%j!<%9$r<h(B
+  $BF@$7$?$j!"(BAPEL $B$N>-Mh$N3HD%$N5DO@$r$7$?$j$9$k$3$H$,$G$-$^$9!#(BAPEL ML
+  $B$K;22C$9$k$K$O!"6u$NEE;R%a!<%k$r(B
 
-	tm-en-help@chamonix.jaist.ac.jp	($B1Q8l(B)
-	tm-ja-help@chamonix.jaist.ac.jp	($BF|K\8l(B)
+	apel-en-ctl@m17n.org	($B1Q8l(B)
+	apel-ja-ctl@m17n.org	($BF|K\8l(B)
 
   $B$KAw$C$F$/$@$5$$!#(B
 
 
+Anonymous FTP
+=============
+
+  $B:G?7$N(B APEL $B$N%j%j!<%9$O0J2<$N>l=j$+$i<hF@$G$-$^$9(B:
+
+    ftp://ftp.m17n.org/pub/mule/apel/
+
+
 CVS
 ===
 
-  Development of APEL uses CVS.  So latest developing version is
-  available at CVS.
+  APEL $B$N3+H/$O(B CVS $B$r;H$C$F$$$^$9!#:G?7$N3+H/%P!<%8%g%s$r(B CVS $B$G(B
+  $B<hF@$G$-$^$9!#(B
 
-(0) cvs login
+(0) cvs login ($B0l2sL\$@$1(B)
 
-    % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
-	login
+    % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login
 
-    CVS password: [CR] # NULL string
+    CVS password: [CR] # $B6uJ8;zNs(B
 
 (1) checkout
 
-    % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
-	checkout apel
+    % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout apel
 
+  CVS $B$K4p$E$$$?3+H/$K;22C$7$?$$$H$-$O!"(B
 
-  If you would like to join CVS based development, please send mail to
+	cvs@cvs.m17n.org
 
-	cvs@chamonix.jaist.ac.jp
+  $B$K%"%+%&%s%HL>$H!"(Bssh $B$N8x3+80$rAw$C$F$/$@$5$$!#(Bssh $B7PM3$G$O!"(B
+  cvsroot $B$O(B :ext:cvs@cvs.m17n.org:/cvs/root $B$H$J$j$^$9!#(B
 
-  with your account name and UNIX /etc/passwd style crypted password.
-  We hope you will join the open development.
+  $B$I$&$7$F$b(B ssh $B$,;H$($J$$>l9g!"(Bpserver $B7PM3$G$b3+H/$K;22C$G$-$^$9!#(B
+  $B$3$N>l9g!"(BUNIX $B$N(B /etc/passwd $BMM<0$G0E9f2=$5$l$?%Q%9%o!<%I$rAw$C$F2<(B
+  $B$5$$!#$3$N>l9g(B cvsroot $B$O(B :pserver:<$B%"%+%&%s%HL>(B>@cvs.m17n.org:/cvs/root
+  $B$H$J$j$^$9!#(B
+
+  $B3+$+$l$?3+H/$K;22C$7$F$/$@$5$k$3$H$r4|BT$7$^$9!#(B
+;;; apel-ver.el --- Declare APEL version.
+
+;; Copyright (C) 1999 Free Software Foundation, Inc.
+
+;; Author: Shuhei KOBAYASHI <shuhei@aqua.ocn.ne.jp>
+;;	Keiichi Suzuki <keiichi@nanap.org>
+;; Keywords: compatibility
+
+;; This file is part of APEL (A Portable Emacs Library).
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or (at
+;; your option) any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Put the following lines to each file of APEL package.
+;;
+;; (require 'product)
+;; (product-provide (provide FEATURE) (require 'apel-ver))
+
+;;; Code:
+
+(require 'product)			; beware of circular dependency.
+(provide 'apel-ver)			; these two files depend on each other.
+
+(product-provide 'apel-ver
+  ;; (product-define "APEL" nil '(9 23))	; comment.
+  ;; (product-define "APEL" nil '(10 0))	; Released 24 December 1999
+  ;; (product-define "APEL" nil '(10 1))	; Released 20 January 2000
+  (product-define "APEL" nil '(10 2))	; Released 01 March 2000
+  ;; (product-define "APEL" nil '(10 3))
+  )
+
+(defun apel-version ()
+  "Print APEL version."
+  (interactive)
+  (let ((product-info (product-string-1 'apel-ver t)))
+    (if (interactive-p)
+	(message "%s" product-info)
+      product-info)))
+
+
+;;; @ End.
+;;;
+
+;;; apel-ver.el ends here
 
 ;;; Code:
 
-(require 'emu)
+(require 'emu)				; for backward compatibility.
+(require 'poe)				; delete.
 (require 'alist)
 
 
 ;;; @ end
 ;;;
 
-(provide 'atype)
+(require 'product)
+(product-provide (provide 'atype) (require 'apel-ver))
 
 ;;; atype.el ends here
 ;;; @ end
 ;;;
 
-(provide 'broken)
+(require 'product)
+(product-provide (provide 'broken) (require 'apel-ver))
 
 ;;; broken.el ends here
 ;;; @ end
 ;;;
 
-(provide 'calist)
+(require 'product)
+(product-provide (provide 'calist) (require 'apel-ver))
 
 ;;; calist.el ends here
 ;;; @ end
 ;;;
 
-(provide 'emu-mule)
+(require 'product)
+(product-provide (provide 'emu-mule) (require 'apel-ver))
 
 ;;; emu-mule.el ends here
        (autoload 'enriched-decode "tinyrich")
        ))
 
+(if (or (and (eq emacs-major-version 19)
+	     (>= emacs-minor-version (if (featurep 'xemacs) 14 29)))
+	(and (eq emacs-major-version 20)
+	     (< emacs-minor-version (if (featurep 'xemacs) 3 1))))
+    (eval-after-load "enriched"
+      '(if (fboundp 'si:enriched-encode)
+	   nil
+	 (fset 'si:enriched-encode (symbol-function 'enriched-encode))
+	 (defun enriched-encode (from to &optional orig-buf)
+	   (let* ((si:enriched-initial-annotation enriched-initial-annotation)
+		  (enriched-initial-annotation
+		   (if (stringp si:enriched-initial-annotation)
+		       si:enriched-initial-annotation
+		     (function
+		      (lambda ()
+			(save-excursion
+			  ;; Eval this in the buffer we are annotating.  This
+			  ;; fixes a bug which was saving incorrect File-Width
+			  ;; information, since we were looking at local
+			  ;; variables in the wrong buffer.
+			  (if orig-buf (set-buffer orig-buf))
+			  (funcall si:enriched-initial-annotation)))))))
+	     (si::enriched-encode from to))))))
+
 
 ;;; @ end
 ;;;
 
-(provide 'emu)
+(require 'product)
+(product-provide (provide 'emu) (require 'apel-ver))
 
 ;;; emu.el ends here
 
 (require 'path-util)
 
-(provide 'file-detect)
+(require 'product)
+(product-provide (provide 'file-detect) (require 'apel-ver))
 
 ;;; file-detect.el ends here
 ;;; @ end
 ;;;
 
-(provide 'filename)
+(require 'product)
+(product-provide (provide 'filename) (require 'apel-ver))
 
 ;;; filename.el ends here
 
 ;;; Code:
 
-;; for historical reason, we do (require 'emu) in this file.
-;; but you should do (require 'emu) explicitly if you use functions and/or
-;; variables defined in emu module.
-(require 'emu)
+(require 'poe)				; make-directory for v18
 (require 'path-util)			; default-load-path
 
-;; verbatim copy of `defun-maybe' from poe.el, and
-;; `make-directory-internal' and `make-directory' from poe-18.el
-(defmacro defun-maybe (name &rest everything-else)
-  "Define NAME as a function if NAME is not defined.
-See also the function `defun'."
-  (or (and (fboundp name)
-	   (not (get name 'defun-maybe)))
-      (` (or (fboundp (quote (, name)))
-	     (prog1
-		 (defun (, name) (,@ everything-else))
-	       (put (quote (, name)) 'defun-maybe t))))))
-
-(defun-maybe make-directory-internal (dirname)
-  "Create a directory. One argument, a file name string."
-  (let ((dir (expand-file-name dirname)))
-    (if (file-exists-p dir)
-	(error "Creating directory: %s is already exist" dir)
-      (call-process "mkdir" nil nil nil dir))))
-
-(defun-maybe make-directory (dir &optional parents)
-  "Create the directory DIR and any nonexistent parent dirs.
-The second (optional) argument PARENTS says whether
-to create parent directories if they don't exist."
-  (let ((len (length dir))
-	(p 0) p1 path)
-    (catch 'tag
-      (while (and (< p len) (string-match "[^/]*/?" dir p))
-	(setq p1 (match-end 0))
-	(if (= p1 len)
-	    (throw 'tag nil))
-	(setq path (substring dir 0 p1))
-	(if (not (file-directory-p path))
-	    (cond ((file-exists-p path)
-		   (error "Creating directory: %s is not directory" path))
-		  ((null parents)
-		   (error "Creating directory: %s is not exist" path))
-		  (t
-		   (make-directory-internal path))))
-	(setq p p1)))
-    (make-directory-internal dir)))
-
 
 ;;; @ compile Emacs Lisp files
 ;;;
 	(byte-compile-file el-file))))
 
 (defun compile-elisp-modules (modules &optional path every-time)
-  (mapcar (function
-	   (lambda (module)
-	     (compile-elisp-module module path every-time)))
-	  modules))
+  (mapcar
+   (function
+    (lambda (module)
+      (compile-elisp-module module path every-time)))
+   modules))
 
 
 ;;; @ install files
 ;;;
 
-(defvar install-overwritten-file-modes (+ (* 64 6)(* 8 4) 4))
+(defvar install-overwritten-file-modes (+ (* 64 6)(* 8 4) 4)) ; 0644
 
 (defun install-file (file src dest &optional move overwrite just-print)
   (if just-print
 (defun install-files (files src dest &optional move overwrite just-print)
   (or (file-exists-p dest)
       (make-directory dest t))
-  (mapcar (function
-	   (lambda (file)
-	     (install-file file src dest move overwrite just-print)))
-	  files))
+  (mapcar
+   (function
+    (lambda (file)
+      (install-file file src dest move overwrite just-print)))
+   files))
 
 
 ;;; @@ install Emacs Lisp files
 (defun install-elisp-modules (modules src dest &optional just-print)
   (or (file-exists-p dest)
       (make-directory dest t))
-  (mapcar (function
-	   (lambda (module)
-	     (install-elisp-module module src dest just-print)))
-	  modules))
+  (mapcar
+   (function
+    (lambda (module)
+      (install-elisp-module module src dest just-print)))
+   modules))
 
 
 ;;; @ detect install path
 
 ;; install to shared directory (maybe "/usr/local")
 (defvar install-prefix
-  (if (or (<= emacs-major-version 18)	; running-emacs-18
-	  (featurep 'xemacs)		; running-xemacs
+  (if (or (<= emacs-major-version 18)
+	  (featurep 'xemacs)
 	  (and (boundp 'system-configuration-options) ; 19.29 or later
 	       (string= system-configuration-options "NT"))) ; for Meadow
       (expand-file-name "../../.." exec-directory)
 (defvar install-elisp-prefix
   (if (>= emacs-major-version 19)
       "site-lisp"
+    ;; v18 does not have standard site directory.
     "local.lisp"))
 
 (defun install-detect-elisp-directory (&optional prefix elisp-prefix
       (setq prefix install-prefix))
   (or elisp-prefix
       (setq elisp-prefix install-elisp-prefix))
-  (or
-   (catch 'tag
-     (let ((rest default-load-path)
-	   (pat (concat "^"
-			(expand-file-name (concat ".*/" elisp-prefix) prefix)
-			"/?$")))
-       (while rest
-	 (if (string-match pat (car rest))
-	     (if (or allow-version-specific
-		     (not (string-match (format "/%d\\.%d"
-						emacs-major-version
-						emacs-minor-version)
-					(car rest))))
-		 (throw 'tag (car rest))))
-	 (setq rest (cdr rest)))))
-   (expand-file-name (concat
-		      (if (and		; running-emacs-19_29-or-later
-			   (not (featurep 'xemacs))
-			   (or (>= emacs-major-version 20)
-			       (and (= emacs-major-version 19)
-				    (>= emacs-minor-version 29))))
-			  "share/"
-			"lib/")
-		      (cond ((boundp 'NEMACS) "nemacs/")
-			    ((boundp 'MULE)   "mule/")
-			    ((featurep 'xemacs)	; running-xemacs
-			     (if (featurep 'mule)
-				 "xmule/"
-			       "xemacs/"))
-			    (t "emacs/"))
-		      elisp-prefix)
-		     prefix)))
+  (or (catch 'tag
+	(let ((rest default-load-path)
+	      (regexp (concat "^"
+			      (expand-file-name (concat ".*/" elisp-prefix)
+						prefix)
+			      "/?$")))
+	  (while rest
+	    (if (string-match regexp (car rest))
+		(if (or allow-version-specific
+			(not (string-match (format "/%d\\.%d"
+						   emacs-major-version
+						   emacs-minor-version)
+					   (car rest))))
+		    (throw 'tag (car rest))))
+	    (setq rest (cdr rest)))))
+      (expand-file-name (concat (if (and (not (featurep 'xemacs))
+					 (or (>= emacs-major-version 20)
+					     (and (= emacs-major-version 19)
+						  (> emacs-minor-version 28))))
+				    "share/"
+				  "lib/")
+				(cond
+				 ((featurep 'xemacs)
+				  (if (featurep 'mule)
+				      "xmule/"
+				    "xemacs/"))
+				 ;; unfortunately, unofficial mule based on
+				 ;; 19.29 and later use "emacs/" by default.
+				 ((boundp 'MULE) "mule/")
+				 ((boundp 'NEMACS) "nemacs/")
+				 (t "emacs/"))
+				elisp-prefix)
+			prefix)))
 
 (defvar install-default-elisp-directory
   (install-detect-elisp-directory))
 ;;; @ end
 ;;;
 
-(provide 'install)
+(require 'product)
+(product-provide (provide 'install) (require 'apel-ver))
 
 ;;; install.el ends here
 
 ;;; Code:
 
-(defmacro enable-invisible ())
+(require 'poe)
 
-(defmacro end-of-invisible ())
+(defun enable-invisible ())
+(defun disable-invisible ())
+(defalias 'end-of-invisible 'disable-invisible)
+(make-obsolete 'end-of-invisible 'disable-invisible)
 
 (defun invisible-region (start end)
   (if (save-excursion
 	(goto-char start)
 	(eq (following-char) ?\n))
-      (setq start (1+ start))
-    )
-  (put-text-property start end 'invisible t)
-  )
+      (setq start (1+ start)))
+  (put-text-property start end 'invisible t))
 
 (defun visible-region (start end)
-  (put-text-property start end 'invisible nil)
-  )
+  (put-text-property start end 'invisible nil))
 
 (defun invisible-p (pos)
   (if (save-excursion
 	(goto-char pos)
 	(eq (following-char) ?\n))
-      (setq pos (1+ pos))
-    )
-  (get-text-property pos 'invisible)
-  )
+      (setq pos (1+ pos)))
+  (get-text-property pos 'invisible))
 
 (defun next-visible-point (pos)
   (save-excursion
     (if (save-excursion
 	  (goto-char pos)
 	  (eq (following-char) ?\n))
-	(setq pos (1+ pos))
-      )
+	(setq pos (1+ pos)))
     (or (next-single-property-change pos 'invisible)
 	(point-max))))
 
 ;;; @ end
 ;;;
 
-(provide 'inv-xemacs)
+(require 'product)
+(product-provide (provide 'inv-xemacs) (require 'apel-ver))
 
 ;;; inv-xemacs.el ends here
 
 ;;; Code:
 
-(require 'poe)
-
-(cond ((featurep 'xemacs)
-       (require 'inv-xemacs)
-       )
-      ((>= emacs-major-version 19)
-       (require 'inv-19)
-       )
-      (t
-       (require 'inv-18)
-       ))
+(cond
+ ((featurep 'xemacs)
+  (require 'inv-xemacs))
+ ((>= emacs-major-version 19)
+  (require 'inv-19))
+ (t
+  (require 'inv-18)))
 
 
 ;;; @ end
 ;;;
 
-(provide 'invisible)
+(require 'product)
+(product-provide (provide 'invisible) (require 'apel-ver))
 
 ;;; invisible.el ends here
 ;;; @ end
 ;;;
 
-(provide 'mcharset)
+(require 'product)
+(product-provide (provide 'mcharset) (require 'apel-ver))
 
 ;;; mcharset.el ends here
 	   (gb2312	  . cn-gb-2312)
 	   (cn-gb	  . cn-gb-2312)
 	   (iso-2022-jp-2 . iso-2022-7bit-ss2)
+	   (iso-2022-jp-3 . iso-2022-7bit-ss2)
 	   (tis-620	  . tis620)
-	   (windows-874	  . tis620)
+	   (windows-874	  . tis-620)
+	   (cp874	  . tis-620)
 	   (x-ctext       . ctext)
 	   (unknown       . undecided)
 	   (x-unknown     . undecided)
 ;;; @ end
 ;;;
 
-(provide 'mcs-20)
+(require 'product)
+(product-provide (provide 'mcs-20) (require 'apel-ver))
 
 ;;; mcs-20.el ends here
 ;;; @ end
 ;;;
 
-(provide 'mcs-ltn1)
+(require 'product)
+(product-provide (provide 'mcs-ltn1) (require 'apel-ver))
 
 ;;; mcs-ltn1.el ends here
 ;;; mcs-xm.el --- MIME charset implementation for XEmacs-mule
 
-;; Copyright (C) 1997,1998 Free Software Foundation, Inc.
+;; Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Keywords: emulation, compatibility, Mule
 
 
 (defcustom mime-charset-decoder-alist
-  '((iso-2022-jp . decode-mime-charset-region-with-iso646-unification)
-    (iso-2022-jp-2 . decode-mime-charset-region-with-iso646-unification)
-    (x-ctext . decode-mime-charset-region-with-iso646-unification)
-    (hz-gb-2312 . decode-mime-charset-region-for-hz)
-    (t . decode-mime-charset-region-default))
+  (let ((alist
+	 '((hz-gb-2312 . decode-mime-charset-region-for-hz)
+	   (t . decode-mime-charset-region-default))))
+    (if (featurep 'utf-2000)
+	alist
+      (list*
+       '(iso-2022-jp . decode-mime-charset-region-with-iso646-unification)
+       '(iso-2022-jp-2 . decode-mime-charset-region-with-iso646-unification)
+       alist)))
   "Alist MIME-charset vs. decoder function."
   :group 'i18n
   :type '(repeat (cons mime-charset function)))
 	(decode-coding-region start end cs)
       )))
 
-(defcustom mime-iso646-character-unification-alist
-  (eval-when-compile
-    (let (dest
-	  (i 33))
-      (while (< i 92)
-	(setq dest
-	      (cons (cons (char-to-string (make-char 'latin-jisx0201 i))
-			  (format "%c" i))
-		    dest))
-	(setq i (1+ i)))
-      (setq i 93)
-      (while (< i 126)
-	(setq dest
-	      (cons (cons (char-to-string (make-char 'latin-jisx0201 i))
-			  (format "%c" i))
-		    dest))
-	(setq i (1+ i)))
-      (nreverse dest)))
-  "Alist unified string vs. canonical string."
-  :group 'i18n
-  :type '(repeat (cons string string)))
-
-(defcustom mime-unified-character-face nil
-  "*Face of unified character."
-  :group 'i18n
-  :type 'face)
-
-(defcustom mime-character-unification-limit-size 2048
-  "*Limit size to unify characters."
-  :group 'i18n
-  :type 'integer)
-
-(defun decode-mime-charset-region-with-iso646-unification (start end charset
-								 lbt)
-  (decode-mime-charset-region-default start end charset lbt)
-  (if (<= (- end start) mime-character-unification-limit-size)
-      (save-excursion
-	(let ((rest mime-iso646-character-unification-alist))
-	  (while rest
-	    (let ((pair (car rest)))
-	      (goto-char start)
-	      (while (search-forward (car pair) end t)
-		(let ((str (cdr pair)))
-		  (put-text-property 0 (length str)
-				     'face mime-unified-character-face str)
-		  (replace-match str 'fixed-case 'literal)
-		  )
-		))
-	    (setq rest (cdr rest)))))
-    ))
+(unless (featurep 'utf-2000)
+  (require 'mcs-xmu))
 
 (defun decode-mime-charset-region-for-hz (start end charset lbt)
   (if lbt
     ((ascii korean-ksc5601)				. euc-kr)
     ((ascii chinese-gb2312)				. gb2312)
     ((ascii chinese-big5-1 chinese-big5-2)		. big5)
+    ((ascii thai-xtis)					. tis-620)
     ((ascii latin-iso8859-1 greek-iso8859-7
 	    latin-jisx0201 japanese-jisx0208-1978
 	    chinese-gb2312 japanese-jisx0208
 ;;; @ end
 ;;;
 
-(provide 'mcs-xm)
+(require 'product)
+(product-provide (provide 'mcs-xm) (require 'apel-ver))
 
 ;;; mcs-xm.el ends here
+;;; mcs-xmu.el --- Functions to unify ISO646 characters for XEmacs-mule
+
+;; Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
+
+;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Keywords: emulation, compatibility, Mule
+
+;; This file is part of APEL (A Portable Emacs Library).
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or (at
+;; your option) any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;;    This module will be loaded from mcs-xm automatically.
+;;    There is no guarantee that it will work alone.
+
+;;; Code:
+
+(defcustom mime-iso646-character-unification-alist
+  (eval-when-compile
+    (let (dest
+	  (i 33))
+      (while (< i 92)
+	(setq dest
+	      (cons (cons (char-to-string (make-char 'latin-jisx0201 i))
+			  (format "%c" i))
+		    dest))
+	(setq i (1+ i)))
+      (setq i 93)
+      (while (< i 126)
+	(setq dest
+	      (cons (cons (char-to-string (make-char 'latin-jisx0201 i))
+			  (format "%c" i))
+		    dest))
+	(setq i (1+ i)))
+      (nreverse dest)))
+  "Alist unified string vs. canonical string."
+  :group 'i18n
+  :type '(repeat (cons string string)))
+
+(defcustom mime-unified-character-face nil
+  "Face of unified character."
+  :group 'i18n
+  :type 'face)
+
+(defcustom mime-character-unification-limit-size 2048
+  "Limit size to unify characters.  It is referred by the function
+`decode-mime-charset-region-with-iso646-unification'.  If the length of
+the specified region (start end) is larger than its value, the function
+works for only decoding MIME-CHARSET.  If it is nil, size is unlimited."
+  :group 'i18n
+  :type '(radio (integer :tag "Max size")
+		(const :tag "Unlimited" nil)))
+
+(defun decode-mime-charset-region-with-iso646-unification (start end charset
+								 lbt)
+  (save-excursion
+    (save-restriction
+      (narrow-to-region start end)
+      (if (prog1
+	      (or (null mime-character-unification-limit-size)
+		  (<= (- end start) mime-character-unification-limit-size))
+	    (decode-mime-charset-region-default start end charset lbt))
+	  (let ((rest mime-iso646-character-unification-alist))
+	    (while rest
+	      (let ((pair (car rest))
+		    case-fold-search)
+		(goto-char (point-min))
+		(while (search-forward (car pair) nil t)
+		  (let ((str (cdr pair)))
+		    (if mime-unified-character-face
+			(put-text-property
+			 0 (length str)
+			 'face mime-unified-character-face str))
+		    (replace-match str 'fixed-case 'literal)
+		    )
+		  ))
+	      (setq rest (cdr rest)))))
+      )))
+
+
+;;; @ end
+;;;
+
+(require 'product)
+(product-provide (provide 'mcs-xmu) (require 'apel-ver))
+
+;;; mcs-xmu.el ends here
 	  )))))
 
 
-(provide 'mule-caesar)
+(require 'product)
+(product-provide (provide 'mule-caesar) (require 'apel-ver))
 
 ;;; mule-caesar.el ends here
 ;;; path-util.el --- Emacs Lisp file detection utility
 
-;; Copyright (C) 1996,1997 Free Software Foundation, Inc.
+;; Copyright (C) 1996,1997,1999 Free Software Foundation, Inc.
 
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id$
+;; Author: MORIOKA Tomohiko <tomo@m17n.org>
 ;; Keywords: file detection, install, module
 
 ;; This file is part of APEL (A Portable Emacs Library).
 
 ;;; Code:
 
+(require 'poe)
+
 (defvar default-load-path load-path
   "*Base of `load-path'.
 It is used as default value of target path to search file or
   (or suffixes
       (setq suffixes exec-suffix-list)
       )
-  (catch 'tag
-    (while paths
-      (let ((stem (expand-file-name file (car paths)))
-	    (sufs suffixes)
+  (let (files)
+    (catch 'tag
+      (while suffixes
+	(let ((suf (car suffixes)))
+	  (if (and (not (string= suf ""))
+		   (string-match (concat (regexp-quote suf) "$") file))
+	      (progn
+		(setq files (list file))
+		(throw 'tag nil)
+		)
+	    (setq files (cons (concat file suf) files))
 	    )
-	(while sufs
-	  (let ((file (concat stem (car sufs))))
-	    (if (file-exists-p file)
+	  (setq suffixes (cdr suffixes))
+	  )))
+    (setq files (nreverse files))
+    (catch 'tag
+      (while paths
+	(let ((path (car paths))
+	      (files files)
+	      )
+	  (while files
+	    (setq file (expand-file-name (car files) path))
+	    (if (file-executable-p file)
 		(throw 'tag file)
-	      ))
-	  (setq sufs (cdr sufs))
-	  ))
-      (setq paths (cdr paths))
-      )))
+	      )
+	    (setq files (cdr files))
+	    )
+	  (setq paths (cdr paths))
+	  )))))
 
 ;;;###autoload
 (defun module-installed-p (module &optional paths)
   "Return t if module is provided or exists in PATHS.
 If PATHS is omitted, `load-path' is used."
   (or (featurep module)
-      (exec-installed-p (symbol-name module) load-path '(".elc" ".el"))
-      ))
+      (let ((file (symbol-name module)))
+	(or paths
+	    (setq paths load-path)
+	    )
+	(catch 'tag
+	  (while paths
+	    (let ((stem (expand-file-name file (car paths)))
+		  (sufs '(".elc" ".el"))
+		  )
+	      (while sufs
+		(let ((file (concat stem (car sufs))))
+		  (if (file-exists-p file)
+		      (throw 'tag file)
+		    ))
+		(setq sufs (cdr sufs))
+		))
+	    (setq paths (cdr paths))
+	    )))))
 
 
 ;;; @ end
 ;;;
 
-(provide 'path-util)
+(require 'product)
+(product-provide (provide 'path-util) (require 'apel-ver))
 
 ;;; path-util.el ends here
       (defun ccl-execute (ccl-prog reg)
 	"\
 Execute CCL-PROG with registers initialized by REGISTERS.
-If CCL-PROG is symbol, it is dereferenced.
-\[Emacs 20.3 emulating function]"
+If CCL-PROG is symbol, it is dereferenced."
 	(ccl-vector-program-execute
 	 (if (symbolp ccl-prog) (symbol-value ccl-prog) ccl-prog)
 	 reg)))
       (defun ccl-execute-on-string (ccl-prog status string &optional contin)
 	"\
 Execute CCL-PROG with initial STATUS on STRING.
-If CCL-PROG is symbol, it is dereferenced.
-\[Emacs 20.3 emulating function]"
+If CCL-PROG is symbol, it is dereferenced."
 	(ccl-vector-program-execute-on-string
 	 (if (symbolp ccl-prog) (symbol-value ccl-prog) ccl-prog)
 	 status string contin)))
 ;;; @ end
 ;;;
 
-(provide 'pccl-20)
+(require 'product)
+(product-provide (provide 'pccl-20) (require 'apel-ver))
 
 ;;; pccl-20.el ends here
 ;;; @ end
 ;;;
 
-(provide 'pccl)
+(require 'product)
+(product-provide (provide 'pccl) (require 'apel-ver))
 
 ;;; pccl.el ends here
 ;;; @ end
 ;;;
 
-(provide 'pces-20)
+(require 'product)
+(product-provide (provide 'pces-20) (require 'apel-ver))
 
 ;;; pces-20.el ends here
 ;;; @ end
 ;;;
 
-(provide 'pces-raw)
+(require 'product)
+(product-provide (provide 'pces-raw) (require 'apel-ver))
 
 ;;; pces-raw.el ends here
 ;;; @ end
 ;;;
 
-(provide 'pces-xfc)
+(require 'product)
+(product-provide (provide 'pces-xfc) (require 'apel-ver))
 
 ;;; pces-xfc.el ends here
 ;;; @ end
 ;;;
 
-(provide 'pces-xm)
+(require 'product)
+(product-provide (provide 'pces-xm) (require 'apel-ver))
 
 ;;; pces-xm.el ends here
   (unless (fboundp 'open-network-stream)
     (require 'tcp)))
 
-(cond ((and (featurep 'xemacs)
-	    (featurep 'file-coding))
-       (require 'pces-xfc)
-       )
+(cond ((featurep 'xemacs)
+       (if (featurep 'file-coding)
+	   (require 'pces-xfc)
+	 (require 'pces-raw)
+	 ))
       ((featurep 'mule)
        (if (>= emacs-major-version 20)
 	   (require 'pces-e20)
 ;;; @ end
 ;;;
 
-(provide 'pces)
+(require 'product)
+(product-provide (provide 'pces) (require 'apel-ver))
 
 ;;; pces.el ends here
 ;;; pcustom.el -- a portable custom.el.
 
+;; Copyright (C) 1999 Free Software Foundation, Inc.
 ;; Copyright (C) 1999 Mikio Nakajima <minakaji@osaka.email.ne.jp>
-;; Copyright (C) 1999 Shuhei KOBAYASHI <shuhei@aqua.ocn.ne.jp>
 
 ;; Author: Mikio Nakajima <minakaji@osaka.email.ne.jp>
 ;;	Shuhei KOBAYASHI <shuhei@aqua.ocn.ne.jp>
-;; Maintainer: Mikio Nakajima <minakaji@osaka.email.ne.jp>
 ;; Keywords: emulating, custom
 
 ;; This file is part of APEL (A Portable Emacs Library).
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
+;;; Commentary:
+
 ;;; Code:
 
 (require 'poe)
-;; If old compiler is used under v18, `eval-when-compile' and
-;; `static-if' are expanded (and evaluated) at *load-time*.
 (eval-when-compile (require 'static))
 
-;; XXX: needs better abstraction.
 (static-if (condition-case nil
 	       ;; compile-time check.
-	       ;; "new custom" requires widget library.
-	       (and (require 'widget)
-		    (require 'custom)
-		    (fboundp 'custom-declare-variable))
+	       (if (and (require 'custom)
+			(fboundp 'custom-declare-variable))
+		   ;; you have "new custom".
+		   t
+		 ;; you have custom, but it is "old".
+		 (message "\
+  ** \"old custom\" is loaded.  See README if you want to use \"new custom\".")
+		 (sleep-for 1)
+		 nil)
+	     ;; you don't have custom.
 	     (error nil))
     ;; you have "new custom". no load-time check.
     (require 'custom)
-  ;; your custom is "old custom", or you don't have custom library
-  ;; at compile-time.
+  ;; your custom is "old custom",
+  ;; or you don't have custom library at compile-time.
   (or (condition-case nil
 	  ;; load-time check.
 	  ;; load "custom" if exists.
 	  (and (require 'custom)
 	       (fboundp 'custom-declare-variable))
 	(error nil))
-      ;; your custom is "old custom", or you don't have custom library.
+      ;; your custom is "old custom",
+      ;; or you don't have custom library.
       ;; load emulation version of "new custom".
       (require 'tinycustom)))
 
-(provide 'pcustom)
+(require 'product)
+(product-provide (provide 'pcustom) (require 'apel-ver))
 
-;; end of pcustom.el
+;;; pcustom.el ends here
-;;; poe-xemacs.el --- poe submodule for XEmacs -*-byte-compile-dynamic: t;-*-
+;;; poe-xemacs.el --- poe submodule for XEmacs
 
 ;; Copyright (C) 1995 Free Software Foundation, Inc.
 ;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
 
 ;;; Code:
 
+(require 'pym)
+
+
 ;;; @ color
 ;;;
 
-
-(eval-when-compile
-  (require 'poe))
-
 (defun-maybe set-cursor-color (color-name)
   "Set the text cursor color of the selected frame to COLOR.
 When called interactively, prompt for the name of the color to use."
 
 (condition-case nil
     (require 'overlay)
-  (error (defalias 'make-overlay 'make-extent)
-	 (defalias 'overlayp 'extentp)
-	 (defalias 'overlay-put 'set-extent-property)
-	 (defalias 'overlay-buffer 'extent-buffer)
-	 (defun move-overlay (extent start end &optional buffer)
-	   (set-extent-endpoints extent start end)
-	   )
-	 (defalias 'delete-overlay 'detach-extent)
-	 ))
+  (error
+   (defalias 'make-overlay 'make-extent)
+   (defalias 'overlayp 'extentp)
+   (defalias 'overlay-put 'set-extent-property)
+   (defalias 'overlay-buffer 'extent-buffer)
+   (defun move-overlay (extent start end &optional buffer)
+     (set-extent-endpoints extent start end))
+   (defalias 'delete-overlay 'detach-extent)))
 
 
 ;;; @ dired
 (defun-maybe dired-other-frame (dirname &optional switches)
   "\"Edit\" directory DIRNAME.  Like `dired' but makes a new frame."
   (interactive (dired-read-dir-and-switches "in other frame "))
-  (switch-to-buffer-other-frame (dired-noselect dirname switches))
-  )
+  (switch-to-buffer-other-frame (dired-noselect dirname switches)))
+
+
+;;; @ timer
+;;;
+
+(condition-case nil
+    (require 'timer)
+  (error
+   (require 'itimer)
+   (defun-maybe run-at-time (time repeat function &rest args)
+     (start-itimer (make-temp-name "rat")
+		   `(lambda ()
+		      (,function ,@args))
+		   time repeat))
+   (defalias 'cancel-timer 'delete-itimer)
+   (defun with-timeout-handler (tag)
+     (throw tag 'timeout))
+   (defmacro-maybe with-timeout (list &rest body)
+     (let ((seconds (car list))
+	   (timeout-forms (cdr list)))
+     `(let ((with-timeout-tag (cons nil nil))
+	    with-timeout-value with-timeout-timer)
+	(if (catch with-timeout-tag
+	      (progn
+		(setq with-timeout-timer
+		      (run-at-time ,seconds nil
+				   'with-timeout-handler
+				   with-timeout-tag))
+		(setq with-timeout-value (progn . ,body))
+		nil))
+	    (progn . ,timeout-forms)
+	  (cancel-timer with-timeout-timer)
+	  with-timeout-value))))))
 
 
 ;;; @ to avoid bug of XEmacs 19.14
     ;; This function was imported from Emacs 19.33.
     (defun file-relative-name (filename &optional directory)
       "Convert FILENAME to be relative to DIRECTORY
-(default: default-directory). [poe-xemacs.el]"
+(default: default-directory)."
       (setq filename (expand-file-name filename)
 	    directory (file-name-as-directory
 		       (expand-file-name
 				  filename))
 	  (setq directory (file-name-directory (substring directory 0 -1))
 		ancestor (concat "../" ancestor)))
-	(concat ancestor (substring filename (match-end 0)))))
-    )
-
-
-;;; @ for anything older than XEmacs 20.2
-;;;
-
-;; eval-after-load is not defined in XEmacs but after-load-alist is
-;; usable.  See subr.el in XEmacs.
-
-(defun-maybe eval-after-load (file form)
-  "Arrange that, if FILE is ever loaded, FORM will be run at that time.
-This makes or adds to an entry on `after-load-alist'.
-If FILE is already loaded, evaluate FORM right now.
-It does nothing if FORM is already on the list for FILE.
-FILE should be the name of a library, with no directory name."
-  ;; Make sure there is an element for FILE.
-  (or (assoc file after-load-alist)
-      (setq after-load-alist (cons (list file) after-load-alist)))
-  ;; Add FORM to the element if it isn't there.
-  (let ((elt (assoc file after-load-alist)))
-    (or (member form (cdr elt))
-	(progn
-	  (nconc elt (list form))
-	  ;; If the file has been loaded already, run FORM right away.
-	  (and (assoc file load-history)
-	       (eval form)))))
-  form)
-
-;; (defun-maybe eval-after-load (file form)
-;;   (or (assoc file after-load-alist)
-;;       (setq after-load-alist (cons (list file) after-load-alist)))
-;;   (let ((elt (assoc file after-load-alist)))
-;;     (or (member form (cdr elt))
-;;         (nconc elt (list form))))
-;;   form)
+	(concat ancestor (substring filename (match-end 0))))))
 
 
 ;;; @ Emacs 20.3 emulation
 ;;;
 
 (defalias-maybe 'line-beginning-position 'point-at-bol)
-
 (defalias-maybe 'line-end-position 'point-at-eol)
 
+;;; @ XEmacs 21 emulation
+;;;
+
+;; XEmacs 20.5 and later: (set-extent-properties EXTENT PLIST)
+(defun-maybe set-extent-properties (extent plist)
+  "Change some properties of EXTENT.
+PLIST is a property list.
+For a list of built-in properties, see `set-extent-property'."
+  (while plist
+    (set-extent-property extent (car plist) (cadr plist))
+    (setq plist (cddr plist))))  
 
 ;;; @ end
 ;;;
 
-(provide 'poe-xemacs)
+(require 'product)
+(product-provide (provide 'poe-xemacs) (require 'apel-ver))
 
 ;;; poe-xemacs.el ends here
-;;; poe.el --- Portable Outfit for Emacsen; -*-byte-compile-dynamic: t;-*-
+;;; poe.el --- Portable Outfit for Emacsen
 
 ;; Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <tomo@m17n.org>
-;; Keywords: emulation, compatibility, NEmacs, MULE, Emacs/mule, XEmacs
+;;	Shuhei KOBAYASHI <shuhei@aqua.ocn.ne.jp>
+;; Keywords: emulation, compatibility, Nemacs, MULE, Emacs/mule, XEmacs