From: shuhei Date: Thu, 8 Mar 2001 14:17:43 +0000 (+0000) Subject: Sync up to APEL 10.3. X-Git-Tag: apel-shubit-10_3 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=f5c91f74ef09a3c2f8cffdeab63a3c335f273ad2;p=elisp%2Fapel.git Sync up to APEL 10.3. --- diff --git a/APEL-MK b/APEL-MK index 58e5ddb..394586e 100644 --- a/APEL-MK +++ b/APEL-MK @@ -49,45 +49,6 @@ (defvar EMU_DIR nil) ; VERSION_SPECIFIC_LISPDIR/EMU_PREFIX -;;; Utilities. (XXX: should be moved to install.el ?) - -(defun install-just-print-p () - (let ((flag (getenv "MAKEFLAGS")) - (case-fold-search nil)) - (princ (format "%s\n" flag)) - (if flag - (string-match "^\\(\\(--[^ ]+ \\)+-\\|[^ =-]\\)*n" flag)))) - -(defun install-update-package-files (package dir &optional just-print) - (cond - (just-print - (princ (format "Updating autoloads in directory %s..\n\n" dir)) - - (princ (format "Processing %s\n" dir)) - (princ "Generating custom-load.el...\n\n") - - (princ (format "Compiling %s...\n" - (expand-file-name "auto-autoloads.el" dir))) - (princ (format "Wrote %s\n" - (expand-file-name "auto-autoloads.elc" dir))) - - (princ (format "Compiling %s...\n" - (expand-file-name "custom-load.el" dir))) - (princ (format "Wrote %s\n" - (expand-file-name "custom-load.elc" dir)))) - (t - (setq autoload-package-name package) - - (let ((command-line-args-left (list dir))) - (batch-update-directory)) - - (let ((command-line-args-left (list dir))) - (Custom-make-dependencies)) - - (byte-compile-file (expand-file-name "auto-autoloads.el" dir)) - (byte-compile-file (expand-file-name "custom-load.el" dir))))) - - ;;; Configure, Compile, and Install. (defun config-apel () @@ -157,11 +118,12 @@ (compile-elisp-modules emu-modules-to-compile ".") (compile-elisp-modules apel-modules ".")) -(defun install-apel () +(defun install-apel (&optional just-print) (config-apel) - (let ((just-print (install-just-print-p))) - (install-elisp-modules emu-modules "." EMU_DIR just-print) - (install-elisp-modules apel-modules "." APEL_DIR just-print))) + (or just-print + (setq just-print (install-just-print-p))) + (install-elisp-modules emu-modules "." EMU_DIR just-print) + (install-elisp-modules apel-modules "." APEL_DIR just-print)) ;; For XEmacs package system. (defun config-apel-package () @@ -224,21 +186,23 @@ (install-update-package-files "apel" dir just-print))) (defun what-where-apel () - (config-apel) - (princ (format " -The files that belong to the EMU modules: - %s - -> %s - -The files that belong to the APEL modules: - %s - -> %s - -Do `make elc', `make install', `make package', or `make install-package'. -" - (mapconcat (function symbol-name) emu-modules ", ") - EMU_DIR - (mapconcat (function symbol-name) apel-modules ", ") - APEL_DIR))) + (install-apel 'just-print) + ;; (config-apel) +;;; (princ (format " +;;; The files that belong to the EMU modules: +;;; %s +;;; -> %s + +;;; The files that belong to the APEL modules: +;;; %s +;;; -> %s + +;;; Do `make elc', `make install', `make package', or `make install-package'. +;;; " +;;; (mapconcat (function symbol-name) emu-modules ", ") +;;; EMU_DIR +;;; (mapconcat (function symbol-name) apel-modules ", ") +;;; APEL_DIR)) + ) ;;; APEL-MK ends here diff --git a/ChangeLog b/ChangeLog index 66b879b..a9c9bb4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,248 @@ +2000-12-30 NAKAJIMA Mikio + + * APEL: Version 10.3 released. + * apel-ver.el (apel-ver): Change APEL version to 10.3. + + * Makefile : Apply patch from TAKAHASHI Kaoru + of Message-Id: <86vgs2s3cp.wl@tomoko.nantnaq.kaisei.org>. + +2000-12-28 Tanaka Akira + + * pccl-20.el (ccl-compat): new advice for `make-coding-system' of + XEmacs to handle Emacs style CCL coding system definition. + +2000-12-28 Kenichi Handa + + * static.el: Doc-string fixed. + +2000-12-28 MORIOKA Tomohiko + + * mcharset.el (default-mime-charset-for-write): Use + `mime-charset-p' instead of `find-coding-system'; don't require + `pces'. + + * mcs-nemacs.el, mcs-ltn1.el, mcs-20.el (mime-charset-p): New + alias. + +2000-12-26 NAKAJIMA Mikio + + * README.en: Change major mode to outline-mode. + (What's APEL?): Add description about pym.el, pces, time-stamp.el, + timezone.el, and product.el. + (run in expanded place): Add a reference to `make.bat (for MS-DOS + family)'. + + * README.ja: Change major mode to outline-mode. + (What's APEL?): Add description about pym.el, pces, time-stamp.el, + timezone.el, and product.el. + +2000-12-24 NAKAJIMA Mikio + + * poe.el (minor-mode-overriding-map-alist): Remove the filename + poe.el from doc string. + + * poe-18.el (current-time-world-timezones): Remove the filename + poe-18.el from doc string. + (current-time-local-timezone): Ditto. + (buffer-undo-list): Ditto. + (auto-fill-function): Ditto. + (unread-command-event): Ditto. + (unread-command-events): Ditto. + (minor-mode-map-alist): Ditto. + + * README.en ((d) make.bat (for MS-DOS family)): New section. + * README.ja ((d) make.bat を利用する (MS-DOS 系 OS の場合)): + Ditto. + +2000-12-22 MORIOKA Tomohiko + + * mcs-e20.el: Require `pces'. + +2000-12-22 Yuuichi Teranishi + + * timezone.el (timezone-time-from-absolute): Use `%' instead of + `mod'. + +2000-12-21 Katsumi Yamaoka + + * poe-18.el (numberp, mod): Removed. + +2000-12-21 MORIOKA Tomohiko + + * mcharset.el (default-mime-charset-for-write): Require `pces' for + `find-coding-system'. + +2000-12-21 NAKAJIMA Mikio + + * poe-18.el (minor-mode-alist): Removed. + (minor-mode-overriding-map-alist): Move to poe.el. + +2000-12-20 MORIOKA Tomohiko + + * APEL-MK (install-apel): Add new optional argument `just-print'. + (what-where-apel): New implementation [use `install-apel' with + `just-print' mode]. + +2000-12-20 MORIOKA Tomohiko + + * APEL-MK (install-just-print-p): Moved to install.el. + (install-update-package-files): Moved to install.el. + + * install.el (install-update-package-files): New function [moved + from APEL-MK]. + (install-just-print-p): Likewise. + +2000-12-15 MORIOKA Tomohiko + + * mcs-xm.el: Don't require `poem' instead of `mcs-20'. + + * mcs-e20.el: Don't require mcs-20. + + * mcs-20.el: - Don't require `poem'. + - Require `custom' instead of `pcustom'. + - Require mcs-xm for XEmacs-Mule. + - Require mcs-e20 for GNU Emacs 20.1 or later. + (default-mime-charset): Change initial value to `x-unknown'. + + * mcharset.el: Require mcs-20 if running with XEmacs-Mule and GNU + Emacs 20.1 or later. + +2000-12-19 Katsumi Yamaoka + + * poe.el (current-fill-column): New emulating function. + (current-left-margin): New emulating function. + + * poe-18.el (numberp): Use `defalias-maybe' instead of `defalias'. + (mod): Ditto. + +2000-12-20 NAKAJIMA Mikio + + * poe-18.el (set-frame-height): Typo fixed. + (read-from-minibuffer): Do not run `minibuffer-setup-hook' and + `minibuffer-exit-hook'. + (minibuffer-setup-hook): Comment out. + (minibuffer-exit-hook): Ditto. + +2000-12-19 NAKAJIMA Mikio + + * make.bat: Do not echo. + + * poe-18.el (set-frame-heigth): Bug fixed. + +2000-12-16 NAKAJIMA Mikio + + * poe-18.el (frame-width): New function. + (frame-height): Ditto. + (set-frame-width): Ditto. + (set-frame-heigth): Ditto. + (read-from-minibuffer): Run `minibuffer-setup-hook' and + `minibuffer-exit-hook'. + (buffer-undo-list): Declared with `defvar-maybe' and add doc + string. + (auto-fill-function): Add doc string. + (unread-command-event): Ditto. + (unread-command-events): Ditto. + (minibuffer-setup-hook): New variable. + (minibuffer-exit-hook): Ditto. + (minor-mode-map-alist): Ditto. + (minor-mode-alist): Ditto. + (minor-mode-overriding-map-alist): Ditto. + +2000-12-15 NAKAJIMA Mikio + + * make.bat (listing): Bug fixed. + + * README.en: Add URL that can be used to getting SKK 10.62a with + the new byte compiler for Emacs 18. + * README.ja: Ditto. + +2000-12-15 TAKAHASHI Kaoru + + * Makefile (tar): Remove .cvsignore. Use `cvs tag -R' instead of + `cvs tag -RF'. + +2000-12-15 Katsumi Yamaoka + + * poe-18.el (buffer-disable-undo): Define it as a function to make + an argument optional instead of the use of `defalias' to + `buffer-flush-undo'. + +2000-12-14 Daiki Ueno + + * alist.el (del-alist): Simplified. + +2000-12-14 Mikio Nakajima + + * pym.el (static-if): Put t on edebug spec instead of if. + +2000-12-13 Kenichi Handa + + * alist.el: Fix and add DOCs and comments; fix coding style. + +2000-04-26 MORIOKA Tomohiko + + * mcs-xm.el (charsets-mime-charset-alist): Add coded-charset + `japanese-jisx0208-1990' to MIME-charset `iso-2022-jp' and + `iso-2022-jp-2' in UTF-2000; add new MIME-charset `iso-2022-jp-3'. + +2000-11-26 Mikio Nakajima + + * make.bat: New file. + * .cvsignore: Ditto. + +2000-11-09 Katsumi Yamaoka + + * path-util.el (add-path): Check for both "path" and "path/". + +2000-10-06 Shuhei KOBAYASHI + + * poe.el (require): Update `current-load-list'. + +2000-10-10 Keiichi Suzuki + + * product.el (product-version-as-string): New function. + (product-string-1): Use `product-version-as-string'. + +2000-08-10 MORIOKA Tomohiko + + * poem-e20_3.el: Require `pym'. + +2000-07-12 MORIOKA Tomohiko + + * alist.el (vassoc): New function [to be compatible with XEmacs + 21.2.32 or later]. + +2000-05-25 Tanaka Akira + + * README.en, README.ja: Update for CVS via SSH. + +2000-05-24 Katsumi Yamaoka + + * pces-raw.el (encode-coding-string, decode-coding-string): Return + a copy of string. + +2000-04-25 Katsumi Yamaoka + + * EMU-ELS (emu-modules): Don't include `pccl-20' for XEmacs 20 and + earlier. + +2000-03-25 Mikio Nakajima + + * 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 + + * poe.el (format-time-string): Fix problem when `format' contains + "%d" or "%D". + +2000-03-04 Daiki Ueno + + * poe.el (remassq,remassoc,remrassoc): Rewrite. + (remrassq): New function. + + 2000-03-01 Yuuichi Teranishi * APEL: Version 10.2 released. diff --git a/EMU-ELS b/EMU-ELS index 677ebfc..43ddc3b 100644 --- a/EMU-ELS +++ b/EMU-ELS @@ -50,20 +50,24 @@ ;; pccl modules; pccl modules depend on broken. (cond - ((featurep 'mule) + ((featurep 'xemacs) (cond ;; XEmacs 21 w/ mule. - ((and (featurep 'xemacs) + ((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 - ;; Mule 1.* and 2.*. '(pccl-om pccl)))) - (t - '(pccl))) + (t + '(pccl))) ;; pces modules; pces modules depend on poe. (cond diff --git a/Makefile b/Makefile index 571470f..c3a628f 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ # Makefile for APEL. # -VERSION = 10.2 +VERSION = 10.3 TAR = tar RM = /bin/rm -f @@ -48,13 +48,13 @@ clean: tar: cvs commit - sh -c 'cvs tag -RF apel-`echo $(VERSION) \ + sh -c 'cvs tag -R apel-`echo $(VERSION) \ | sed s/\\\\./_/ | sed s/\\\\./_/`; \ cd /tmp; \ - cvs -d :pserver:morioka@cvs.m17n.org:/cvs/root \ + cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root \ export -d apel-$(VERSION) \ -r apel-`echo $(VERSION) | tr . _` apel' - cd /tmp; $(RM) apel-$(VERSION)/ftp.in ; \ + cd /tmp; $(RM) apel-$(VERSION)/ftp.in apel-$(VERSION)/.cvsignore ; \ $(TAR) cvzf apel-$(VERSION).tar.gz apel-$(VERSION) cd /tmp; $(RM) -r apel-$(VERSION) sed "s/VERSION/$(VERSION)/" < ftp.in > ftp diff --git a/README.en b/README.en index 3fe9f77..c19b3e4 100644 --- a/README.en +++ b/README.en @@ -1,223 +1,314 @@ +-*- outline -*- + [README for APEL (English Version)] -What's APEL? -============ +* What's APEL? + +APEL stands for "A Portable Emacs Library". It consists of following +modules: + +** poe.el + +This is an emulation module mainly for basic functions and special +forms/macros of latest emacsen. + + poe-xemacs.el --- for XEmacs + poe-18.el --- for Emacs 18/Nemacs + env.el --- env.el for Emacs 18 + localhook.el --- hook functions for Emacs 19.28 and earlier. + pym.el --- macros for poe. + +** poem.el + +This module provides basic functions to write portable MULE programs. + + poem-nemacs.el --- for Nemacs + poem-ltn1.el --- for Emacs 19/XEmacs without MULE + poem-om.el --- for MULE 1.*, 2.* + poem-20.el --- shared module between Emacs 20 and XEmacs-MULE + poem-e20_2.el --- for Emacs 20.1/20.2 + poem-e20_3.el --- for Emacs 20.3 + poem-xm.el --- for XEmacs-MULE + +** pces.el + +This module provides portable character encoding scheme +(coding-system) features. + + pces-20.el --- for Emacs 20 and XEmacs with coding-system. + pces-e20.el --- for Emacs 20. + pces-e20_2.el --- for Emacs 20.1 and 20.2. + pces-nemacs.el --- for Nemacs. + pces-om.el --- for Mule 1.* and Mule 2.*. + pces-raw.el --- for emacsen without coding-system features. + pces-xfc.el --- for XEmacs with file coding. + pces-xm.el --- for XEmacs-mule. + +** invisible.el + +This modules provides features about invisible region. + + inv-18.el --- for Emacs 18 + inv-19.el --- for Emacs 19 + inv-xemacs.el --- for XEmacs + +** mcharset.el + +This modules provides MIME charset related features. + + mcs-nemacs.el --- for Nemacs + mcs-ltn1.el --- for Emacs 19/XEmacs without MULE + mcs-om.el --- for MULE 1.*, 2.* + 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 + +** broken.el --- provide information of broken facilities of Emacs - APEL stands for "A Portable Emacs Library". It consists of - following modules: +** pccl.el --- utility to write portable CCL program - poe.el --- emulation module mainly for basic functions and special - forms/macros of latest emacsen - poe-xemacs.el --- for XEmacs - poe-18.el --- for Emacs 18/Nemacs - env.el --- env.el for Emacs 18 - localhook.el --- hook functions for Emacs 19.28 and earlier. + pccl-om.el --- for MULE 2.* + pccl-20.el --- for Emacs 20/XEmacs-21-MULE - poem.el --- provide basic functions to write portable MULE - programs - poem-nemacs.el --- for Nemacs - poem-ltn1.el --- for Emacs 19/XEmacs without MULE - poem-om.el --- for MULE 1.*, 2.* - poem-20.el --- shared module between Emacs 20 and XEmacs-MULE - poem-e20_2.el --- for Emacs 20.1/20.2 - poem-e20_3.el --- for Emacs 20.3 - poem-xm.el --- for XEmacs-MULE +** alist.el: utility for Association-list - invisible.el --- provide features about invisible region - inv-18.el --- for Emacs 18 - inv-19.el --- for Emacs 19 - inv-xemacs.el --- for XEmacs +** calist.el: utility for condition tree and condition/situation-alist - mcharset.el --- provide MIME charset related features - mcs-nemacs.el --- for Nemacs - mcs-ltn1.el --- for Emacs 19/XEmacs without MULE - mcs-om.el --- for MULE 1.*, 2.* - 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 +** path-util.el: utility for path management or file detection - static.el --- utility for static evaluation +** filename.el: utility to make file-name - broken.el --- provide information of broken facilities of Emacs +** install.el: utility to install emacs-lisp package - pccl.el --- utility to write portable CCL program - pccl-om.el --- for MULE 2.* - pccl-20.el --- for Emacs 20/XEmacs-21-MULE +** mule-caesar.el: ROT 13-47-48 Caesar rotation utility - alist.el: utility for Association-list +** emu.el - calist.el: utility for condition tree and - condition/situation-alist +This module provides emu bundled in tm-7.106 compatibility. It +required poe, poem and mcharset. - path-util.el: utility for path management or file detection + emu-mule: --- for MULE 1.*, 2.*. + richtext.el --- text/richtext module for Emacs 19.29 or later, + XEmacs 19.14 or later + tinyrich.el --- text/richtext module for old emacsen - filename.el: utility to make file-name +** pcustom.el --- provide portable custom environment - install.el: utility to install emacs-lisp package + tinycustom.el --- emulation module of custom.el - mule-caesar.el: ROT 13-47-48 Caesar rotation utility +** time-stamp.el - emu.el --- (emu bundled in tm-7.106 compatibility module; it - required poe, poem and mcharset) - emu-mule: for MULE 1.*, 2.* - richtext.el --- text/richtext module - for Emacs 19.29 or later, - XEmacs 19.14 or later - tinyrich.el --- text/richtext module for old emacsen +This is a utility to maintain last change time stamps in files edited +by Emacs. - pcustom.el --- provide portable custom environment +** timezone.el - tinycustom.el --- emulation module of custom.el +This is a utility of time zone. This is a Y2K fixed version. This +works with old GNUS 3.14.4 under version 18 of Emacs, too. +** product.el --- Functions for product version information. -Installation -============ +* Installation -(a) run in expanded place +** run in expanded place - If you don't want to install other directories, please do only - following: +If you don't want to install other directories, please do only +following (You can use make.bat for MS-DOS OS family. If you want to +use it, see `make.bat (for MS-DOS family)'): - % make + % make - You can specify the emacs command name, for example +You can specify the emacs command name, for example - % make EMACS=xemacs + % make EMACS=xemacs - If `EMACS=...' is omitted, EMACS=emacs is used. +If `EMACS=...' is omitted, EMACS=emacs is used. -(b) make install +** make install - If you want to install other directories, please do following: +If you want to install other directories, please do following: - % make install + % make install - You can specify the emacs command name, for example +You can specify the emacs command name, for example - % make install EMACS=xemacs + % make install EMACS=xemacs - If `EMACS=...' is omitted, EMACS=emacs is used. +If `EMACS=...' is omitted, EMACS=emacs is used. - You can specify the prefix of the directory tree for Emacs Lisp - programs and shell scripts, for example: +You can specify the prefix of the directory tree for Emacs Lisp +programs and shell scripts, for example: - % make install PREFIX=~/ + % make install PREFIX=~/ - If `PREFIX=...' is omitted, the prefix of the directory tree of the - specified emacs command is used (perhaps /usr/local). +If `PREFIX=...' is omitted, the prefix of the directory tree of the +specified emacs command is used (perhaps /usr/local). - For example, if PREFIX=/usr/local and Emacs 20.2 is specified, it - will create the following directory tree: +For example, if PREFIX=/usr/local and Emacs 20.2 is specified, it +will create the following directory tree: - /usr/local/share/emacs/20.2/site-lisp/ --- emu - /usr/local/share/emacs/site-lisp/apel/ --- APEL + /usr/local/share/emacs/20.2/site-lisp/ --- emu + /usr/local/share/emacs/site-lisp/apel/ --- APEL - You can specify the lisp directory for Emacs Lisp programs, - for example: +You can specify the lisp directory for Emacs Lisp programs, +for example: - % make install LISPDIR=~/elisp + % make install LISPDIR=~/elisp - You can also specify the version specific lisp directory where the - emu modules will be installed in, for example: +You can also specify the version specific lisp directory where the +emu modules will be installed in, for example: - % make install VERSION_SPECIFIC_LISPDIR=~/elisp + % make install VERSION_SPECIFIC_LISPDIR=~/elisp - If you would like to know what files belong to the emu modules or - the apel modules, or where they will be installed in, for example, - please type the following command. +If you would like to know what files belong to the emu modules or +the apel modules, or where they will be installed in, for example, +please type the following command. - % make what-where LISPDIR=~/elisp VERSION_SPECIFIC_LISPDIR=~/elisp + % make what-where LISPDIR=~/elisp VERSION_SPECIFIC_LISPDIR=~/elisp - You can specify other optional settings by editing the file - APEL-CFG. Please read comments in it. +You can specify other optional settings by editing the file +APEL-CFG. Please read comments in it. -(c) install as a XEmacs package +** install as a XEmacs package - If you want to install to XEmacs package directory, please do - following: +If you want to install to XEmacs package directory, please do +following: - % make install-package + % make install-package - You can specify the emacs command name, for example +You can specify the emacs command name, for example - % make install-package XEMACS=xemacs-21 + % make install-package XEMACS=xemacs-21 - If `XEMACS=...' is omitted, XEMACS=xemacs is used. +If `XEMACS=...' is omitted, XEMACS=xemacs is used. - You can specify the package directory, for example: +You can specify the package directory, for example: - % make install PACKAGEDIR=~/.xemacs + % make install PACKAGEDIR=~/.xemacs - If `PACKAGEDIR=...' is omitted, the first existing package - directory is used. +If `PACKAGEDIR=...' is omitted, the first existing package +directory is used. - Notice that XEmacs package system requires XEmacs 21.0 or later. +Notice that XEmacs package system requires XEmacs 21.0 or later. -load-path (for Emacs or MULE) -============================= +** make.bat (for MS-DOS family) - If you are using Emacs or Mule, please add directory of apel to - 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: +make.bat is available for MS-DOS family. You have to edit +make.bat if you want to use it. If you use cygwin environment, +you can use make.exe and Makefile instead of make.bat. - -------------------------------------------------------------------- - (normal-top-level-add-to-load-path '("apel")) - -------------------------------------------------------------------- +In make.bat, a line which contain `rem' in its beginning is a +comment. You have to insert or delete `rem', if necessary. - If you are using Emacs 20.3 or later or XEmacs, there are no need to - set up load-path with normal installation. +Default setups of make.bat is; + set MEADOWVER=1.10 + set PREFIX=c:\usr\meadow + set EMACS=%PREFIX%\%MEADOWVER%\bin\meadow95.exe + set LISPDIR=%PREFIX%\site-lisp + set VLISPDIR=%PREFIX%\%MEADOWVER%\site-lisp -Version specific information -============================ +It assumes that meadow executable binary exists in +c:\usr\meadow\1.10\bin\meadow95.exe. On such basis make.bat will +try to install meadow version independent modules of APEL to; -For Emacs 18 users: "old byte-compiler" vs "new byte-compiler" + c:\usr\meadow\site-lisp - 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. +and meadow version dependent modules to; - Therefore, we recommend you to use the "new" optimizing byte-compiler. - It is the origin of byte-compiler bundled with Emacs 19 and later. + c:\usr\meadow\1.10\site-lisp - Optimizing byte-compiler for Emacs 18 is available from the Emacs - Lisp Archive and its mirrors. +Please edit make.bat for your own environment and run make.bat - 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. +Emacs 19.3x or earlier does not have (e.x. Mule for Windows based on +19.28) an Emacs version dependent site-lisp directory +(e.x. c:\usr\meadow\1.10\site-lisp), and its load-path does not refer +to such directory by default. If you want install APEL to such an Emacs +you may install all APEL modules to an Emacs version independent +site-lisp directory such as c:\usr\mule\site-lisp. - AFAIK, the "new byte-compiler" for Emacs 18 is also bundled with SKK - 9.6. It includes patch for Mule 1.*. +We cannot provide you with a Demacs example for make.bat. If you install +APEL to Demacs, please send us such an example to apel-en@m17n.org (you +can post a message to the ML, even if you are not a member). +If you checkout APEL by using Windows native cvs.exe (not cygwin +version), cvs.exe will regularize end of line codes, LF to CRLF. And +it also will try to convert CRLF to CRCRLF. make.bat of which eol +code is CRCRLF does not work, so if you get such a make.bat, edit it +to really regularize eol codes to CRLF. If you need further +information, see the following URL (n.b. Japanese only) -For Emacs 19.34 and XEmacs 19.14 users: "old custom" vs "new custom" + http://openlab.ring.gr.jp/skk/cvswin-ja.html - "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. +* load-path (for Emacs or MULE) - "new custom" for Emacs 19.34 and XEmacs 19.15 - 20.2 is available - from the following URL. +If you are using Emacs or Mule, please add directory of apel to +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: - ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz +-------------------------------------------------------------------- +(normal-top-level-add-to-load-path '("apel")) +-------------------------------------------------------------------- - (Note that "new custom" bundled with XEmacs 19.15 - 20.2, and Gnus - 5.4/5.5 is older than this version.) +If you are using Emacs 20.3 or later or XEmacs, there are no need to +set up load-path with normal installation. - 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". +* Version specific information - 2) If you use Mule (based on Emacs 19), you must apply this patch - to "new custom". +** 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 or SKK 10.62a. You can get SKK 10.62a from the following URL; + + http://openlab.ring.gr.jp/skk/maintrunk + +They include 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 @@ -233,183 +324,178 @@ For Emacs 19.34 and XEmacs 19.14 users: "old custom" vs "new custom" (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". + 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 -========== +* How to use -alist ------ +** alist -Function put-alist (ITEM VALUE ALIST) +*** Function put-alist (ITEM VALUE ALIST) - Modify ALIST to set VALUE to ITEM. If there is a pair whose car is - ITEM, replace its cdr by VALUE. If there is not such pair, create - new pair (ITEM . VALUE) and return new alist whose car is the new - pair and cdr is ALIST. +Modify ALIST to set VALUE to ITEM. If there is a pair whose car is +ITEM, replace its cdr by VALUE. If there is not such pair, create +new pair (ITEM . VALUE) and return new alist whose car is the new +pair and cdr is ALIST. -Function del-alist (ITEM ALIST) +*** Function del-alist (ITEM ALIST) - If there is a pair whose key is ITEM, delete it from ALIST. +If there is a pair whose key is ITEM, delete it from ALIST. -Function set-alist (SYMBOL ITEM VALUE) +*** Function set-alist (SYMBOL ITEM VALUE) - Modify a alist indicated by SYMBOL to set VALUE to ITEM. +Modify a alist indicated by SYMBOL to set VALUE to ITEM. Ex. (set-alist 'auto-mode-alist "\\.pln$" 'text-mode) -Function modify-alist (MODIFIER DEFAULT) +*** Function modify-alist (MODIFIER DEFAULT) - Modify alist DEFAULT into alist MODIFIER. +Modify alist DEFAULT into alist MODIFIER. -Function set-modified-alist (SYMBOL MODIFIER) +*** Function set-modified-alist (SYMBOL MODIFIER) - Modify a value of a SYMBOL into alist MODIFIER. The SYMBOL should - be alist. If it is not bound, its value regard as nil. +Modify a value of a SYMBOL into alist MODIFIER. The SYMBOL should be +alist. If it is not bound, its value regard as nil. -path-util ---------- +** path-util -Function add-path (PATH &rest OPTIONS) +*** Function add-path (PATH &rest OPTIONS) - Add PATH to `load-path' if it exists under `default-load-path' - directories and it does not exist in `load-path'. +Add PATH to `load-path' if it exists under `default-load-path' +directories and it does not exist in `load-path'. - You can use following PATH styles: +You can use following PATH styles: - load-path relative: "PATH" (it is searched from - `default-load-path') + load-path relative: "PATH" (it is searched from `default-load-path') - home directory relative: "~/PATH" "~USER/PATH" + home directory relative: "~/PATH" "~USER/PATH" - absolute path: "/FOO/BAR/BAZ" + absolute path: "/FOO/BAR/BAZ" - You can specify following OPTIONS: +You can specify following OPTIONS: - 'all-paths --- search from `load-path' instead of - `default-load-path' + 'all-paths --- search from `load-path' instead of + `default-load-path' - 'append --- add PATH to the last of `load-path' + 'append --- add PATH to the last of `load-path' -Function add-latest-path (PATTERN &optional ALL-PATHS) +*** Function add-latest-path (PATTERN &optional ALL-PATHS) - Add latest path matched by regexp PATTERN to `load-path' if it - exists under `default-load-path' directories and it does not exist - in `load-path'. +Add latest path matched by regexp PATTERN to `load-path' if it +exists under `default-load-path' directories and it does not exist +in `load-path'. - For example, if there is bbdb-1.50 and bbdb-1.51 under site-lisp, - and if bbdb-1.51 is newer than bbdb-1.50, and site-lisp is - /usr/local/share/emacs/site-lisp, +For example, if there is bbdb-1.50 and bbdb-1.51 under site-lisp, +and if bbdb-1.51 is newer than bbdb-1.50, and site-lisp is +/usr/local/share/emacs/site-lisp, - (add-latest-path "bbdb") + (add-latest-path "bbdb") - it adds "/usr/local/share/emacs/site-lisp/bbdb-1.51" to top of - `load-path'. +it adds "/usr/local/share/emacs/site-lisp/bbdb-1.51" to top of +`load-path'. - If optional argument ALL-PATHS is specified, it is searched from all - of `load-path' instead of `default-load-path'. +If optional argument ALL-PATHS is specified, it is searched from all +of `load-path' instead of `default-load-path'. -Function get-latest-path (PATTERN &optional ALL-PATHS) +*** Function get-latest-path (PATTERN &optional ALL-PATHS) - Return latest directory in default-load-path which is matched to - regexp PATTERN. If optional argument ALL-PATHS is specified, it is - searched from all of load-path instead of default-load-path. +Return latest directory in default-load-path which is matched to +regexp PATTERN. If optional argument ALL-PATHS is specified, it is +searched from all of load-path instead of default-load-path. Ex. (let ((gnus-path (get-latest-path "gnus"))) (add-path (expand-file-name "lisp" gnus-path)) (add-to-list 'Info-default-directory-list - (expand-file-name "texi" gnus-path)) - ) - -Function file-installed-p (FILE &optional PATHS) + (expand-file-name "texi" gnus-path))) - Return absolute-path of FILE if FILE exists in PATHS. If PATHS is - omitted, `load-path' is used. +*** Function file-installed-p (FILE &optional PATHS) -Function exec-installed-p (FILE &optional PATHS SUFFIXES) +Return absolute-path of FILE if FILE exists in PATHS. If PATHS is +omitted, `load-path' is used. - Return absolute-path of FILE if FILE exists in PATHS. If PATHS is - omitted, `exec-path' is used. If SUFFIXES is omitted, - `exec-suffix-list' is used. +*** Function exec-installed-p (FILE &optional PATHS SUFFIXES) -Function module-installed-p (MODULE &optional PATHS) +Return absolute-path of FILE if FILE exists in PATHS. If PATHS is +omitted, `exec-path' is used. If SUFFIXES is omitted, +`exec-suffix-list' is used. - Return non-nil if MODULE is provided or exists in PATHS. If PATHS - is omitted, `load-path' is used. +*** Function module-installed-p (MODULE &optional PATHS) -filename --------- +Return non-nil if MODULE is provided or exists in PATHS. If PATHS is +omitted, `load-path' is used. -Function replace-as-filename (string) +** filename - Return safety file-name from STRING. +*** Function replace-as-filename (string) - It refers variable `filename-filters'. It is list of functions for - file-name filter. Default filter refers following variables: +Return safety file-name from STRING. - Variable filename-limit-length +It refers variable `filename-filters'. It is list of functions for +file-name filter. Default filter refers following variables: - Limit size of file-name. +**** Variable filename-limit-length - Variable filename-replacement-alist +Limit size of file-name. - Alist list of characters vs. string as replacement. List of - characters represents characters not allowed as file-name. +**** Variable filename-replacement-alist +Alist list of characters vs. string as replacement. List of +characters represents characters not allowed as file-name. -Bug reports -=========== +* Bug reports - If you write bug-reports and/or suggestions for improvement, please - send them to the APEL Mailing List: +If you write bug-reports and/or suggestions for improvement, please +send them to the APEL Mailing List: - apel-en@m17n.org (English) - apel-ja@m17n.org (Japanese) + apel-en@m17n.org (English) + apel-ja@m17n.org (Japanese) - 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 +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 - apel-en-ctl@m17n.org (English) - apel-ja-ctl@m17n.org (Japanese) + apel-en-ctl@m17n.org (English) + apel-ja-ctl@m17n.org (Japanese) -Anonymous FTP -============= +* Anonymous FTP - Latest release of APEL can be obtained from: +Latest release of APEL can be obtained from: - ftp://ftp.m17n.org/pub/mule/apel/ + ftp://ftp.m17n.org/pub/mule/apel/ -CVS -=== +* CVS - Development of APEL uses CVS. So latest developing version is - available at CVS. +Development of APEL uses CVS. So latest developing version is +available at CVS. -(0) cvs login (first time only) +** cvs login (first time only) - % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login + % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login - CVS password: [CR] # NULL string + CVS password: [CR] # NULL string -(1) checkout +** checkout - % cvs -d :pserver:anonymous@cvs.m17n.org:/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@cvs.m17n.org + cvs@cvs.m17n.org + +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:@cvs.m17n.org:/cvs/root. - with your account name and UNIX /etc/passwd style crypted password. - We hope you will join the open development. +We hope you will join the open development. diff --git a/README.ja b/README.ja index a645277..bf05894 100644 --- a/README.ja +++ b/README.ja @@ -1,234 +1,321 @@ +-*- outline -*- + [APEL の README (日本語版)] -APEL とは? -============ +* APEL とは? + +APEL は "A Portable Emacs Library." の略です。これは以下のモジュールで +構成されています: + +** poe.el + +主に最新の emacs 環境のための基礎的な関数と特殊形式/マクロの emulation +のモジュール。 + + poe-xemacs.el --- XEmacs用 + poe-18.el --- Emacs 18/Nemacs 用 + env.el --- Emacs 18 用の env.el + localhook.el --- Emacs 18 と Emacs 19.28 以前用の hook 関数群 + pym.el --- poe のための macros + +** poem.el + +移植性の高い MULE プログラムを書くための基礎的な関数を提供する。 + + poem-nemacs.el --- Nemacs 用 + poem-ltn1.el --- MULE なし Emacs 19/XEmacs 用 + poem-om.el --- MULE 1.*, 2.* 用 + poem-20.el --- Emacs 20 と XEmacs-MULE の共有モジュール + poem-e20_2.el --- Emacs 20.1/20.2 用 + poem-e20_3.el --- Emacs 20.3 用 + poem-xm.el --- XEmacs-MULE 用 + +** pces.el + +移植性の高い character encoding スキーム (coding-system) を提供する。 - APEL は "A Portable Emacs Library." の略です。これは以下のモジュール - で構成されています: + pces-20.el --- coding-system 機能を持つ Emacs 20 and XEmacs 用 + pces-e20.el --- Emacs 20 用 + pces-e20_2.el --- Emacs 20.1 and 20.2 用 + pces-nemacs.el --- Nemacs 用 + pces-om.el --- Mule 1.* and Mule 2.* 用 + pces-raw.el --- coding-system 機能を持たない emacsen 用 + pces-xfc.el --- file coding 機能を持つ XEmacs 用 + pces-xm.el --- XEmacs-mule 用 - poe.el --- 主に最新の emacs 環境のための基礎的な関数と特殊形式/マ - クロの emulation のモジュール - poe-xemacs.el --- XEmacs用 - poe-18.el --- Emacs 18/Nemacs 用 - env.el --- Emacs 18 用の env.el - localhook.el --- Emacs 18 と Emacs 19.28 以前用の hook 関数群 +** invisible.el --- 不可視 region に関する機能を提供する - poem.el --- 移植性の高い MULE プログラムを書くための基礎的な関数を - 提供する - poem-nemacs.el --- Nemacs 用 - poem-ltn1.el --- MULE なし Emacs 19/XEmacs 用 - poem-om.el --- MULE 1.*, 2.* 用 - poem-20.el --- Emacs 20 と XEmacs-MULE の共有モジュール - poem-e20_2.el --- Emacs 20.1/20.2 用 - poem-e20_3.el --- Emacs 20.3 用 - poem-xm.el --- XEmacs-MULE 用 + inv-18.el --- for Emacs 18 + inv-19.el --- for Emacs 19 + inv-xemacs.el --- for XEmacs - invisible.el --- 不可視 region に関する機能を提供する - inv-18.el --- for Emacs 18 - inv-19.el --- for Emacs 19 - inv-xemacs.el --- for XEmacs +** mcharset.el --- MIME charset 関連の機能を提供する - mcharset.el --- MIME charset 関連の機能を提供する - mcs-nemacs.el --- Nemacs 用 - mcs-ltn1.el --- MULE Emacs 19/XEmacs 用 - mcs-om.el --- MULE 1.*, 2.* 用 - mcs-20.el --- Emacs 20 と XEmacs-MULE 用の共有モジュール - mcs-e20.el --- Emacs 20 用 - mcs-xm.el --- XEmacs-MULE 用 - mcs-xmu.el --- XEmacs-MULE 用 (ISO646 文字の単一化) + mcs-nemacs.el --- Nemacs 用 + mcs-ltn1.el --- MULE Emacs 19/XEmacs 用 + mcs-om.el --- MULE 1.*, 2.* 用 + mcs-20.el --- Emacs 20 と XEmacs-MULE 用の共有モジュール + mcs-e20.el --- Emacs 20 用 + mcs-xm.el --- XEmacs-MULE 用 + mcs-xmu.el --- XEmacs-MULE 用 (ISO646 文字の単一化) - static.el --- 静的評価のためのユーティリティー +** static.el --- 静的評価のためのユーティリティー - broken.el --- Emacs の壊れている機能の情報を提供する +** broken.el --- Emacs の壊れている機能の情報を提供する - pccl.el --- 移植可能な CCL プログラムを書くためのユーティリティー - pccl-om.el --- MULE 2.* 用 - pccl-20.el --- Emacs 20/XEmacs-21-MULE 用 +** pccl.el --- 移植可能な CCL プログラムを書くためのユーティリティー - alist.el: 連想リストのためのユーティリティー + pccl-om.el --- MULE 2.* 用 + pccl-20.el --- Emacs 20/XEmacs-21-MULE 用 - calist.el: 状態木と状態/状況連想リスト用のユーティリティー +** alist.el: 連想リストのためのユーティリティー - path-util.el: パス管理とファイル探索のためのユーティリティー +** calist.el: 状態木と状態/状況連想リスト用のユーティリティー - filename.el:ファイル名を作るためのユーティリティ +** path-util.el: パス管理とファイル探索のためのユーティリティー - install.el: emacs-lisp パッケージインストールするためのユーティリ - ティー +** filename.el:ファイル名を作るためのユーティリティ - mule-caesar.el: ROT 13-47-48 Caesar 変換のユーティリティー +** install.el: emacs-lisp パッケージインストールするためのユーティリティー - emu.el --- (tm-7.106 に入っていた emu との互換性を保つためのモジュー - ル。poe, poem, mcharset を require する) +** mule-caesar.el: ROT 13-47-48 Caesar 変換のユーティリティー - emu-mule: MULE 1.*, 2.* 用 +** emu.el - richtext.el --- Emacs 19.29 かそれ以降 - XEmacs 19.14 かそれ以降 - のための text/richtext モジュール - tinyrich.el --- 古い emacs 環境のための text/richtext モジュー - ル +tm-7.106 に入っていた emu との互換性を保つためのモジュール。poe, poem, +mcharset を require する。 - pcustom.el --- 移植性の高い custom 環境を提供する + emu-mule: MULE 1.*, 2.* 用 - tinycustom.el --- custom.el のエミュレーションを行なう + richtext.el --- Emacs 19.29 かそれ以降 XEmacs 19.14 かそれ以降のた + めの text/richtext モジュール + tinyrich.el --- 古い emacs 環境のための text/richtext モジュール +** pcustom.el --- 移植性の高い custom 環境を提供する -インストール -============ + tinycustom.el --- custom.el のエミュレーションを行なう -(a) 展開した場所で実行 +** time-stamp.el - 他のディレクトリーにインストールしたくないなら、以下のことだけをやっ - てください: +Emacs による編集の際、最終修正時刻を保存するためのユーティリティ。 - % make +** timezone.el - emacs のコマンド名を指定することができます。例えば、 +タイムゾーンユーティリティ。2000 年問題対応版。Emacs 18 と GNUS 3.14.4 +でも動作可。 - % make EMACS=xemacs +** product.el --- プロダクトのバージョン情報のための機能を提供するモジュール。 - `EMACS=...' が省略されると、Emacs=emacs が使われます。 -(b) make install +* インストール - 他のディレクトリーにインストールしたいなら、以下のことをしてください: +** 展開した場所で実行 - % make install +他のディレクトリーにインストールしたくないなら、以下のことだけをやって +ください (MS-DOS 系の OS のために make.bat が用意されています。 +make.bat の利用については下記「make.bat を利用する (MS-DOS 系 OS の場 +合)」を参照して下さい)。: - emacs のコマンド名を指定することができます。例えば、 + % make - % make install EMACS=xemacs +emacs のコマンド名を指定することができます。例えば、 - `EMACS=...' が省略されると、Emacs=emacs が使われます。 + % make EMACS=xemacs - Emacs Lisp プログラムとシェルスクリプトのためのディレクトリー木の接 - 頭辞 (prefix) を指定することができます。例えば、 +`EMACS=...' が省略されると、Emacs=emacs が使われます。 - % make install PREFIX=~/ +** make install - `PREFIX=...' が省略されると、指定された emacs コマンドのディレクトリー - 木の接頭辞が使用されます (おそらく /usr/local です)。 +他のディレクトリーにインストールしたいなら、以下のことをしてください: - 例えば、PREFIX=/usr/local と Emacs 20.2 が指定されれば、以下のディレ - クトリー木が作成されます。 + % make install - /usr/local/share/emacs/20.2/site-lisp/ --- emu - /usr/local/share/emacs/site-lisp/apel/ --- APEL +emacs のコマンド名を指定することができます。例えば、 - Emacs Lisp プログラムのための lisp ディレクトリーを指定することがで - きます。例えば、: + % make install EMACS=xemacs - % make install LISPDIR=~/elisp +`EMACS=...' が省略されると、Emacs=emacs が使われます。 - emu モジュールがインストールされる、バージョン特有の lisp ディレクト - リーを指定することもできます。例えば、: +Emacs Lisp プログラムとシェルスクリプトのためのディレクトリー木の接頭 +辞 (prefix) を指定することができます。例えば、 - % make install VERSION_SPECIFIC_LISPDIR=~/elisp + % make install PREFIX=~/ - どのファイルが emu モジュールか apel モジュールの一部なのか、それら - がどこにインストールされるかを知りたいときは、次のようなコマンドを入 - 力することができます。 +`PREFIX=...' が省略されると、指定された emacs コマンドのディレクトリー +木の接頭辞が使用されます (おそらく /usr/local です)。 - % make what-where LISPDIR=~/elisp VERSION_SPECIFIC_LISPDIR=~/elisp +例えば、PREFIX=/usr/local と Emacs 20.2 が指定されれば、以下のディレク +トリー木が作成されます。 - ファイル APEL-CFG を編集することで他の選択自由な設定を指定することが - できます。その中のコメントを読んでください。 + /usr/local/share/emacs/20.2/site-lisp/ --- emu + /usr/local/share/emacs/site-lisp/apel/ --- APEL + +Emacs Lisp プログラムのための lisp ディレクトリーを指定することができ +ます。例えば、: + + % make install LISPDIR=~/elisp + +emu モジュールがインストールされる、バージョン特有の lisp ディレクトリー +を指定することもできます。例えば、: + + % make install VERSION_SPECIFIC_LISPDIR=~/elisp + +どのファイルが emu モジュールか apel モジュールの一部なのか、それらが +どこにインストールされるかを知りたいときは、次のようなコマンドを入力す +ることができます。 + + % make what-where LISPDIR=~/elisp VERSION_SPECIFIC_LISPDIR=~/elisp + +ファイル APEL-CFG を編集することで他の選択自由な設定を指定することがで +きます。その中のコメントを読んでください。 (c) XEmacs のパッケージとしてインストールする - XEmacs のパッケージディレクトリーにインストールする場合は、以下のこ - とをしてください: +XEmacs のパッケージディレクトリーにインストールする場合は、以下のこと +をしてください: + + % make install-package + +emacs のコマンド名を指定することができます。例えば、 - % make install-package + % make install-package XEMACS=xemacs-21 - emacs のコマンド名を指定することができます。例えば、 +`XEMACS=...' が省略されると、XEMACS=xemacs が使用されます。 - % make install-package XEMACS=xemacs-21 +パッケージのディレクトリーを指定することができます。例えば: - `XEMACS=...' が省略されると、XEMACS=xemacs が使用されます。 + % make install PACKAGEDIR=~/.xemacs - パッケージのディレクトリーを指定することができます。例えば: +`PACKAGEDIR=...' が省略されると、存在するパッケージディレクトリーの最 +初のものが使われます。 - % make install PACKAGEDIR=~/.xemacs +XEmacs のパッケージシステムは XEmacs 21.0 かそれ以降を要求することに注 +意してください。 - `PACKAGEDIR=...' が省略されると、存在するパッケージディレクトリーの - 最初のものが使われます。 +** make.bat を利用する (MS-DOS 系 OS の場合) - XEmacs のパッケージシステムは XEmacs 21.0 かそれ以降を要求することに - 注意してください。 +MS-DOS 系の OS のために make.bat が用意されています。make.bat を利用 +するには添付の make.bat を編集することが必要です (cygwin 環境を利用 +している方は make.exe と Makefile を利用することができます)。 +make.bat の中では `rem' が行頭にある行はコメントとして扱われます。必 +要に応じ、`rem' を挿入したり、または削除したりして下さい。 -load-path(Emacs と MULE の場合) -================================ +make.bat でディフォルトで有効になっている設定は、 - もし Emacs もしくは Mule をお使いなら、APEL を install した場所を - load-path に追加してください。もし Emacs 19.29 以降または Emacs 20.1, - 20.2 を使って初期設定でインストールしたのなら、次のように subdirs.el - を書くことができます。 + set MEADOWVER=1.10 + set PREFIX=c:\usr\meadow + set EMACS=%PREFIX%\%MEADOWVER%\bin\meadow95.exe + set LISPDIR=%PREFIX%\site-lisp + set VLISPDIR=%PREFIX%\%MEADOWVER%\site-lisp - -------------------------------------------------------------------- - (normal-top-level-add-to-load-path '("apel")) - -------------------------------------------------------------------- +で、meadow のバイナリが c:\usr\meadow\1.10\bin\meadow95.exe にインス +トールされていることを前提にしています。その前提に基づき、APEL のモ +ジュールのうち、meadow のバージョンに依存しないモジュールを - もし Emacs 20.3 以降もしくは XEmacs を使って普通にインストールするの - ならば、load-path を設定する必要はありません。 + c:\usr\meadow\site-lisp +に、バージョンに依存するモジュールを -Emacs のバージョンに関連した情報 -================================ + c:\usr\meadow\1.10\site-lisp + +にインストールしようとします。上記の例を参考に、自分の環境用の設定を書 +き込んで make.bat を動かして下さい。 + +19.3x 以前の Emacs (例えば 19.28 ベースの Mule for Windows) にはバージョ +ン依存の site-lisp ディレクトリ (上記の例で言えば +c:\usr\meadow\1.10\site-lisp) が存在せず、ディフォルトでは load-path も +通っていません。この場合は c:\usr\mule\site-lisp などのバージョン非依存 +の site-lisp ディレクトリに APEL の全てのモジュールを入れれば良いでしょ +う。 + +Demacs の設定例を準備することができませんでした。Demacs に APEL をイン +ストールした方は、設定例を apel-ja@m17n.org に送って下さい (非購読者で +も送信はできます)。 + +なお、Windows ネイティブの cvs.exe (not cygwin) を利用して APEL を +checkout した場合は、cvs.exe により行末コードが正規化されて CRCRLF に +なっている可能性があります。このような場合、make.bat は動きませんので +行末コードを CRLF に修正してお使い下さい。この問題について詳しくは、 + + http://openlab.ring.gr.jp/skk/cvswin-ja.html + +をご参照下さい。 + +* load-path(Emacs と MULE の場合) + +もし Emacs もしくは Mule をお使いなら、APEL を install した場所を +load-path に追加してください。もし Emacs 19.29 以降または Emacs 20.1, +20.2 を使って初期設定でインストールしたのなら、次のように subdirs.el +を書くことができます。 + +-------------------------------------------------------------------- +(normal-top-level-add-to-load-path '("apel")) +-------------------------------------------------------------------- + +もし Emacs 20.3 以降もしくは XEmacs を使って普通にインストールするの +ならば、load-path を設定する必要はありません。 + + +* Emacs のバージョンに関連した情報 + +** 「古い byte-compiler」と「新しい byte-compiler」 -「古い byte-compiler」と「新しい byte-compiler」 Emacs 18 のユーザのみなさんへ: - このパッケージではコンパイル時における条件判断をたくさん行なっていま - す。残念ながら Emacs 18 に付属している byte-compiler には、例えば - `eval-when-compile' や `eval-and-compile' の機能が無いので代用品のマ - クロを用意してありますが、これらはコンパイル時だけでなく load 時また - は実行時にも働いてしまいます! 加えて「古い byte-compiler」はトップ - レベルのマクロをコンパイルしてくれないので、APEL の多くのコードがコ - ンパイルされないままになってしまいます。 +このパッケージではコンパイル時における条件判断をたくさん行なっていま +す。残念ながら Emacs 18 に付属している byte-compiler には、例えば +`eval-when-compile' や `eval-and-compile' の機能が無いので代用品のマ +クロを用意してありますが、これらはコンパイル時だけでなく load 時また +は実行時にも働いてしまいます! 加えて「古い byte-compiler」はトップ +レベルのマクロをコンパイルしてくれないので、APEL の多くのコードがコ +ンパイルされないままになってしまいます。 + +そこで、最適化を行なう「新しい byte-compiler」を使うことをお勧めしま +す。それは Emacs 19 以降に付属している byte-compiler の元になってい +るものです。 - そこで、最適化を行なう「新しい byte-compiler」を使うことをお勧めしま - す。それは Emacs 19 以降に付属している byte-compiler の元になってい - るものです。 +最適化を行なう byte-compiler は Emacs Lisp Archive およびそれらのミ +ラーから入手することができます。 - 最適化を行なう byte-compiler は Emacs Lisp Archive およびそれらのミ - ラーから入手することができます。 +Mule 1.* の時代には Mule 用の「新しい byte-compiler」を含む Mule 1.* +用の "contrib" パッケージが配布されていました。しかし現在ではこのパッ +ケージを手に入れることは難しいでしょう。 - Mule 1.* の時代には Mule 用の「新しい byte-compiler」を含む Mule 1.* - 用の "contrib" パッケージが配布されていました。しかし現在ではこのパッ - ケージを手に入れることは難しいでしょう。 +我々の知る限りでは Emacs 18 用の「新しい byte-compiler」は SKK 9.6, +または SKK 10.62a に付属しています。SKK 10.62a は - 我々の知る限りでは Emacs 18 用の「新しい byte-compiler」は SKK 9.6 - に付属しています。これは Mule 1.* 用のパッチも含んでいます。 + http://openlab.ring.gr.jp/skk/maintrunk +から入手することができます。これらは Mule 1.* 用のパッチも含んでいます。 + + +** 「古い custom」と「新しい custom」 -「古い custom」と「新しい custom」 Emacs 19.34 と XEmacs 19.14 のユーザのみなさんへ: - Emacs 19.32〜19.34、XEmacs 19.14 および Gnus 5.2/5.3 に含まれている - custom ライブラリは「古い」もので、これの API は Emacs 20.1 または - XEmacs 19.15 より新しい Emacsen と Gnus 5.4/5.5 に含まれている - 「新しい custom」とは違っています。 +Emacs 19.32〜19.34、XEmacs 19.14 および Gnus 5.2/5.3 に含まれている +custom ライブラリは「古い」もので、これの API は Emacs 20.1 または +XEmacs 19.15 より新しい Emacsen と Gnus 5.4/5.5 に含まれている +「新しい custom」とは違っています。 - Emacs 19.34 と XEmacs 19.15〜20.2 用の「新しい custom」は、以下の - URL から手に入れることができます。 +Emacs 19.34 と XEmacs 19.15〜20.2 用の「新しい custom」は、以下の +URL から手に入れることができます。 - ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz +ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz - (注: XEmacs 19.15〜20.2 と Gnus 5.4/5.5 に含まれている「新しい - custom」はこの版より古いものです。) +(注: XEmacs 19.15〜20.2 と Gnus 5.4/5.5 に含まれている「新しい custom」 +はこの版より古いものです。) - 「新しい custom」をインストールする前に、次の各項目をチェックして下 - さい。 +「新しい custom」をインストールする前に、次の各項目をチェックして下 +さい。 - 1) もしあなたが Gnus 5.2/5.3 (または他の「古い custom」を使うアプ - リケーション) を使うことに固執しているのならば「新しい custom」 - をインストールしてはいけません。 + 1) もしあなたが Gnus 5.2/5.3 (または他の「古い custom」を使うアプ + リケーション) を使うことに固執しているのならば「新しい custom」 + をインストールしてはいけません。 - 2) Emacs 19 を元にした Mule を使うのならば、このパッチを「新しい - custom」に当てる必要があります。 + 2) Emacs 19 を元にした Mule を使うのならば、このパッチを「新しい + custom」に当てる必要があります。 ----8<------8<------8<------8<------8<------8<------8<------8<---- --- custom-1.9962/cus-face.el~ Wed Mar 4 19:52:39 1998 @@ -244,192 +331,191 @@ Emacs 19.34 と XEmacs 19.14 のユーザのみなさんへ: (let* ((frames (frame-list)) ----8<------8<------8<------8<------8<------8<------8<------8<---- - 3) custom を使うコンパイルされたアプリケーションは、それを load す - るときや実行するときに同じバージョンの custom を必要とします。 - したがって、いつも load-path に「新しい custom」を含めておかな - ければなりません。 - これを行なうためのもっとも簡単な方法は subdirs.el を使うことで - す。 - 「新しい custom」が /usr/local/share/emacs/19.34/site-lisp/custom/ - にインストールされているのならば、 - /usr/local/share/emacs/19.34/site-lisp/subdirs.el というファイ - ルに以下の行を書き込んで下さい。 + 3) custom を使うコンパイルされたアプリケーションは、それを load す + るときや実行するときに同じバージョンの custom を必要とします。 + したがって、いつも load-path に「新しい custom」を含めておかな + ければなりません。 + これを行なうためのもっとも簡単な方法は subdirs.el を使うことで + す。 + 「新しい custom」が /usr/local/share/emacs/19.34/site-lisp/custom/ + にインストールされているのならば、 + /usr/local/share/emacs/19.34/site-lisp/subdirs.el というファイ + ルに以下の行を書き込んで下さい。 - (normal-top-level-add-to-load-path '("custom")) + (normal-top-level-add-to-load-path '("custom")) -使い方 -====== +* 使い方 -alist ------ +** alist -関数 put-alist (ITEM VALUE ALIST) +*** 関数 put-alist (ITEM VALUE ALIST) - ALIST を ITEM の値が VALUE になるように修正します。car が ITEM であ - る対が存在すれば、その cdr を VALUE で置き換えます。そのような対がな - ければ、新しい対 (ITEM . VALUE) を作り、car が新しい対で、cdr が - ALIST である新しい連想リストを返します。 +ALIST を ITEM の値が VALUE になるように修正します。car が ITEM であ +る対が存在すれば、その cdr を VALUE で置き換えます。そのような対がな +ければ、新しい対 (ITEM . VALUE) を作り、car が新しい対で、cdr が +ALIST である新しい連想リストを返します。 -関数 del-alist (ITEM ALIST) +*** 関数 del-alist (ITEM ALIST) - 連想リスト ALIST に key が ITEM である対があれば、それを ALIST から取 - り除きます。 +連想リスト ALIST に key が ITEM である対があれば、それを ALIST から取 +り除きます。 -関数 set-alist (SYMBOL ITEM VALUE) +*** 関数 set-alist (SYMBOL ITEM VALUE) - SYMBOL で指定されている連想リストを、ITEM の値が VALUE であるように - 修正します。 +SYMBOL で指定されている連想リストを、ITEM の値が VALUE であるように修 +正します。 例. (set-alist 'auto-mode-alist "\\.pln$" 'text-mode) -関数 modify-alist (MODIFIER DEFAULT) +*** 関数 modify-alist (MODIFIER DEFAULT) - 連想リスト DEFAULT を連想リスト MODIFIER に修正します。 +連想リスト DEFAULT を連想リスト MODIFIER に修正します。 -関数 set-modified-alist (SYMBOL MODIFIER) +*** 関数 set-modified-alist (SYMBOL MODIFIER) - SYMBOL の値を連想リスト MODIFIER に修正します。SYMBOL は連想リストで - ある必要があります。それが束縛されていなければ、その値を nil とみな - します。 +SYMBOL の値を連想リスト MODIFIER に修正します。SYMBOL は連想リストであ +る必要があります。それが束縛されていなければ、その値を nil とみなしま +す。 -path-util ---------- +** path-util -関数 add-path (PATH &rest OPTIONS) +*** 関数 add-path (PATH &rest OPTIONS) - PATH が `default-load-path' のディレクトリーの下に存在して、 - `load-path'に存在しないときに、それを `load-path' に追加します。 +PATH が `default-load-path' のディレクトリーの下に存在して、 +`load-path'に存在しないときに、それを `load-path' に追加します。 - 次のような PATH の様式を使うことができます: +次のような PATH の様式を使うことができます: - load-path からの相対: "PATH" (それは `default-load-path から探 - されます。) + load-path からの相対: "PATH" (それは `default-load-path から探されま + す。) - ホームディレクトリーからの相対: "~/PATH" "~USER/PATH" + ホームディレクトリーからの相対: "~/PATH" "~USER/PATH" - 絶対パス: "/FOO/BAR/BAZ" + 絶対パス: "/FOO/BAR/BAZ" - 次のような OPTIONS を指定することができます: +次のような OPTIONS を指定することができます: - 'all-paths --- `default-load-path の代わり `load-path' から探しま + 'all-paths --- `default-load-path の代わり `load-path' から探しま す。 - 'append --- PATH を `load-path' の最後に追加します。 + 'append --- PATH を `load-path' の最後に追加します。 -関数 add-latest-path (PATTERN &optional ALL-PATHS) +*** 関数 add-latest-path (PATTERN &optional ALL-PATHS) - 正規表現 PATTERN に合致した最新のパスが `default-load-path' の下に存 - 在していて、`load-path' の下に存在していないときにそれを `load-path' - に追加します。 +正規表現 PATTERN に合致した最新のパスが `default-load-path' の下に存在 +していて、`load-path' の下に存在していないときにそれを `load-path' に +追加します。 - 例えば、bbdb-1.50 と bbdb-1.51 が site-lisp の下にあって、bbdb-1.51 - が bbdb-1.50 よりも新しく、site-lisp が - /usr/local/share/emacs/site-lisp であるときは、 +例えば、bbdb-1.50 と bbdb-1.51 が site-lisp の下にあって、bbdb-1.51 が +bbdb-1.50 よりも新しく、site-lisp が /usr/local/share/emacs/site-lisp +であるときは、 - (add-latest-path "bbdb") + (add-latest-path "bbdb") - は "/usr/local/share/emacs/site-lisp/bbdb-1.51" を `load-path' の先 - 頭に追加します。 +は "/usr/local/share/emacs/site-lisp/bbdb-1.51" を `load-path' の先頭 +に追加します。 - 省略可能な引数 ALL-PATHS が指定されると、`default-load-path' のかわ - りに `load-path' から探します。 +省略可能な引数 ALL-PATHS が指定されると、`default-load-path' のかわり +に `load-path' から探します。 -関数 get-latest-path (PATTERN &optional ALL-PATHS) +*** 関数 get-latest-path (PATTERN &optional ALL-PATHS) - 正規表現 PATTERN に合致する default-load-path にある最新のディレクト - リーを返します。省略可能な引数 ALL-PATHS が指定されると、 - default-load-path の代わりに load-path の全てから探します。 +正規表現 PATTERN に合致する default-load-path にある最新のディレクトリー +を返します。省略可能な引数 ALL-PATHS が指定されると、default-load-path +の代わりに load-path の全てから探します。 例. (let ((gnus-path (get-latest-path "gnus"))) (add-path (expand-file-name "lisp" gnus-path)) (add-to-list 'Info-default-directory-list - (expand-file-name "texi" gnus-path)) - ) + (expand-file-name "texi" gnus-path))) -関数 file-installed-p (FILE &optional PATHS) +*** 関数 file-installed-p (FILE &optional PATHS) - FILE が PATHS に存在した場合、FILE の絶対パスを返します。PATHS が省 - 略されると、`load-path' が使われます。 +FILE が PATHS に存在した場合、FILE の絶対パスを返します。PATHS が省略 +されると、`load-path' が使われます。 -関数 exec-installed-p (FILE &optional PATHS SUFFIXES) +*** 関数 exec-installed-p (FILE &optional PATHS SUFFIXES) - FILE が PATHS に存在した場合に FILE の絶対パスを返します。PATHS が省 - 略されると、`exec-path' が使われます。SUFFIXES が省略されると、 - `exec-suffix-list' が使われます。 +FILE が PATHS に存在した場合に FILE の絶対パスを返します。PATHS が省略 +されると、`exec-path' が使われます。SUFFIXES が省略されると、 +`exec-suffix-list' が使われます。 -関数 module-installed-p (MODULE &optional PATHS) +*** 関数 module-installed-p (MODULE &optional PATHS) - MODULE が提供されている (provided) か、PATHS に存在する場合に nil で - ない値を返します。PATHS が省略されると、`load-path' が使われます。 +MODULE が提供されている (provided) か、PATHS に存在する場合に nil で +ない値を返します。PATHS が省略されると、`load-path' が使われます。 -filename --------- +** filename -関数 replace-as-filename (string) +*** 関数 replace-as-filename (string) - STRING から安全なファイル名を返します。 +STRING から安全なファイル名を返します。 - それは変数 'filename-fileters' を参照します。その変数はファイル名の - 選別器のための関数のリストです。初期設定の選別器は以下の変数を参照し - ています。 +それは変数 'filename-fileters' を参照します。その変数はファイル名の選 +別器のための関数のリストです。初期設定の選別器は以下の変数を参照してい +ます。 - 変数 filename-limit-length +**** 変数 filename-limit-length - ファイル名の長さの制限。 +ファイル名の長さの制限。 - 変数 filename-replacement-alist +**** 変数 filename-replacement-alist - 文字と文字列が対になったリストの連想リストです。文字のリスト - はファイル名として許されない文字を現わします。 +文字と文字列が対になったリストの連想リストです。文字のリストはファイル +名として許されない文字を現わします。 -バグ報告 -=========== +* バグ報告 - バグ報告や改善の提案を書いたときは、是非 APEL メーリングリストに送っ - てください: +バグ報告や改善の提案を書いたときは、是非 APEL メーリングリストに送って +ください: - apel-en@m17n.org (英語) - apel-ja@m17n.org (日本語) + apel-en@m17n.org (英語) + apel-ja@m17n.org (日本語) - APEL ML を通して、APEL のバグを報告したり、APEL の最新のリリースを取 - 得したり、APEL の将来の拡張の議論をしたりすることができます。APEL ML - に参加するには、空の電子メールを +APEL ML を通して、APEL のバグを報告したり、APEL の最新のリリースを取得 +したり、APEL の将来の拡張の議論をしたりすることができます。APEL ML に +参加するには、空の電子メールを - apel-en-ctl@m17n.org (英語) - apel-ja-ctl@m17n.org (日本語) + apel-en-ctl@m17n.org (英語) + apel-ja-ctl@m17n.org (日本語) - に送ってください。 +に送ってください。 -Anonymous FTP -============= +* Anonymous FTP - 最新の APEL のリリースは以下の場所から取得できます: +最新の APEL のリリースは以下の場所から取得できます: ftp://ftp.m17n.org/pub/mule/apel/ -CVS -=== +* CVS + +APEL の開発は CVS を使っています。最新の開発バージョンを CVS で取得で +きます。 + +** cvs login (一回目だけ) - APEL の開発は CVS を使っています。最新の開発バージョンを CVS で - 取得できます。 + % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login -(0) cvs login (一回目だけ) + CVS password: [CR] # 空文字列 - % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login +** checkout - CVS password: [CR] # 空文字列 + % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout apel -(1) checkout +CVS に基づいた開発に参加したいときは、 - % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout apel + cvs@cvs.m17n.org - CVS に基づいた開発に参加したいときは、 +にアカウント名と、ssh の公開鍵を送ってください。ssh 経由では、cvsroot +は :ext:cvs@cvs.m17n.org:/cvs/root となります。 - cvs@cvs.m17n.org +どうしても ssh が使えない場合、pserver 経由でも開発に参加できます。こ +の場合、UNIX の /etc/passwd 様式で暗号化されたパスワードを送って下さい。 +この場合 cvsroot は :pserver:<アカウント名>@cvs.m17n.org:/cvs/root と +なります。 - にアカウント名と、UNIX の /etc/passwd 様式で暗号化されたパスワードを - 送ってください。開かれた開発に参加してくださることを期待します。 +開かれた開発に参加してくださることを期待します。 diff --git a/alist.el b/alist.el index c016c92..37522a5 100644 --- a/alist.el +++ b/alist.el @@ -1,11 +1,11 @@ -;;; alist.el --- utility functions about association-list +;;; alist.el --- utility functions for association list -;; Copyright (C) 1993,1994,1995,1996,1998 Free Software Foundation, Inc. +;; Copyright (C) 1993,1994,1995,1996,1998,2000 Free Software Foundation, Inc. -;; Author: MORIOKA Tomohiko +;; Author: MORIOKA Tomohiko ;; Keywords: alist -;; This file is part of APEL (A Portable Emacs Library). +;; This file is part of GNU Emacs. ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as @@ -25,76 +25,71 @@ ;;; Code: ;;;###autoload -(defun put-alist (item value alist) - "Modify ALIST to set VALUE to ITEM. -If there is a pair whose car is ITEM, replace its cdr by VALUE. -If there is not such pair, create new pair (ITEM . VALUE) and -return new alist whose car is the new pair and cdr is ALIST. -\[tomo's ELIS like function]" - (let ((pair (assoc item alist))) - (if pair +(defun put-alist (key value alist) + "Set cdr of an element (KEY . ...) in ALIST to VALUE and return ALIST. +If there is no such element, create a new pair (KEY . VALUE) and +return a new alist whose car is the new pair and cdr is ALIST." + (let ((elm (assoc key alist))) + (if elm (progn - (setcdr pair value) + (setcdr elm value) alist) - (cons (cons item value) alist) - ))) + (cons (cons key value) alist)))) ;;;###autoload -(defun del-alist (item alist) - "If there is a pair whose key is ITEM, delete it from ALIST. -\[tomo's ELIS emulating function]" - (if (equal item (car (car alist))) - (cdr alist) - (let ((pr alist) - (r (cdr alist)) - ) - (catch 'tag - (while (not (null r)) - (if (equal item (car (car r))) - (progn - (rplacd pr (cdr r)) - (throw 'tag alist))) - (setq pr r) - (setq r (cdr r)) - ) - alist)))) +(defun del-alist (key alist) + "Delete an element whose car equals KEY from ALIST. +Return the modified ALIST." + (let ((pair (assoc key alist))) + (if pair + (delq pair alist) + alist))) ;;;###autoload -(defun set-alist (symbol item value) - "Modify a alist indicated by SYMBOL to set VALUE to ITEM." +(defun set-alist (symbol key value) + "Set cdr of an element (KEY . ...) in the alist bound to SYMBOL to VALUE." (or (boundp symbol) - (set symbol nil) - ) - (set symbol (put-alist item value (symbol-value symbol))) - ) + (set symbol nil)) + (set symbol (put-alist key value (symbol-value symbol)))) ;;;###autoload -(defun remove-alist (symbol item) - "Remove ITEM from the alist indicated by SYMBOL." +(defun remove-alist (symbol key) + "Delete an element whose car equals KEY from the alist bound to SYMBOL." (and (boundp symbol) - (set symbol (del-alist item (symbol-value symbol))) - )) + (set symbol (del-alist key (symbol-value symbol))))) ;;;###autoload (defun modify-alist (modifier default) - "Modify alist DEFAULT into alist MODIFIER." + "Store elements in the alist MODIFIER in the alist DEFAULT. +Return the modified alist." (mapcar (function (lambda (as) - (setq default (put-alist (car as)(cdr as) default)) - )) + (setq default (put-alist (car as)(cdr as) default)))) modifier) default) ;;;###autoload -(defun set-modified-alist (sym modifier) - "Modify a value of a symbol SYM into alist MODIFIER. -The symbol SYM should be alist. If it is not bound, -its value regard as nil." - (if (not (boundp sym)) - (set sym nil) - ) - (set sym (modify-alist modifier (eval sym))) - ) +(defun set-modified-alist (symbol modifier) + "Store elements in the alist MODIFIER in an alist bound to SYMBOL. +If SYMBOL is not bound, set it to nil at first." + (if (not (boundp symbol)) + (set symbol nil)) + (set symbol (modify-alist modifier (eval symbol)))) + + +;;; @ association-vector-list +;;; + +;;;###autoload +(defun vassoc (key avlist) + "Search AVLIST for an element whose first element equals KEY. +AVLIST is a list of vectors. +See also `assoc'." + (while (and avlist + (not (equal key (aref (car avlist) 0)))) + (setq avlist (cdr avlist))) + (and avlist + (car avlist))) ;;; @ end diff --git a/apel-ver.el b/apel-ver.el index 93d09ca..c086ab4 100644 --- a/apel-ver.el +++ b/apel-ver.el @@ -39,8 +39,8 @@ ;; (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)) + ;; (product-define "APEL" nil '(10 2)) ; Released 01 March 2000 + (product-define "APEL" nil '(10 3)) ; Released 30 December 2000 ) (defun apel-version () diff --git a/install.el b/install.el index 2d9dd41..04c026a 100644 --- a/install.el +++ b/install.el @@ -191,6 +191,50 @@ (install-detect-elisp-directory)) +;;; @ for XEmacs package system +;;; + +(defun install-update-package-files (package dir &optional just-print) + (cond + (just-print + (princ (format "Updating autoloads in directory %s..\n\n" dir)) + + (princ (format "Processing %s\n" dir)) + (princ "Generating custom-load.el...\n\n") + + (princ (format "Compiling %s...\n" + (expand-file-name "auto-autoloads.el" dir))) + (princ (format "Wrote %s\n" + (expand-file-name "auto-autoloads.elc" dir))) + + (princ (format "Compiling %s...\n" + (expand-file-name "custom-load.el" dir))) + (princ (format "Wrote %s\n" + (expand-file-name "custom-load.elc" dir)))) + (t + (setq autoload-package-name package) + + (let ((command-line-args-left (list dir))) + (batch-update-directory)) + + (let ((command-line-args-left (list dir))) + (Custom-make-dependencies)) + + (byte-compile-file (expand-file-name "auto-autoloads.el" dir)) + (byte-compile-file (expand-file-name "custom-load.el" dir))))) + + +;;; @ Other Utilities +;;; + +(defun install-just-print-p () + (let ((flag (getenv "MAKEFLAGS")) + (case-fold-search nil)) + (princ (format "%s\n" flag)) + (if flag + (string-match "^\\(\\(--[^ ]+ \\)+-\\|[^ =-]\\)*n" flag)))) + + ;;; @ end ;;; diff --git a/mcharset.el b/mcharset.el index 156c34e..3f19c39 100644 --- a/mcharset.el +++ b/mcharset.el @@ -1,6 +1,6 @@ ;;; mcharset.el --- MIME charset API -;; Copyright (C) 1997,1998,1999 Free Software Foundation, Inc. +;; Copyright (C) 1997,1998,1999,2000 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko ;; Keywords: emulation, compatibility, Mule @@ -28,28 +28,18 @@ (require 'pcustom) (cond ((featurep 'mule) - (cond ((featurep 'xemacs) - (require 'mcs-xm) - ) - ((>= emacs-major-version 20) - (require 'mcs-e20) - ) - (t - ;; for MULE 1.* and 2.* - (require 'mcs-om) - )) - ) + (if (>= emacs-major-version 20) + (require 'mcs-20) + ;; for MULE 1.* and 2.* + (require 'mcs-om))) ((boundp 'NEMACS) ;; for Nemacs and Nepoch - (require 'mcs-nemacs) - ) + (require 'mcs-nemacs)) (t - (require 'mcs-ltn1) - )) + (require 'mcs-ltn1))) (defcustom default-mime-charset-for-write - (if (and (fboundp 'find-coding-system) - (find-coding-system 'utf-8)) + (if (mime-charset-p 'utf-8) 'utf-8 default-mime-charset) "Default value of MIME-charset for encoding. diff --git a/mcs-20.el b/mcs-20.el index aa4743f..ca9f394 100644 --- a/mcs-20.el +++ b/mcs-20.el @@ -1,8 +1,8 @@ ;;; mcs-20.el --- MIME charset implementation for Emacs 20 and XEmacs/mule -;; Copyright (C) 1997,1998,1999 Free Software Foundation, Inc. +;; Copyright (C) 1997,1998,1999,2000 Free Software Foundation, Inc. -;; Author: MORIOKA Tomohiko +;; Author: MORIOKA Tomohiko ;; Keywords: emulation, compatibility, Mule ;; This file is part of APEL (A Portable Emacs Library). @@ -29,10 +29,13 @@ ;;; Code: -(require 'poem) -(require 'pcustom) +(require 'custom) (eval-when-compile (require 'wid-edit)) +(if (featurep 'xemacs) + (require 'mcs-xm) + (require 'mcs-e20)) + ;;; @ MIME charset ;;; @@ -100,6 +103,8 @@ is specified, it is used as line break code type of coding-system." charset lbt cs) )))) +(defalias 'mime-charset-p 'mime-charset-to-coding-system) + (defvar widget-mime-charset-prompt-value-history nil "History of input to `widget-mime-charset-prompt-value'.") @@ -132,7 +137,7 @@ is specified, it is used as line break code type of coding-system." (widget-apply widget :notify widget event) (widget-setup))) -(defcustom default-mime-charset 'x-ctext +(defcustom default-mime-charset 'x-unknown "Default value of MIME-charset. It is used when MIME-charset is not specified. It must be symbol." diff --git a/mcs-e20.el b/mcs-e20.el index 00b621e..84a4694 100644 --- a/mcs-e20.el +++ b/mcs-e20.el @@ -1,6 +1,6 @@ ;;; mcs-e20.el --- MIME charset implementation for Emacs 20.1 and 20.2 -;; Copyright (C) 1996,1997,1998,1999 Free Software Foundation, Inc. +;; Copyright (C) 1996,1997,1998,1999,2000 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko ;; Keywords: emulation, compatibility, Mule @@ -28,10 +28,8 @@ ;;; Code: -(eval-when-compile - (require 'static) - (require 'poem) - ) +(require 'pces) +(eval-when-compile (require 'static)) (defsubst encode-mime-charset-region (start end charset &optional lbt) "Encode the text between START and END as MIME CHARSET." @@ -177,8 +175,6 @@ Return nil if corresponding MIME-charset is not found." ;;; @ end ;;; -(require 'mcs-20) - (require 'product) (product-provide (provide 'mcs-e20) (require 'apel-ver)) diff --git a/mcs-ltn1.el b/mcs-ltn1.el index 17a93bb..aa76ef9 100644 --- a/mcs-ltn1.el +++ b/mcs-ltn1.el @@ -1,9 +1,9 @@ ;;; mcs-ltn1.el --- MIME charset implementation for Emacs 19 ;;; and XEmacs without MULE -;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko +;; Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. -;; Author: MORIOKA Tomohiko +;; Author: MORIOKA Tomohiko ;; Keywords: emulation, compatibility, Mule ;; This file is part of APEL (A Portable Emacs Library). @@ -40,11 +40,11 @@ (defun mime-charset-to-coding-system (charset) (if (stringp charset) - (setq charset (intern (downcase charset))) - ) + (setq charset (intern (downcase charset)))) (if (memq charset (list 'us-ascii default-mime-charset)) - charset - )) + charset)) + +(defalias 'mime-charset-p 'mime-charset-to-coding-system) (defun detect-mime-charset-region (start end) "Return MIME charset for region between START and END." diff --git a/mcs-nemacs.el b/mcs-nemacs.el index 0251369..9784ac6 100644 --- a/mcs-nemacs.el +++ b/mcs-nemacs.el @@ -1,8 +1,8 @@ ;;; mcs-nemacs.el --- MIME charset implementation for Nemacs -;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko +;; Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. -;; Author: MORIOKA Tomohiko +;; Author: MORIOKA Tomohiko ;; Keywords: emulation, compatibility, Mule ;; This file is part of APEL (A Portable Emacs Library). @@ -48,6 +48,8 @@ ) (cdr (assq charset mime-charset-coding-system-alist))) +(fset 'mime-charset-p 'mime-charset-to-coding-system) + (defun detect-mime-charset-region (start end) "Return MIME charset for region between START and END. \[emu-nemacs.el]" diff --git a/mcs-xm.el b/mcs-xm.el index 0fd6d8d..cc484eb 100644 --- a/mcs-xm.el +++ b/mcs-xm.el @@ -1,9 +1,9 @@ ;;; mcs-xm.el --- MIME charset implementation for XEmacs-mule -;; Copyright (C) 1997,1998,1999 Free Software Foundation, Inc. +;; Copyright (C) 1997,1998,1999,2000 Free Software Foundation, Inc. -;; Author: MORIOKA Tomohiko -;; Keywords: emulation, compatibility, Mule +;; Author: MORIOKA Tomohiko +;; Keywords: MIME-charset, coding-system, emulation, compatibility, Mule ;; This file is part of APEL (A Portable Emacs Library). @@ -29,7 +29,7 @@ ;;; Code: -(require 'mcs-20) +(require 'poem) (defun encode-mime-charset-region (start end charset &optional lbt) @@ -103,7 +103,7 @@ (defvar charsets-mime-charset-alist - '(((ascii) . us-ascii) + `(((ascii) . us-ascii) ((ascii latin-iso8859-1) . iso-8859-1) ((ascii latin-iso8859-2) . iso-8859-2) ((ascii latin-iso8859-3) . iso-8859-3) @@ -114,18 +114,48 @@ ((ascii greek-iso8859-7) . iso-8859-7) ((ascii hebrew-iso8859-8) . iso-8859-8) ((ascii latin-iso8859-9) . iso-8859-9) - ((ascii latin-jisx0201 - japanese-jisx0208-1978 japanese-jisx0208) . iso-2022-jp) - ((ascii latin-jisx0201 - katakana-jisx0201 japanese-jisx0208) . shift_jis) + ,(if (featurep 'utf-2000) + '((ascii latin-jisx0201 + japanese-jisx0208-1978 + japanese-jisx0208 + japanese-jisx0208-1990) . iso-2022-jp) + '((ascii latin-jisx0201 + japanese-jisx0208-1978 japanese-jisx0208) + . iso-2022-jp)) + ,(if (featurep 'utf-2000) + '((ascii latin-jisx0201 + japanese-jisx0208-1978 + japanese-jisx0208 + japanese-jisx0208-1990 + japanese-jisx0213-1 + japanese-jisx0213-2) . iso-2022-jp-3) + '((ascii latin-jisx0201 + japanese-jisx0208-1978 japanese-jisx0208 + japanese-jisx0213-1 + japanese-jisx0213-2) . iso-2022-jp-3)) + ,(if (featurep 'utf-2000) + '((ascii latin-jisx0201 katakana-jisx0201 + japanese-jisx0208-1990) . shift_jis) + '((ascii latin-jisx0201 + katakana-jisx0201 japanese-jisx0208) . shift_jis)) ((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 - korean-ksc5601 japanese-jisx0212) . iso-2022-jp-2) + ,(if (featurep 'utf-2000) + '((ascii latin-jisx0201 latin-iso8859-1 + greek-iso8859-7 + japanese-jisx0208-1978 japanese-jisx0208 + japanese-jisx0208-1990 + japanese-jisx0212 + chinese-gb2312 + korean-ksc5601) . iso-2022-jp-2) + '((ascii latin-jisx0201 latin-iso8859-1 + greek-iso8859-7 + japanese-jisx0208-1978 japanese-jisx0208 + japanese-jisx0212 + chinese-gb2312 + korean-ksc5601) . iso-2022-jp-2)) ;; ((ascii latin-iso8859-1 greek-iso8859-7 ;; latin-jisx0201 japanese-jisx0208-1978 ;; chinese-gb2312 japanese-jisx0208 diff --git a/path-util.el b/path-util.el index d774642..db87fc7 100644 --- a/path-util.el +++ b/path-util.el @@ -54,18 +54,16 @@ You can specify following OPTIONS: (while rest (setq p (expand-file-name path (car rest))) (if (file-directory-p p) - (throw 'tag p) - ) - (setq rest (cdr rest)) - )) - (not (member p load-path)) - ) + (throw 'tag p)) + (setq rest (cdr rest)))) + (not (or (member p load-path) + (if (string-match "/$" p) + (member (substring p 0 (1- (length p))) load-path) + (member (file-name-as-directory p) load-path))))) (setq load-path (if (memq 'append options) (append load-path (list p)) - (cons p load-path) - )) - ))) + (cons p load-path)))))) ;;;###autoload (defun add-latest-path (pattern &optional all-paths) diff --git a/pccl-20.el b/pccl-20.el index b95244a..0a67371 100644 --- a/pccl-20.el +++ b/pccl-20.el @@ -48,6 +48,26 @@ (eval-and-compile + (static-if (featurep 'xemacs) + (defadvice make-coding-system (before ccl-compat (name type &rest ad-subr-args) activate) + (when (and (integerp type) + (eq type 4) + (characterp (ad-get-arg 2)) + (stringp (ad-get-arg 3)) + (consp (ad-get-arg 4)) + (symbolp (car (ad-get-arg 4))) + (symbolp (cdr (ad-get-arg 4)))) + (setq type 'ccl) + (setq ad-subr-args + (list + (ad-get-arg 3) + (append + (list + 'mnemonic (char-to-string (ad-get-arg 2)) + 'decode (symbol-value (car (ad-get-arg 4))) + 'encode (symbol-value (cdr (ad-get-arg 4)))) + (ad-get-arg 5))))))) + (if (featurep 'xemacs) (defun make-ccl-coding-system (name mnemonic docstring decoder encoder) "\ diff --git a/pces-raw.el b/pces-raw.el index 54c751d..ada032c 100644 --- a/pces-raw.el +++ b/pces-raw.el @@ -29,11 +29,11 @@ (defun decode-coding-string (string coding-system) "Decode the STRING which is encoded in CODING-SYSTEM." - string) + (copy-sequence string)) (defun encode-coding-string (string coding-system) "Encode the STRING as CODING-SYSTEM." - string) + (copy-sequence string)) (defun decode-coding-region (start end coding-system) "Decode the text between START and END which is encoded in CODING-SYSTEM." diff --git a/poe-18.el b/poe-18.el index 1f5bc10..b84d0fe 100644 --- a/poe-18.el +++ b/poe-18.el @@ -453,8 +453,6 @@ resolution finer than a second." ;;; @@ Floating point numbers. ;;; -(defalias 'numberp 'integerp) - (defun abs (arg) "Return the absolute value of ARG." (if (< arg 0) (- arg) arg)) @@ -468,8 +466,6 @@ With optional DIVISOR, return the largest integer no greater than ARG/DIVISOR." (- (/ (- divisor 1 arg) divisor)) (/ arg divisor))) -(defalias 'mod '%) - ;;; @ Basic lisp subroutines. ;;; @@ -515,12 +511,29 @@ With optional non-nil ALL, force redisplay of all mode-lines." ;;; ;; 18.55 does not have these variables. -(defvar buffer-undo-list nil) -(defvar auto-fill-function nil) -(defvar unread-command-event nil) -(defvar unread-command-events nil) +(defvar buffer-undo-list nil + "List of undo entries in current buffer. +APEL provides this as dummy for a compatibility.") + +(defvar auto-fill-function nil + "Function called (if non-nil) to perform auto-fill. +APEL provides this as dummy for a compatibility.") + +(defvar unread-command-event nil + "APEL provides this as dummy for a compatibility.") +(defvar unread-command-events nil + "List of events to be read as the command input. +APEL provides this as dummy for a compatibility.") + +;; (defvar minibuffer-setup-hook nil +;; "Normal hook run just after entry to minibuffer.") +;; (defvar minibuffer-exit-hook nil +;; "Normal hook run just after exit from minibuffer.") + +(defvar minor-mode-map-alist nil + "Alist of keymaps to use for minor modes. +APEL provides this as dummy for a compatibility.") -(defalias 'buffer-disable-undo 'buffer-flush-undo) (defalias 'insert-and-inherit 'insert) (defalias 'insert-before-markers-and-inherit 'insert-before-markers) (defalias 'number-to-string 'int-to-string) @@ -584,7 +597,7 @@ Fifth arg HIST is ignored in this implementatin." Optional argunemt FRAME is ignored in this implementation." (si:get-buffer-window buffer)))) -(defun-maybe walk-windows (proc &optional minibuf all-frames) +(defun walk-windows (proc &optional minibuf all-frames) "Cycle through all visible windows, calling PROC for each one. PROC is called with a window as argument. @@ -605,6 +618,39 @@ Optional third argunemt ALL-FRAMES is ignored in this implementation." (not (eq walk-windows-current walk-windows-start)))) (select-window walk-windows-start)))) +(defun buffer-disable-undo (&optional buffer) + "Make BUFFER stop keeping undo information. +No argument or nil as argument means do this for the current buffer." + (buffer-flush-undo (or buffer (current-buffer)))) + + +;;; @@ Frame (Emacs 18 cannot make frame) +;;; +;; The following four are frequently used for manupulating the current frame. +;; frame.el has `screen-width', `screen-height', `set-screen-width' and +;; `set-screen-height' for backward compatibility and declare them as obsolete. +(defun frame-width (&optional frame) + "Return number of columns available for display on FRAME. +If FRAME is omitted, describe the currently selected frame." + (screen-width)) + +(defun frame-height (&optional frame) + "Return number of lines available for display on FRAME. +If FRAME is omitted, describe the currently selected frame." + (screen-height)) + +(defun set-frame-width (frame cols &optional pretend) + "Specify that the frame FRAME has COLS columns. +Optional third arg non-nil means that redisplay should use COLS columns +but that the idea of the actual width of the frame should not be changed." + (set-screen-width cols pretend)) + +(defun set-frame-height (frame lines &optional pretend) + "Specify that the frame FRAME has LINES lines. +Optional third arg non-nil means that redisplay should use LINES lines +but that the idea of the actual height of the frame should not be changed." + (set-screen-height lines pretend)) + ;;; @@ Environment variables. ;;; diff --git a/poe.el b/poe.el index 27f53ee..2b0e3d4 100644 --- a/poe.el +++ b/poe.el @@ -75,7 +75,6 @@ (or (fboundp 'si:require) (progn (fset 'si:require (symbol-function 'require)) - (put 'require 'defun-maybe t) (defun require (feature &optional filename noerror) "\ If feature FEATURE is not loaded, load it from FILENAME. @@ -90,7 +89,10 @@ Normally the return value is FEATURE." (condition-case nil (si:require feature filename) (file-error)) - (si:require feature filename))))))) + (si:require feature filename))) + ;; for `load-history'. + (setq current-load-list (cons 'require current-load-list)) + (put 'require 'defun-maybe t))))) ;; Emacs 19.29 and later: (plist-get PLIST PROP) ;; (defun-maybe plist-get (plist prop) @@ -710,7 +712,7 @@ that is `eq' to KEY, there is no way to remove it by side effect; therefore, write `(setq foo (remassq key foo))' to be sure of changing the value of `foo'." (if (setq key (assq key list)) - (delete key list) + (delq key list) list)) ;; XEmacs 19.13 and later: (remassoc KEY LIST) @@ -721,7 +723,18 @@ that is `equal' to KEY, there is no way to remove it by side effect; therefore, write `(setq foo (remassoc key foo))' to be sure of changing the value of `foo'." (if (setq key (assoc key list)) - (delete key list) + (delq key list) + list)) + +;; XEmacs 19.13 and later: (remrassq VALUE LIST) +(defun-maybe remrassq (value list) + "Delete by side effect any elements of LIST whose cdr is `eq' to VALUE. +The modified LIST is returned. If the first member of LIST has a car +that is `eq' to VALUE, there is no way to remove it by side effect; +therefore, write `(setq foo (remrassq value foo))' to be sure of changing +the value of `foo'." + (if (setq value (rassq value list)) + (delq value list) list)) ;; XEmacs 19.13 and later: (remrassoc VALUE LIST) @@ -732,7 +745,7 @@ that is `equal' to VALUE, there is no way to remove it by side effect; therefore, write `(setq foo (remrassoc value foo))' to be sure of changing the value of `foo'." (if (setq value (rassoc value list)) - (delete value list) + (delq value list) list)) ;;; Define `functionp' here because "localhook" uses it. @@ -836,6 +849,11 @@ This variable is meaningful on MS-DOG and Windows NT. On those systems, it is automatically local in every buffer. On other systems, this variable is normally always nil.") +;; Emacs 20.3 or later. +(defvar-maybe minor-mode-overriding-map-alist nil + "Alist of keymaps to use for minor modes, in current major mode. +APEL provides this as dummy for a compatibility.") + ;; Emacs 20.1/XEmacs 20.3(?) and later: (save-current-buffer &rest BODY) ;; ;; v20 defines `save-current-buffer' as a C primitive (in src/editfns.c) @@ -1257,13 +1275,13 @@ Not fully compatible especially when invalid format is specified." "") ;; the day of month, zero-padded ((eq cur-char ?d) - (substring time-string 8 10)) + (format "%02d" (string-to-int (substring time-string 8 10)))) ;; a synonym for `%m/%d/%y' ((eq cur-char ?D) - (format "%02d/%s/%s" + (format "%02d/%02d/%s" (cddr (assoc (substring time-string 4 7) format-time-month-list)) - (substring time-string 8 10) + (string-to-int (substring time-string 8 10)) (substring time-string -2))) ;; the day of month, blank-padded ((eq cur-char ?e) @@ -1544,6 +1562,19 @@ The extension, in a file name, is the part that follows the last `.'." filename)))) +;;; @ Miscellanea. + +;; Emacs 19.29 and later: (current-fill-column) +(defun-maybe current-fill-column () + "Return the fill-column to use for this line." + fill-column) + +;; Emacs 19.29 and later: (current-left-margin) +(defun-maybe current-left-margin () + "Return the left margin to use for this line." + left-margin) + + ;;; @ XEmacs emulation. ;;; diff --git a/poem-e20_3.el b/poem-e20_3.el index 9beb320..5a72faa 100644 --- a/poem-e20_3.el +++ b/poem-e20_3.el @@ -1,9 +1,9 @@ ;;; -*-byte-compile-dynamic: t;-*- ;;; poem-e20_3.el --- poem submodule for Emacs 20.3 -;; Copyright (C) 1998 Free Software Foundation, Inc. +;; Copyright (C) 1998,1999,2000 Free Software Foundation, Inc. -;; Author: MORIOKA Tomohiko +;; Author: MORIOKA Tomohiko ;; Keywords: emulation, compatibility, Mule ;; This file is part of APEL (A Portable Emacs Library). @@ -29,6 +29,8 @@ ;;; Code: +(require 'pym) + ;;; @ character ;;; diff --git a/product.el b/product.el index 6b7d389..70eae24 100644 --- a/product.el +++ b/product.el @@ -1,6 +1,6 @@ ;;; product.el --- Functions for product version information. -;; Copyright (C) 1999 Free Software Foundation, Inc. +;; Copyright (C) 1999,2000 Free Software Foundation, Inc. ;; Author: Shuhei KOBAYASHI ;; Keiichi Suzuki @@ -248,6 +248,19 @@ PRODUCT-DEF is a definition of the product." nil nil nil (, product-version-string))))) (, feature-def))))) +(defun product-version-as-string (product) + "Return version number of product as a string. +PRODUCT is a product structure which returned by `product-define'. +If optional argument UPDATE is non-nil, then regenerate +`produce-version-string' from `product-version'." + (setq product (product-find product)) + (or (product-version-string product) + (and (product-version product) + (product-set-version-string product + (mapconcat (function int-to-string) + (product-version product) + "."))))) + (defun product-string-1 (product &optional verbose) "Return information of product as a string of \"NAME/VERSION\". PRODUCT is a product structure which returned by `product-define'. @@ -255,20 +268,11 @@ If optional argument VERBOSE is non-nil, then return string of \"NAME/VERSION (CODE-NAME)\"." (setq product (product-find product)) (concat (product-name product) - (cond - ((product-version-string product) - (concat "/" (product-version-string product))) - ((product-version product) - (concat "/" - (product-set-version-string - product - (mapconcat (function int-to-string) - (product-version product) - ".")))) - ("")) - (if (and verbose (product-code-name product)) - (concat " (" (product-code-name product) ")") - ""))) + (let ((version-string (product-version-as-string product))) + (and version-string + (concat "/" version-string))) + (and verbose (product-code-name product) + (concat " (" (product-code-name product) ")")))) (defun product-for-each (product all function &rest args) "Apply a function to a product and the product's family with args. diff --git a/pym.el b/pym.el index 58348e7..faa9463 100644 --- a/pym.el +++ b/pym.el @@ -268,7 +268,7 @@ Both SYMBOL and SPEC are unevaluated. The SPEC can be 0, t, a symbol &rest (&rest sexp))) ;; edebug-spec for `static-*' macros are also defined here. -(def-edebug-spec static-if if) +(def-edebug-spec static-if t) (def-edebug-spec static-when when) (def-edebug-spec static-unless unless) (def-edebug-spec static-condition-case condition-case) diff --git a/static.el b/static.el index b64440d..a42d816 100644 --- a/static.el +++ b/static.el @@ -26,27 +26,27 @@ (put 'static-if 'lisp-indent-function 2) (defmacro static-if (cond then &rest else) - "`if' expression but COND is evaluated at compile-time." + "Like `if', but evaluate COND at compile time." (if (eval cond) then (` (progn (,@ else))))) (put 'static-when 'lisp-indent-function 1) (defmacro static-when (cond &rest body) - "`when' expression but COND is evaluated at compile-time." + "Like `when', but evaluate COND at compile time." (if (eval cond) (` (progn (,@ body))))) (put 'static-unless 'lisp-indent-function 1) (defmacro static-unless (cond &rest body) - "`unless' expression but COND is evaluated at compile-time." + "Like `unless', but evaluate COND at compile time." (if (eval cond) nil (` (progn (,@ body))))) (put 'static-condition-case 'lisp-indent-function 2) (defmacro static-condition-case (var bodyform &rest handlers) - "`condition-case' expression but BODYFORM is evaluated at compile-time." + "Like `condition-case', but evaluate BODYFORM at compile time." (eval (` (condition-case (, var) (list (quote quote) (, bodyform)) (,@ (mapcar @@ -64,15 +64,15 @@ (put 'static-defconst 'lisp-indent-function 'defun) (defmacro static-defconst (symbol initvalue &optional docstring) - "`defconst' expression but INITVALUE is evaluated at compile-time. + "Like `defconst', but evaluate INITVALUE at compile time. -The variable SYMBOL can be referenced at either compile-time or run-time." +The variable SYMBOL can be referred at both compile time and run time." (let ((value (eval initvalue))) (eval (` (defconst (, symbol) (quote (, value)) (, docstring)))) (` (defconst (, symbol) (quote (, value)) (, docstring))))) (defmacro static-cond (&rest clauses) - "`cond' expression but the car of each clause is evaluated at compile-time." + "Like `cond', but evaluate CONDITION part of each clause at compile time." (while (and clauses (not (eval (car (car clauses))))) (setq clauses (cdr clauses))) diff --git a/timezone.el b/timezone.el index 333bd90..8db1d85 100644 --- a/timezone.el +++ b/timezone.el @@ -288,8 +288,8 @@ Gregorian date Sunday, December 31, 1 BC." ;; (timezone-absolute-from-gregorian 1 1 1970) (days (- date current-time-origin)) (days-1 (/ days 65536)) - (days-2 (mod (/ days 256) 256)) - (days-3 (mod days 256)) + (days-2 (% (/ days 256) 256)) + (days-3 (% days 256)) ;; (seconds-per-day (float 86400)) (seconds-per-day-1 1) (seconds-per-day-2 81) @@ -300,25 +300,25 @@ Gregorian date Sunday, December 31, 1 BC." ;; (hibase (* hi current-time-arithmetic-base)) ;; (lo (floor (- seconds hibase))) (seconds-1 (/ seconds 65536)) - (seconds-2 (mod (/ seconds 256) 256)) - (seconds-3 (mod seconds 256)) + (seconds-2 (% (/ seconds 256) 256)) + (seconds-3 (% seconds 256)) hi lo r seconds-per-day*days-1 seconds-per-day*days-2 seconds-per-day*days-3) (setq r (* days-3 seconds-per-day-3) - seconds-per-day*days-3 (mod r 256)) + seconds-per-day*days-3 (% r 256)) (setq r (+ (/ r 256) (* days-2 seconds-per-day-3) (* days-3 seconds-per-day-2)) - seconds-per-day*days-2 (mod r 256)) + seconds-per-day*days-2 (% r 256)) (setq seconds-per-day*days-1 (+ (/ r 256) (* days-1 seconds-per-day-3) (* (/ days 256) seconds-per-day-2) (* days seconds-per-day-1))) (setq r (+ seconds-2 seconds-per-day*days-2) - seconds-2 (mod r 256) + seconds-2 (% r 256) seconds-1 (+ seconds-1 (/ r 256))) (setq lo (+ (* seconds-2 256) seconds-3 seconds-per-day*days-3))