+++ /dev/null
-;;; alist.el --- utility functions about assoc-list
-
-;; Copyright (C) 1993,1994,1995,1996 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version:
-;; $Id: alist.el,v 0.0 1997-02-28 02:18:23 tmorioka Exp $
-;; Keywords: alist
-
-;; This file is part of SEMI (SEMI is Emacs MIME Interfaces).
-
-;; 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.
-
-;;; Code:
-
-(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
- (progn
- (setcdr pair value)
- alist)
- (cons (cons item value) alist)
- )))
-
-(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 set-alist (symbol item value)
- "Modify a alist indicated by SYMBOL to set VALUE to ITEM."
- (or (boundp symbol)
- (set symbol nil)
- )
- (set symbol (put-alist item value (symbol-value symbol)))
- )
-
-(defun remove-alist (symbol item)
- "Remove ITEM from the alist indicated by SYMBOL."
- (and (boundp symbol)
- (set symbol (del-alist item (symbol-value symbol)))
- ))
-
-(defun modify-alist (modifier default)
- "Modify alist DEFAULT into alist MODIFIER."
- (mapcar (function
- (lambda (as)
- (setq default (put-alist (car as)(cdr as) default))
- ))
- modifier)
- default)
-
-(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)))
- )
-
-
-;;; @ end
-;;;
-
-(provide 'alist)
-
-;;; alist.el ends here
-;;; emu-18.el --- EMACS 19.* emulation module for EMACS 18.*
+;;; emu-18.el --- emu API implementation for Emacs 18.*
;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu-18.el,v 7.27 1996/10/24 07:56:18 morioka Exp $
+;; Version: $Id: emu-18.el,v 7.29 1996/11/28 18:18:19 morioka Exp $
;; Keywords: emulation, compatibility
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
-;;;
-;;; emu-19.el --- emu module for FSF original Emacs 19.*
-;;;
-;;; Copyright (C) 1995 Free Software Foundation, Inc.
-;;; Copyright (C) 1995,1996 MORIOKA Tomohiko
-;;;
-;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;;; Version:
-;;; $Id: emu-19.el,v 7.8 1996/07/22 18:52:53 morioka Exp $
-;;; Keywords: emulation, compatibility
-;;;
-;;; This file is part of tl (Tiny 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. If not, write to the Free Software
-;;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-;;;
+;;; emu-19.el --- emu API implementation for Emacs 19.*
+
+;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+
+;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Version: $Id: emu-19.el,v 7.10 1996/11/28 18:17:45 morioka Exp $
+;; Keywords: emulation, compatibility
+
+;; This file is part of emu.
+
+;; 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.
+
;;; Code:
;;; @ text property
;;; emu-e19.el --- emu module for Emacs 19 and XEmacs 19
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu-e19.el,v 7.40 1996/10/01 13:28:03 morioka Exp $
+;; Version: $Id: emu-e19.el,v 7.43 1997/01/29 14:58:00 morioka Exp $
;; Keywords: emulation, compatibility, mule, Latin-1
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;;;
(defconst charset-ascii 0 "Character set of ASCII")
-(defconst charset-latin-1 129 "Character set of ISO-8859-1")
+(defconst charset-latin-iso8859-1 129 "Character set of ISO-8859-1")
(defun charset-description (charset)
"Return description of CHARSET. [emu-e19.el]"
(if (< charset 128)
(documentation-property 'charset-ascii 'variable-documentation)
- (documentation-property 'charset-latin-1 'variable-documentation)
+ (documentation-property 'charset-latin-iso8859-1 'variable-documentation)
))
(defun charset-registry (charset)
"Return a list of charsets in the string.
\[emu-e19.el; Mule emulating function]"
(if (string-match "[\200-\377]" str)
- (list lc-ltn1)
+ (list charset-latin-iso8859-1)
))
(defalias 'find-non-ascii-charset-string 'find-charset-string)
(goto-char start)
(re-search-forward "[\200-\377]" nil t)
))
- (list lc-ltn1)
+ (list charset-latin-iso8859-1)
))
(defalias 'find-non-ascii-charset-region 'find-charset-region)
-;;; @@ for old MULE emulation
-;;;
-
-(defconst lc-ascii 0)
-(defconst lc-ltn1 129)
-
;;; @ coding-system
;;;
(,@ body)
)))
+(defmacro as-binary-output-file (&rest body)
+ (` (let ((emx-binary-mode t)) ; Stop CRLF to LF conversion in OS/2
+ (,@ body)
+ )))
+
;;; @@ for old MULE emulation
;;;
\[emu-e19.el; XEmacs 20 emulating function]"
(if (< chr 128)
charset-ascii
- charset-latin-1))
+ charset-latin-iso8859-1))
(defun char-bytes (char)
"Return number of bytes a character in CHAR occupies in a buffer.
-;;; emu-e20.el --- emu API implementation for Emacs/mule (delta)
+;;; emu-e20.el --- emu API implementation for Emacs/mule (19.34.91-delta)
-;; Copyright (C) 1996 Free Software Foundation, Inc.
+;; Copyright (C) 1996,1997 Free Software Foundation, Inc.
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu-e20.el,v 5.0 1996/10/23 06:37:13 morioka Exp $
+;; Version: $Id: emu-e20.el,v 7.11 1997/01/29 15:00:58 morioka Exp $
;; Keywords: emulation, compatibility, Mule
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
(require 'emu-19)
-(defun fontset-height (fontset)
+(defun fontset-pixel-size (fontset)
(let* ((info (fontset-info fontset))
(height (aref info 1))
)
- (if (> height 0)
- height
- (let ((str
- (car (aref (aref info 2) 0))
- ))
- (if (string-match "--\\([0-9]+\\)-\\*-\\*-\\*-\\*-\\*-ISO8859-1" str)
- (string-to-number
- (substring str (match-beginning 1)(match-end 1))
- )
- 0)))))
+ (cond ((> height 0) height)
+ ((string-match "-\\([0-9]+\\)-" fontset)
+ (string-to-number
+ (substring fontset (match-beginning 1)(match-end 1))
+ )
+ )
+ (t 0)
+ )))
;;; @ character set
;;;
-(defalias 'charset-columns 'charset-width)
-
-(defun charset-iso-class (charset)
- "Return ISO-class of CHARSET.
-\(0/CLASS94, 1/CLASS96, 2/CLASS94x94, 3/CLASS96x96) [emu-e20.el]"
- (aref (charset-info charset) 5)
- )
+;; (defalias 'charset-columns 'charset-width)
(defun find-non-ascii-charset-string (string)
"Return a list of charsets in the STRING except ascii.
\[emu-e20.el; Mule emulating function]"
- (delq charset-ascii (find-charset-string string))
+ (delq 'ascii (find-charset-string string))
)
(defun find-non-ascii-charset-region (start end)
"Return a list of charsets except ascii
in the region between START and END.
\[emu-e20.el; Mule emulating function]"
- (delq charset-ascii (find-charset-string (buffer-substring start end)))
+ (delq 'ascii (find-charset-string (buffer-substring start end)))
)
(defmacro as-binary-process (&rest body)
`(let (selective-display ; Disable ^M to nl translation.
;; for Emacs/mule
- (default-process-coding-system 'no-conversion)
+ (coding-system-for-read 'no-conversion)
+ (coding-system-for-write 'no-conversion)
)
,@ body))
`(let ((coding-system-for-read 'no-conversion))
,@body))
+(defmacro as-binary-output-file (&rest body)
+ `(let ((coding-system-for-write 'no-conversion))
+ ,@body))
+
(defalias 'set-process-input-coding-system 'set-process-coding-system)
;;;
(defvar charsets-mime-charset-alist
- (list
- (cons (list charset-ascii) 'us-ascii)
- (cons (list charset-ascii charset-latin-iso8859-1) 'iso-8859-1)
- (cons (list charset-ascii charset-latin-iso8859-2) 'iso-8859-2)
- (cons (list charset-ascii charset-latin-iso8859-3) 'iso-8859-3)
- (cons (list charset-ascii charset-latin-iso8859-4) 'iso-8859-4)
-;;;(cons (list charset-ascii
-;;; charset-cyrillic-iso8859-5) 'iso-8859-5)
- (cons (list charset-ascii
- charset-cyrillic-iso8859-5) 'koi8-r)
- (cons (list charset-ascii charset-arabic-iso8859-6) 'iso-8859-6)
- (cons (list charset-ascii charset-greek-iso8859-7) 'iso-8859-7)
- (cons (list charset-ascii charset-hebrew-iso8859-8) 'iso-8859-8)
- (cons (list charset-ascii charset-latin-iso8859-9) 'iso-8859-9)
- (cons (list charset-ascii
- charset-latin-jisx0201
- charset-japanese-jisx0208-1978
- charset-japanese-jisx0208) 'iso-2022-jp)
- (cons (list charset-ascii charset-korean-ksc5601) 'euc-kr)
- (cons (list charset-ascii charset-chinese-gb2312) 'cn-gb-2312)
- (cons (list charset-ascii
- charset-chinese-big5-1
- charset-chinese-big5-2) 'cn-big5)
- (cons (list charset-ascii charset-latin-iso8859-1
- charset-greek-iso8859-7
- charset-latin-jisx0201
- charset-japanese-jisx0208-1978
- charset-chinese-gb2312
- charset-japanese-jisx0208
- charset-korean-ksc5601
- charset-japanese-jisx0212) 'iso-2022-jp-2)
- (cons (list charset-ascii charset-latin-iso8859-1
- charset-greek-iso8859-7
- charset-latin-jisx0201
- charset-japanese-jisx0208-1978
- charset-chinese-gb2312
- charset-japanese-jisx0208
- charset-korean-ksc5601
- charset-japanese-jisx0212
- charset-chinese-cns11643-1
- charset-chinese-cns11643-2) 'iso-2022-int-1)
- (cons (list charset-ascii charset-latin-iso8859-1
- charset-latin-iso8859-2
- charset-cyrillic-iso8859-5
- charset-greek-iso8859-7
- charset-latin-jisx0201
- charset-japanese-jisx0208-1978
- charset-chinese-gb2312
- charset-japanese-jisx0208
- charset-korean-ksc5601
- charset-japanese-jisx0212
- charset-chinese-cns11643-1
- charset-chinese-cns11643-2
- charset-chinese-cns11643-3
- charset-chinese-cns11643-4
- charset-chinese-cns11643-5
- charset-chinese-cns11643-6
- charset-chinese-cns11643-7) 'iso-2022-int-1)
- ))
+ '(((ascii) . us-ascii)
+ ((ascii latin-iso8859-1) . iso-8859-1)
+ ((ascii latin-iso8859-2) . iso-8859-2)
+ ((ascii latin-iso8859-3) . iso-8859-3)
+ ((ascii latin-iso8859-4) . iso-8859-4)
+;;; ((ascii cyrillic-iso8859-5) . iso-8859-5)
+ ((ascii cyrillic-iso8859-5) . koi8-r)
+ ((ascii arabic-iso8859-6) . iso-8859-6)
+ ((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 korean-ksc5601) . euc-kr)
+ ((ascii chinese-gb2312) . cn-gb-2312)
+ ((ascii chinese-big5-1 chinese-big5-2) . cn-big5)
+ ((ascii latin-iso8859-1 greek-iso8859-7
+ latin-jisx0201 japanese-jisx0208-1978
+ chinese-gb2312 japanese-jisx0208
+ korean-ksc5601 japanese-jisx0212) . iso-2022-jp-2)
+ ((ascii latin-iso8859-1 greek-iso8859-7
+ latin-jisx0201 japanese-jisx0208-1978
+ chinese-gb2312 japanese-jisx0208
+ korean-ksc5601 japanese-jisx0212
+ chinese-cns11643-1 chinese-cns11643-2) . iso-2022-int-1)
+ ((ascii latin-iso8859-1 latin-iso8859-2
+ cyrillic-iso8859-5 greek-iso8859-7
+ latin-jisx0201 japanese-jisx0208-1978
+ chinese-gb2312 japanese-jisx0208
+ korean-ksc5601 japanese-jisx0212
+ chinese-cns11643-1 chinese-cns11643-2
+ chinese-cns11643-3 chinese-cns11643-4
+ chinese-cns11643-5 chinese-cns11643-6
+ chinese-cns11643-7) . iso-2022-int-1)
+ ))
(defvar default-mime-charset 'x-ctext)
(defvar mime-charset-coding-system-alist
- '((x-ctext . coding-system-ctext)
- (hz-gb-2312 . coding-system-hz)
- (cn-gb-2312 . coding-system-euc-china)
- (gb2312 . coding-system-euc-china)
- (cn-big5 . coding-system-big5)
- (iso-2022-jp-2 . coding-system-iso-2022-ss2-7)
- (iso-2022-int-1 . coding-system-iso-2022-int)
- (shift_jis . coding-system-sjis)
+ '((x-ctext . ctext)
+ (gb2312 . cn-gb-2312)
+ (iso-2022-jp-2 . iso-2022-ss2-7)
+ (iso-2022-int-1 . iso-2022-int)
+ (shift_jis . sjis)
))
(defun mime-charset-to-coding-system (charset &optional lbt)
)
(let ((cs
(or (cdr (assq charset mime-charset-coding-system-alist))
- (let ((cs (intern (concat "coding-system-"
- (symbol-name charset)))))
- (and (coding-system-p cs) cs)
- ))))
+ (and (coding-system-p charset) charset)
+ )))
(if lbt
(intern (concat (symbol-name cs) "-" (symbol-name lbt)))
cs)))
(defalias 'string-columns 'string-width)
-(defalias 'sset 'string-embed-string)
+(defalias 'sset 'store-substring)
(defun string-to-char-list (string)
"Return a list of which elements are characters in the STRING.
(defalias 'string-to-int-list 'string-to-char-list)
-;;; @ regulation
-;;;
-
-(defun regulate-latin-char (chr)
- (cond ((and (<= ?\e$B#A\e(B chr)(<= chr ?\e$B#Z\e(B))
- (+ (- chr ?\e$B#A\e(B) ?A)
- )
- ((and (<= ?\e$B#a\e(B chr)(<= chr ?\e$B#z\e(B))
- (+ (- chr ?\e$B#a\e(B) ?a)
- )
- ((eq chr ?\e$B!%\e(B) ?.)
- ((eq chr ?\e$B!$\e(B) ?,)
- (t chr)
- ))
-
-(defun regulate-latin-string (str)
- (let ((len (length str))
- (i 0)
- chr (dest ""))
- (while (< i len)
- (setq chr (sref str i))
- (setq dest (concat dest
- (char-to-string (regulate-latin-char chr))))
- (setq i (+ i (char-bytes chr)))
- )
- dest))
-
-
;;; @ end
;;;
;;; emu-mule.el --- emu module for Mule 1.* and Mule 2.*
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997 MORIOKA Tomohiko
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu-mule.el,v 7.58 1996/10/20 00:13:58 morioka Exp $
+;; Version: $Id: emu-mule.el,v 7.60 1997/01/29 15:48:26 morioka Exp $
;; Keywords: emulation, compatibility, Mule
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
(,@ body)
)))
+(defmacro as-binary-output-file (&rest body)
+ (` (let (mc-flag
+ (file-coding-system *noconv*)
+ )
+ (,@ body)
+ )))
+
(defalias 'set-process-input-coding-system 'set-process-coding-system)
-;;; emu-nemacs.el --- Mule 2 emulation module for NEmacs
+;;; emu-nemacs.el --- emu API implementation for NEmacs
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997 MORIOKA Tomohiko
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu-nemacs.el,v 7.49 1996/10/01 13:26:34 morioka Exp $
+;; Version: $Id: emu-nemacs.el,v 7.50 1997/01/29 14:49:46 morioka Exp $
;; Keywords: emulation, compatibility, NEmacs, mule
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
(,@ body)
)))
+(defmacro as-binary-output-file (&rest body)
+ (` (let (kanji-flag)
+ (,@ body)
+ )))
+
;;; @@ for old MULE emulation
;;;
;;; emu-x20.el --- emu API implementation for XEmacs 20 with mule
-;; Copyright (C) 1995 Free Software Foundation, Inc.
-;; Copyright (C) 1994,1995,1996 MORIOKA Tomohiko
+;; Copyright (C) 1994,1995,1996,1997 MORIOKA Tomohiko
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu-x20.el,v 7.40 1996/10/19 14:35:37 morioka Exp $
+;; Version: $Id: emu-x20.el,v 7.46 1997/01/29 15:02:16 morioka Exp $
;; Keywords: emulation, compatibility, Mule, XEmacs
-;; This file is part of tl (Tiny Library).
+;; This file is part of XEmacs.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
)))
-;;; @ character set
-;;;
-
-(defalias 'charset-description 'charset-doc-string)
-
-(defalias 'find-charset-string 'charsets-in-string)
-(defalias 'find-charset-region 'charsets-in-region)
-
-(defun find-non-ascii-charset-string (string)
- "Return a list of charsets in the STRING except ascii.
-\[emu-x20.el; Mule emulating function]"
- (delq 'ascii (charsets-in-string string))
- )
-
-(defun find-non-ascii-charset-region (start end)
- "Return a list of charsets except ascii
-in the region between START and END.
-\[emu-x20.el; Mule emulating function]"
- (delq 'ascii (charsets-in-region start end))
- )
-
-;;; @@ for Mule emulation
-;;;
-
-(defconst lc-ascii 'ascii)
-(defconst lc-ltn1 'latin-1)
-(defconst lc-ltn2 'latin-2)
-(defconst lc-ltn3 'latin-3)
-(defconst lc-ltn4 'latin-4)
-(defconst lc-crl 'cyrillic)
-(defconst lc-arb 'arabic)
-(defconst lc-grk 'greek)
-(defconst lc-hbw 'hebrew)
-(defconst lc-ltn5 'latin-5)
-(defconst lc-jp 'japanese)
-(defconst lc-jp2 'japanese-2)
-(defconst lc-kr 'korean)
-(defconst lc-big5-1 'chinese-big5-1)
-(defconst lc-big5-2 'chinese-big5-2)
-(defconst lc-cn 'chinese-gb)
-(defconst lc-cns1 'chinese-cns-1)
-(defconst lc-cns2 'chinese-cns-2)
-(defconst lc-cns3 'chinese-cns-3)
-(defconst lc-cns4 'chinese-cns-4)
-(defconst lc-cns5 'chinese-cns-5)
-(defconst lc-cns6 'chinese-cns-6)
-(defconst lc-cns7 'chinese-cns-7)
-
-
;;; @ coding-system
;;;
-(defconst *noconv* 'noconv)
+(defconst *noconv* 'no-conversion)
(defconst *ctext* 'ctext)
(defconst *hz* 'hz)
(defconst *big5* 'big5)
,@body))
(defmacro as-binary-input-file (&rest body)
- `(let ((file-coding-system-for-read 'noconv))
+ `(let ((file-coding-system-for-read 'no-conversion))
+ ,@body))
+
+(defmacro as-binary-output-file (&rest body)
+ `(let ((file-coding-system 'no-conversion))
,@body))
(defvar charsets-mime-charset-alist
'(((ascii) . us-ascii)
- ((ascii latin-1) . iso-8859-1)
- ((ascii latin-2) . iso-8859-2)
- ((ascii latin-3) . iso-8859-3)
- ((ascii latin-4) . iso-8859-4)
-;;; ((ascii cyrillic) . iso-8859-5)
- ((ascii cyrillic) . koi8-r)
- ((ascii arabic) . iso-8859-6)
- ((ascii greek) . iso-8859-7)
- ((ascii hebrew) . iso-8859-8)
- ((ascii latin-5) . iso-8859-9)
- ((ascii japanese-old japanese) . iso-2022-jp)
- ((ascii korean) . euc-kr)
- ((ascii chinese-big5-1 chinese-big5-2) . big5)
- ((ascii japanese-old chinese-gb japanese korean
- japanese-2 latin-1 greek) . iso-2022-jp-2)
- ((ascii japanese-old chinese-gb japanese korean
- japanese-2 chinese-cns-1 chinese-cns-2
- latin-1 greek) . iso-2022-int-1)
+ ((ascii latin-iso8859-1) . iso-8859-1)
+ ((ascii latin-iso8859-2) . iso-8859-2)
+ ((ascii latin-iso8859-3) . iso-8859-3)
+ ((ascii latin-iso8859-4) . iso-8859-4)
+;;; ((ascii cyrillic-iso8859-5) . iso-8859-5)
+ ((ascii cyrillic-iso8859-5) . koi8-r)
+ ((ascii arabic-iso8859-6) . iso-8859-6)
+ ((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 korean-ksc5601) . euc-kr)
+ ((ascii chinese-gb2312) . cn-gb-2312)
+ ((ascii chinese-big5-1 chinese-big5-2) . cn-big5)
+ ((ascii latin-iso8859-1 greek-iso8859-7
+ latin-jisx0201 japanese-jisx0208-1978
+ chinese-gb2312 japanese-jisx0208
+ korean-ksc5601 japanese-jisx0212) . iso-2022-jp-2)
+ ((ascii latin-iso8859-1 greek-iso8859-7
+ latin-jisx0201 japanese-jisx0208-1978
+ chinese-gb2312 japanese-jisx0208
+ korean-ksc5601 japanese-jisx0212
+ chinese-cns11643-1 chinese-cns11643-2) . iso-2022-int-1)
+ ((ascii latin-iso8859-1 latin-iso8859-2
+ cyrillic-iso8859-5 greek-iso8859-7
+ latin-jisx0201 japanese-jisx0208-1978
+ chinese-gb2312 japanese-jisx0208
+ korean-ksc5601 japanese-jisx0212
+ chinese-cns11643-1 chinese-cns11643-2
+ chinese-cns11643-3 chinese-cns11643-4
+ chinese-cns11643-5 chinese-cns11643-6
+ chinese-cns11643-7) . iso-2022-int-1)
))
-(defvar default-mime-charset 'iso-2022-int-1)
+(defvar default-mime-charset 'x-ctext)
(defvar mime-charset-coding-system-alist
- '((iso-8859-1 . ctext)
- (gb2312 . euc-china)
- (koi8-r . koi8)
- (iso-2022-jp-2 . iso-2022-ss2-7)
- (x-iso-2022-jp-2 . iso-2022-ss2-7)
- (shift_jis . sjis)
- (x-shiftjis . sjis)
+ '((iso-8859-1 . ctext)
+ (x-ctext . ctext)
+ (hz-gb-2312 . hz)
+ (cn-gb-2312 . euc-china)
+ (gb2312 . euc-china)
+ (cn-big5 . big5)
+ (koi8-r . koi8)
+ (iso-2022-jp-2 . iso-2022-ss2-7)
))
(defun mime-charset-to-coding-system (charset)
;;; @ character
;;;
-(defun char-bytes (chr) 1)
+;; (defun char-bytes (chr) 1)
-(defun char-length (character)
- "Return number of elements a CHARACTER occupies in a string or buffer.
-\[emu-x20.el]"
- 1)
+;; (defun char-length (character)
+;; "Return number of elements a CHARACTER occupies in a string or buffer.
+;; \[emu-x20.el]"
+;; 1)
-(defun char-columns (character)
- "Return number of columns a CHARACTER occupies when displayed.
-\[emu-x20.el]"
- (charset-columns (char-charset character))
- )
+;; (defun char-columns (character)
+;; "Return number of columns a CHARACTER occupies when displayed.
+;; \[emu-x20.el]"
+;; (charset-columns (char-charset character))
+;; )
;;; @@ Mule emulating aliases
;;;
;;; You should not use them.
-(defalias 'char-width 'char-columns)
+;;(defalias 'char-width 'char-columns)
(defalias 'char-leading-char 'char-charset)
;;; @ string
;;;
-(defun string-columns (string)
- "Return number of columns STRING occupies when displayed.
-\[emu-x20.el]"
- (let ((col 0)
- (len (length string))
- (i 0))
- (while (< i len)
- (setq col (+ col (char-columns (aref string i))))
- (setq i (1+ i))
- )
- col))
+;; (defun string-columns (string)
+;; "Return number of columns STRING occupies when displayed.
+;; \[emu-x20.el]"
+;; (let ((col 0)
+;; (len (length string))
+;; (i 0))
+;; (while (< i len)
+;; (setq col (+ col (char-columns (aref string i))))
+;; (setq i (1+ i))
+;; )
+;; col))
-(defalias 'string-width 'string-columns)
+;;(defalias 'string-width 'string-columns)
(defun string-to-int-list (str)
(mapcar #'char-int str)
)
-(defalias 'sref 'aref)
+;;(defalias 'sref 'aref)
-(defun truncate-string (str width &optional start-column)
- "Truncate STR to fit in WIDTH columns.
-Optional non-nil arg START-COLUMN specifies the starting column.
-\[emu-x20.el; Mule 2.3 emulating function]"
- (or start-column
- (setq start-column 0))
- (substring str start-column width)
- )
+;; (defun truncate-string (str width &optional start-column)
+;; "Truncate STR to fit in WIDTH columns.
+;; Optional non-nil arg START-COLUMN specifies the starting column.
+;; \[emu-x20.el; Mule 2.3 emulating function]"
+;; (or start-column
+;; (setq start-column 0))
+;; (substring str start-column width)
+;; )
;;; @ end
-;;; emu-xemacs.el --- Emacs 19 emulation module for XEmacs
+;;; emu-xemacs.el --- emu API implementation for XEmacs
;; Copyright (C) 1995 Free Software Foundation, Inc.
;; Copyright (C) 1995,1996 MORIOKA Tomohiko
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Version:
-;; $Id: emu-xemacs.el,v 7.10 1996/08/30 15:14:30 morioka Exp $
+;; $Id: emu-xemacs.el,v 7.14 1996/11/28 18:18:49 morioka Exp $
;; Keywords: emulation, compatibility, XEmacs
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; 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.
+;; along with XEmacs; see the file COPYING. If not, write to the Free
+;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+;; 02111-1307, USA.
;;; Code:
`(mapconcat #'char-to-string ,char-list ""))
+;;; @@ to avoid bug of XEmacs 19.14
+;;;
+
+(or (string-match "^../"
+ (file-relative-name "/usr/local/share" "/usr/local/lib"))
+ ;; 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). [emu-xemacs.el]"
+ (setq filename (expand-file-name filename)
+ directory (file-name-as-directory
+ (expand-file-name
+ (or directory default-directory))))
+ (let ((ancestor ""))
+ (while (not (string-match (concat "^" (regexp-quote directory))
+ filename))
+ (setq directory (file-name-directory (substring directory 0 -1))
+ ancestor (concat "../" ancestor)))
+ (concat ancestor (substring filename (match-end 0)))
+ ))
+ )
+
+
;;; @ end
;;;
;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: emu.el,v 7.34 1996/09/23 17:42:26 morioka Exp $
-;; Keywords: emulation, compatibility, NEmacs, MULE, XEmacs
+;; Version: $Id: emu.el,v 7.37 1996/11/29 21:22:25 shuhei-k Exp $
+;; Keywords: emulation, compatibility, NEmacs, MULE, Emacs/mule, XEmacs
-;; This file is part of tl (Tiny Library).
+;; This file is part of emu.
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;;; Code:
+(defmacro defun-maybe (name &rest everything-else)
+ (or (and (fboundp name)
+ (not (get name 'defun-maybe))
+ )
+ (` (or (fboundp (quote (, name)))
+ (progn
+ (defun (, name) (,@ everything-else))
+ (put (quote (, name)) 'defun-maybe t)
+ ))
+ )))
+
+(put 'defun-maybe 'lisp-indent-function 'defun)
+
+
(or (boundp 'emacs-major-version)
(defconst emacs-major-version (string-to-int emacs-version)))
(or (boundp 'emacs-minor-version)
(defvar path-separator ":"
"Character used to separate concatenated paths.")
-(or (fboundp 'buffer-substring-no-properties)
- (defun buffer-substring-no-properties (beg end)
- "Return the text from BEG to END, without text properties, as a string.
+(defun-maybe buffer-substring-no-properties (beg end)
+ "Return the text from BEG to END, without text properties, as a string.
\[emu.el; EMACS 19.29 emulating function]"
- (let ((string (buffer-substring beg end)))
- (tl:set-text-properties 0 (length string) nil string)
- string))
- )
+ (let ((string (buffer-substring beg end)))
+ (tl:set-text-properties 0 (length string) nil string)
+ string))
+
+(defun-maybe match-string (num &optional string)
+ "Return string of text matched by last search.
+NUM specifies which parenthesized expression in the last regexp.
+ Value is nil if NUMth pair didn't match, or there were less than NUM pairs.
+Zero means the entire text matched by the whole regexp or whole string.
+STRING should be given if the last search was by `string-match' on STRING.
+\[emu.el; EMACS 19.29 emulating function]"
+ (if (match-beginning num)
+ (if string
+ (substring string (match-beginning num) (match-end num))
+ (buffer-substring (match-beginning num) (match-end num)))))
(or running-emacs-19_29-or-later
running-xemacs
)
))
-(or (fboundp 'add-to-list)
- ;; This function was imported Emacs 19.30.
- (defun add-to-list (list-var element)
- "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
+;; This function was imported Emacs 19.30.
+(defun-maybe add-to-list (list-var element)
+ "Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
If you want to use `add-to-list' on a variable that is not defined
until a certain package is loaded, you should put the call to `add-to-list'
into a hook function that will be run only after loading the package.
\[emu.el; EMACS 19.30 emulating function]"
- (or (member element (symbol-value list-var))
- (set list-var (cons element (symbol-value list-var)))))
- )
+ (or (member element (symbol-value list-var))
+ (set list-var (cons element (symbol-value list-var)))
+ ))
;;; @ EMACS 19.30 emulation
;;; @ EMACS 19.31 emulation
;;;
-(or (fboundp 'buffer-live-p)
- (defun buffer-live-p (object)
- "Return non-nil if OBJECT is a buffer which has not been killed.
+(defun-maybe buffer-live-p (object)
+ "Return non-nil if OBJECT is a buffer which has not been killed.
Value is nil if OBJECT is not a buffer or if it has been killed.
\[emu.el; EMACS 19.31 emulating function]"
- (and object
- (get-buffer object)
- (buffer-name (get-buffer object))
- ))
- )
+ (and object
+ (get-buffer object)
+ (buffer-name (get-buffer object))
+ ))
(or (fboundp 'save-selected-window)
;; This function was imported Emacs 19.33.
;;; @ XEmacs emulation
;;;
-(or (fboundp 'functionp)
- (defun functionp (obj)
- "Returns t if OBJ is a function, nil otherwise.
+(defun-maybe functionp (obj)
+ "Returns t if OBJ is a function, nil otherwise.
\[emu.el; XEmacs emulating function]"
- (or (subrp obj)
- (byte-code-function-p obj)
- (and (symbolp obj)(fboundp obj))
- (and (consp obj)(eq (car obj) 'lambda))
- ))
- )
-
+ (or (subrp obj)
+ (byte-code-function-p obj)
+ (and (symbolp obj)(fboundp obj))
+ (and (consp obj)(eq (car obj) 'lambda))
+ ))
+
;;; @ for XEmacs 20
;;;
+++ /dev/null
-;;; mule-caesar.el --- ROT 13-47 Caesar rotation utility
-
-;; Copyright (C) 1997 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Version: $Id: mule-caesar.el,v 1.3 1997-05-09 02:47:55 morioka Exp $
-;; Keywords: ROT 13-47, caesar, mail, news, text/x-rot13-47
-
-;; 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.
-
-;;; Code:
-
-(defun char-to-octet-list (character)
- "Return list of octets in code table of graphic character set."
- (let* ((code (char-int character))
- (dim (charset-dimension (char-charset code)))
- dest)
- (while (> dim 0)
- (setq dest (cons (logand code 127) dest)
- dim (1- dim)
- code (lsh code -7))
- )
- dest))
-
-(defun mule-caesar-region (start end &optional stride-ascii)
- "Caesar rotation of current region.
-Optional argument STRIDE-ASCII is rotation-size for Latin alphabet
-\(A-Z and a-z). For non-ASCII text, ROT-N/2 will be performed in any
-case (N=charset-chars; 94 for 94 or 94x94 graphic character set; 96
-for 96 or 96x96 graphic character set)."
- (interactive "r\nP")
- (setq stride-ascii (if stride-ascii
- (mod stride-ascii 26)
- 13))
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char start)
- (while (< (point)(point-max))
- (let* ((chr (char-after (point)))
- (charset (char-charset chr))
- )
- (if (eq charset 'ascii)
- (cond ((and (<= ?A chr) (<= chr ?Z))
- (setq chr (+ chr stride-ascii))
- (if (> chr ?Z)
- (setq chr (- chr 26))
- )
- (delete-char 1)
- (insert chr)
- )
- ((and (<= ?a chr) (<= chr ?z))
- (setq chr (+ chr stride-ascii))
- (if (> chr ?z)
- (setq chr (- chr 26))
- )
- (delete-char 1)
- (insert chr)
- )
- (t
- (forward-char)
- ))
- (let* ((stride (lsh (charset-chars charset) -1))
- (ret (mapcar (function
- (lambda (octet)
- (if (< octet 80)
- (+ octet stride)
- (- octet stride)
- )))
- (char-to-octet-list chr))))
- (delete-char 1)
- (insert (make-char (char-charset chr)
- (car ret)(car (cdr ret))))
- )))))))
-
-
-(provide 'mule-caesar)
-
-;;; mule-caesar.el ends here
-;;;
;;; richtext.el -- read and save files in text/richtext format
-;;;
-;;; Copyright (C) 1995 Free Software Foundation, Inc.
-;;; Copyright (C) 1995 MORIOKA Tomohiko
-;;;
-;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;;; Created: 1995/7/15
-;;; Version:
-;;; $Id: richtext.el,v 3.0 1995/11/22 11:36:06 morioka Exp $
-;;; Keywords: wp, faces, MIME, multimedia
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs 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.
-;;;
-;;; GNU Emacs 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, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
+
+;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Created: 1995/7/15
+;; Version: $Id: richtext.el,v 3.5 1997/01/30 16:55:00 morioka Exp $
+;; Keywords: wp, faces, MIME, multimedia
+
+;; This file is not part of GNU Emacs yet.
+
+;; 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.
+
+;;; Code:
(require 'enriched)
(narrow-to-region from to)
(goto-char from)
(let ((file-width (enriched-get-file-width))
- (use-hard-newlines t) pc nc)
+ (use-hard-newlines t))
(enriched-remove-header)
(goto-char from)
'richtext-next-annotation)
;; Fill paragraphs
- (if (or (and file-width ; possible reasons not to fill:
- (= file-width (enriched-text-width))) ; correct wd.
- (null enriched-fill-after-visiting) ; never fill
- (and (eq 'ask enriched-fill-after-visiting) ; asked & declined
- (not (y-or-n-p "Re-fill for current display width? "))))
+ (if (and file-width ; possible reasons not to fill:
+ (= file-width (enriched-text-width))) ; correct wd.
;; Minimally, we have to insert indentation and justification.
(enriched-insert-indentation)
(if enriched-verbose (message "Filling paragraphs..."))
;;;
(provide 'richtext)
+
+;;; richtext.el ends here
+++ /dev/null
-;;; std11-parse.el --- STD 11 parser for GNU Emacs
-
-;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: mail, news, RFC 822, STD 11
-;; Version:
-;; $Id: std11-parse.el,v 0.15 1996-11-28 19:38:27 morioka Exp $
-
-;; This file is part of MU (Message Utilities).
-
-;; 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.
-
-;;; Code:
-
-(require 'std11)
-(require 'emu)
-
-
-;;; @ lexical analyze
-;;;
-
-(defconst std11-space-chars " \t\n")
-(defconst std11-spaces-regexp (concat "[" std11-space-chars "]+"))
-(defconst std11-special-chars "][()<>@,;:\\<>.\"")
-(defconst std11-atom-regexp
- (concat "^[^" std11-special-chars std11-space-chars "]+"))
-
-(defun std11-analyze-spaces (string)
- (if (and (string-match std11-spaces-regexp string)
- (= (match-beginning 0) 0))
- (let ((end (match-end 0)))
- (cons (cons 'spaces (substring string 0 end))
- (substring string end)
- ))))
-
-(defun std11-analyze-special (str)
- (if (and (> (length str) 0)
- (find (aref str 0) std11-special-chars)
- )
- (cons (cons 'specials (substring str 0 1))
- (substring str 1)
- )))
-
-(defun std11-analyze-atom (str)
- (if (string-match std11-atom-regexp str)
- (let ((end (match-end 0)))
- (cons (cons 'atom (substring str 0 end))
- (substring str end)
- ))))
-
-(defun std11-check-enclosure (str open close &optional recursive from)
- (let ((len (length str))
- (i (or from 0))
- )
- (if (and (> len i)
- (eq (aref str i) open))
- (let (p chr)
- (setq i (1+ i))
- (catch 'tag
- (while (< i len)
- (setq chr (aref str i))
- (cond ((eq chr ?\\)
- (setq i (1+ i))
- (if (>= i len)
- (throw 'tag nil)
- )
- (setq i (1+ i))
- )
- ((eq chr close)
- (throw 'tag (1+ i))
- )
- ((eq chr open)
- (if (and recursive
- (setq p (std11-check-enclosure
- str open close recursive i))
- )
- (setq i p)
- (throw 'tag nil)
- ))
- (t
- (setq i (1+ i))
- ))
- ))))))
-
-(defun std11-analyze-quoted-string (str)
- (let ((p (std11-check-enclosure str ?\" ?\")))
- (if p
- (cons (cons 'quoted-string (substring str 1 (1- p)))
- (substring str p))
- )))
-
-(defun std11-analyze-domain-literal (str)
- (let ((p (std11-check-enclosure str ?\[ ?\])))
- (if p
- (cons (cons 'domain-literal (substring str 1 (1- p)))
- (substring str p))
- )))
-
-(defun std11-analyze-comment (str)
- (let ((p (std11-check-enclosure str ?\( ?\) t)))
- (if p
- (cons (cons 'comment (substring str 1 (1- p)))
- (substring str p))
- )))
-
-(defun std11-lexical-analyze (str)
- (let (dest ret)
- (while (not (string-equal str ""))
- (setq ret
- (or (std11-analyze-quoted-string str)
- (std11-analyze-domain-literal str)
- (std11-analyze-comment str)
- (std11-analyze-spaces str)
- (std11-analyze-special str)
- (std11-analyze-atom str)
- '((error) . "")
- ))
- (setq dest (cons (car ret) dest))
- (setq str (cdr ret))
- )
- (nreverse dest)
- ))
-
-
-;;; @ parser
-;;;
-
-(defun std11-ignored-token-p (token)
- (let ((type (car token)))
- (or (eq type 'spaces)(eq type 'comment))
- ))
-
-(defun std11-parse-token (lal)
- (let (token itl)
- (while (and lal
- (progn
- (setq token (car lal))
- (std11-ignored-token-p token)
- ))
- (setq lal (cdr lal))
- (setq itl (cons token itl))
- )
- (cons (nreverse (cons token itl))
- (cdr lal))
- ))
-
-(defun std11-parse-ascii-token (lal)
- (let (token itl parsed token-value)
- (while (and lal
- (setq token (car lal))
- (if (and (setq token-value (cdr token))
- (find-non-ascii-charset-string token-value)
- )
- (setq token nil)
- (std11-ignored-token-p token)
- ))
- (setq lal (cdr lal))
- (setq itl (cons token itl))
- )
- (if (and token
- (setq parsed (nreverse (cons token itl)))
- )
- (cons parsed (cdr lal))
- )))
-
-(defun std11-parse-token-or-comment (lal)
- (let (token itl)
- (while (and lal
- (progn
- (setq token (car lal))
- (eq (car token) 'spaces)
- ))
- (setq lal (cdr lal))
- (setq itl (cons token itl))
- )
- (cons (nreverse (cons token itl))
- (cdr lal))
- ))
-
-(defun std11-parse-word (lal)
- (let ((ret (std11-parse-ascii-token lal)))
- (if ret
- (let ((elt (car ret))
- (rest (cdr ret))
- )
- (if (or (assq 'atom elt)
- (assq 'quoted-string elt))
- (cons (cons 'word elt) rest)
- )))))
-
-(defun std11-parse-word-or-comment (lal)
- (let ((ret (std11-parse-token-or-comment lal)))
- (if ret
- (let ((elt (car ret))
- (rest (cdr ret))
- )
- (cond ((or (assq 'atom elt)
- (assq 'quoted-string elt))
- (cons (cons 'word elt) rest)
- )
- ((assq 'comment elt)
- (cons (cons 'comment-word elt) rest)
- ))
- ))))
-
-(defun std11-parse-phrase (lal)
- (let (ret phrase)
- (while (setq ret (std11-parse-word-or-comment lal))
- (setq phrase (append phrase (cdr (car ret))))
- (setq lal (cdr ret))
- )
- (if phrase
- (cons (cons 'phrase phrase) lal)
- )))
-
-(defun std11-parse-local-part (lal)
- (let ((ret (std11-parse-word lal)))
- (if ret
- (let ((local-part (cdr (car ret))) dot)
- (setq lal (cdr ret))
- (while (and (setq ret (std11-parse-ascii-token lal))
- (setq dot (car ret))
- (string-equal (cdr (assq 'specials dot)) ".")
- (setq ret (std11-parse-word (cdr ret)))
- (setq local-part
- (append local-part dot (cdr (car ret)))
- )
- (setq lal (cdr ret))
- ))
- (cons (cons 'local-part local-part) lal)
- ))))
-
-(defun std11-parse-sub-domain (lal)
- (let ((ret (std11-parse-ascii-token lal)))
- (if ret
- (let ((sub-domain (car ret)))
- (if (or (assq 'atom sub-domain)
- (assq 'domain-literal sub-domain)
- )
- (cons (cons 'sub-domain sub-domain)
- (cdr ret)
- )
- )))))
-
-(defun std11-parse-domain (lal)
- (let ((ret (std11-parse-sub-domain lal)))
- (if ret
- (let ((domain (cdr (car ret))) dot)
- (setq lal (cdr ret))
- (while (and (setq ret (std11-parse-ascii-token lal))
- (setq dot (car ret))
- (string-equal (cdr (assq 'specials dot)) ".")
- (setq ret (std11-parse-sub-domain (cdr ret)))
- (setq domain
- (append domain dot (cdr (car ret)))
- )
- (setq lal (cdr ret))
- ))
- (cons (cons 'domain domain) lal)
- ))))
-
-(defun std11-parse-at-domain (lal)
- (let ((ret (std11-parse-ascii-token lal)) at-sign)
- (if (and ret
- (setq at-sign (car ret))
- (string-equal (cdr (assq 'specials at-sign)) "@")
- (setq ret (std11-parse-domain (cdr ret)))
- )
- (cons (cons 'at-domain (append at-sign (cdr (car ret))))
- (cdr ret))
- )))
-
-(defun std11-parse-addr-spec (lal)
- (let ((ret (std11-parse-local-part lal))
- addr)
- (if (and ret
- (prog1
- (setq addr (cdr (car ret)))
- (setq lal (cdr ret))
- (and (setq ret (std11-parse-at-domain lal))
- (setq addr (append addr (cdr (car ret))))
- (setq lal (cdr ret))
- )))
- (cons (cons 'addr-spec addr) lal)
- )))
-
-(defun std11-parse-route (lal)
- (let ((ret (std11-parse-at-domain lal))
- route comma colon)
- (if (and ret
- (progn
- (setq route (cdr (car ret)))
- (setq lal (cdr ret))
- (while (and (setq ret (std11-parse-ascii-token lal))
- (setq comma (car ret))
- (string-equal (cdr (assq 'specials comma)) ",")
- (setq ret (std11-parse-at-domain (cdr ret)))
- )
- (setq route (append route comma (cdr (car ret))))
- (setq lal (cdr ret))
- )
- (and (setq ret (std11-parse-ascii-token lal))
- (setq colon (car ret))
- (string-equal (cdr (assq 'specials colon)) ":")
- (setq route (append route colon))
- )
- ))
- (cons (cons 'route route)
- (cdr ret)
- )
- )))
-
-(defun std11-parse-route-addr (lal)
- (let ((ret (std11-parse-ascii-token lal))
- < route addr-spec >)
- (if (and ret
- (setq < (car ret))
- (string-equal (cdr (assq 'specials <)) "<")
- (setq lal (cdr ret))
- (progn (and (setq ret (std11-parse-route lal))
- (setq route (cdr (car ret)))
- (setq lal (cdr ret))
- )
- (setq ret (std11-parse-addr-spec lal))
- )
- (setq addr-spec (cdr (car ret)))
- (setq lal (cdr ret))
- (setq ret (std11-parse-ascii-token lal))
- (setq > (car ret))
- (string-equal (cdr (assq 'specials >)) ">")
- )
- (cons (cons 'route-addr (append route addr-spec))
- (cdr ret)
- )
- )))
-
-(defun std11-parse-phrase-route-addr (lal)
- (let ((ret (std11-parse-phrase lal)) phrase)
- (if ret
- (progn
- (setq phrase (cdr (car ret)))
- (setq lal (cdr ret))
- ))
- (if (setq ret (std11-parse-route-addr lal))
- (cons (list 'phrase-route-addr
- phrase
- (cdr (car ret)))
- (cdr ret))
- )))
-
-(defun std11-parse-mailbox (lal)
- (let ((ret (or (std11-parse-phrase-route-addr lal)
- (std11-parse-addr-spec lal)))
- mbox comment)
- (if (and ret
- (prog1
- (setq mbox (car ret))
- (setq lal (cdr ret))
- (if (and (setq ret (std11-parse-token-or-comment lal))
- (setq comment (cdr (assq 'comment (car ret))))
- )
- (setq lal (cdr ret))
- )))
- (cons (list 'mailbox mbox comment)
- lal)
- )))
-
-(defun std11-parse-group (lal)
- (let ((ret (std11-parse-phrase lal))
- phrase colon comma mbox semicolon)
- (if (and ret
- (setq phrase (cdr (car ret)))
- (setq lal (cdr ret))
- (setq ret (std11-parse-ascii-token lal))
- (setq colon (car ret))
- (string-equal (cdr (assq 'specials colon)) ":")
- (setq lal (cdr ret))
- (progn
- (and (setq ret (std11-parse-mailbox lal))
- (setq mbox (list (car ret)))
- (setq lal (cdr ret))
- (progn
- (while (and (setq ret (std11-parse-ascii-token lal))
- (setq comma (car ret))
- (string-equal
- (cdr (assq 'specials comma)) ",")
- (setq lal (cdr ret))
- (setq ret (std11-parse-mailbox lal))
- (setq mbox (cons (car ret) mbox))
- (setq lal (cdr ret))
- )
- )))
- (and (setq ret (std11-parse-ascii-token lal))
- (setq semicolon (car ret))
- (string-equal (cdr (assq 'specials semicolon)) ";")
- )))
- (cons (list 'group phrase (nreverse mbox))
- (cdr ret)
- )
- )))
-
-(defun std11-parse-address (lal)
- (or (std11-parse-group lal)
- (std11-parse-mailbox lal)
- ))
-
-(defun std11-parse-addresses (lal)
- (let ((ret (std11-parse-address lal)))
- (if ret
- (let ((dest (list (car ret))))
- (setq lal (cdr ret))
- (while (and (setq ret (std11-parse-ascii-token lal))
- (string-equal (cdr (assq 'specials (car ret))) ",")
- (setq ret (std11-parse-address (cdr ret)))
- )
- (setq dest (cons (car ret) dest))
- (setq lal (cdr ret))
- )
- (nreverse dest)
- ))))
-
-
-;;; @ end
-;;;
-
-(provide 'std11-parse)
-
-;;; std11-parse.el ends here
+++ /dev/null
-;;; std11.el --- STD 11 functions for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: mail, news, RFC 822, STD 11
-;; Version: $Id: std11.el,v 0.40 1997-03-03 08:03:06 shuhei-k Exp $
-
-;; This file is part of MU (Message Utilities).
-
-;; 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.
-
-;;; Code:
-
-(autoload 'buffer-substring-no-properties "emu")
-(autoload 'member "emu")
-
-
-;;; @ field
-;;;
-
-(defconst std11-field-name-regexp "[!-9;-~]+")
-(defconst std11-field-head-regexp
- (concat "^" std11-field-name-regexp ":"))
-(defconst std11-next-field-head-regexp
- (concat "\n" std11-field-name-regexp ":"))
-
-(defun std11-field-end ()
- "Move to end of field and return this point. [std11.el]"
- (if (re-search-forward std11-next-field-head-regexp nil t)
- (goto-char (match-beginning 0))
- (if (re-search-forward "^$" nil t)
- (goto-char (1- (match-beginning 0)))
- (end-of-line)
- ))
- (point)
- )
-
-(defun std11-field-body (name &optional boundary)
- "Return body of field NAME.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (goto-char (point-min))
- (let ((case-fold-search t))
- (if (re-search-forward (concat "^" name ":[ \t]*") nil t)
- (buffer-substring-no-properties (match-end 0) (std11-field-end))
- )))))
-
-(defun std11-find-field-body (field-names &optional boundary)
- "Return the first found field-body specified by FIELD-NAMES
-of the message header in current buffer. If BOUNDARY is not nil, it is
-used as message header separator. [std11.el]"
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (let ((case-fold-search t)
- field-name)
- (catch 'tag
- (while (setq field-name (car field-names))
- (goto-char (point-min))
- (if (re-search-forward (concat "^" field-name ":[ \t]*") nil t)
- (throw 'tag
- (buffer-substring-no-properties
- (match-end 0) (std11-field-end)))
- )
- (setq field-names (cdr field-names))
- ))))))
-
-(defun std11-field-bodies (field-names &optional default-value boundary)
- "Return list of each field-bodies of FIELD-NAMES of the message header
-in current buffer. If BOUNDARY is not nil, it is used as message
-header separator. [std11.el]"
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (let* ((case-fold-search t)
- (dest (make-list (length field-names) default-value))
- (s-rest field-names)
- (d-rest dest)
- field-name)
- (while (setq field-name (car s-rest))
- (goto-char (point-min))
- (if (re-search-forward (concat "^" field-name ":[ \t]*") nil t)
- (setcar d-rest
- (buffer-substring-no-properties
- (match-end 0) (std11-field-end)))
- )
- (setq s-rest (cdr s-rest)
- d-rest (cdr d-rest))
- )
- dest))))
-
-
-;;; @ unfolding
-;;;
-
-(defun std11-unfold-string (string)
- "Unfold STRING as message header field. [std11.el]"
- (let ((dest ""))
- (while (string-match "\n\\([ \t]\\)" string)
- (setq dest (concat dest
- (substring string 0 (match-beginning 0))
- (match-string 1 string)
- ))
- (setq string (substring string (match-end 0)))
- )
- (concat dest string)
- ))
-
-
-;;; @ header
-;;;
-
-(defun std11-narrow-to-header (&optional boundary)
- "Narrow to the message header.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (narrow-to-region
- (goto-char (point-min))
- (if (re-search-forward
- (concat "^\\(" (regexp-quote (or boundary "")) "\\)?$")
- nil t)
- (match-beginning 0)
- (point-max)
- )))
-
-(defun std11-header-string (regexp &optional boundary)
- "Return string of message header fields matched by REGEXP.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (let ((case-fold-search t))
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (goto-char (point-min))
- (let (field header)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq field
- (buffer-substring (match-beginning 0) (std11-field-end)))
- (if (string-match regexp field)
- (setq header (concat header field "\n"))
- ))
- header)
- ))))
-
-(defun std11-header-string-except (regexp &optional boundary)
- "Return string of message header fields not matched by REGEXP.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (let ((case-fold-search t))
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (goto-char (point-min))
- (let (field header)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq field
- (buffer-substring (match-beginning 0) (std11-field-end)))
- (if (not (string-match regexp field))
- (setq header (concat header field "\n"))
- ))
- header)
- ))))
-
-(defun std11-collect-field-names (&optional boundary)
- "Return list of all field-names of the message header in current buffer.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (goto-char (point-min))
- (let (dest name)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq name (buffer-substring-no-properties
- (match-beginning 0)(1- (match-end 0))))
- (or (member name dest)
- (setq dest (cons name dest))
- )
- )
- dest))))
-
-
-;;; @ quoted-string
-;;;
-
-(defun std11-wrap-as-quoted-pairs (string specials)
- (let (dest
- (i 0)
- (b 0)
- (len (length string))
- )
- (while (< i len)
- (let ((chr (aref string i)))
- (if (memq chr specials)
- (setq dest (concat dest (substring string b i) "\\")
- b i)
- ))
- (setq i (1+ i))
- )
- (concat dest (substring string b))
- ))
-
-(defconst std11-non-qtext-char-list '(?\" ?\\ ?\r ?\n))
-
-(defun std11-wrap-as-quoted-string (string)
- "Wrap STRING as RFC 822 quoted-string. [std11.el]"
- (concat "\""
- (std11-wrap-as-quoted-pairs string std11-non-qtext-char-list)
- "\""))
-
-(defun std11-strip-quoted-pair (string)
- "Strip quoted-pairs in STRING. [std11.el]"
- (let (dest
- (b 0)
- (i 0)
- (len (length string))
- )
- (while (< i len)
- (let ((chr (aref string i)))
- (if (eq chr ?\\)
- (setq dest (concat dest (substring string b i))
- b (1+ i)
- i (+ i 2))
- (setq i (1+ i))
- )))
- (concat dest (substring string b))
- ))
-
-(defun std11-strip-quoted-string (string)
- "Strip quoted-string STRING. [std11.el]"
- (let ((len (length string)))
- (or (and (>= len 2)
- (let ((max (1- len)))
- (and (eq (aref string 0) ?\")
- (eq (aref string max) ?\")
- (std11-strip-quoted-pair (substring string 1 max))
- )))
- string)))
-
-
-;;; @ composer
-;;;
-
-(defun std11-addr-to-string (seq)
- "Return string from lexical analyzed list SEQ
-represents addr-spec of RFC 822. [std11.el]"
- (mapconcat (function
- (lambda (token)
- (let ((name (car token)))
- (cond
- ((eq name 'spaces) "")
- ((eq name 'comment) "")
- ((eq name 'quoted-string)
- (concat "\"" (cdr token) "\""))
- (t (cdr token)))
- )))
- seq "")
- )
-
-(defun std11-address-string (address)
- "Return string of address part from parsed ADDRESS of RFC 822.
-\[std11.el]"
- (cond ((eq (car address) 'group)
- (mapconcat (function std11-address-string)
- (car (cdr address))
- ", ")
- )
- ((eq (car address) 'mailbox)
- (let ((addr (nth 1 address)))
- (std11-addr-to-string
- (if (eq (car addr) 'phrase-route-addr)
- (nth 2 addr)
- (cdr addr)
- )
- )))))
-
-(defun std11-full-name-string (address)
- "Return string of full-name part from parsed ADDRESS of RFC 822.
-\[std11.el]"
- (cond ((eq (car address) 'group)
- (mapconcat (function
- (lambda (token)
- (cdr token)
- ))
- (nth 1 address) "")
- )
- ((eq (car address) 'mailbox)
- (let ((addr (nth 1 address))
- (comment (nth 2 address))
- phrase)
- (if (eq (car addr) 'phrase-route-addr)
- (setq phrase
- (mapconcat
- (function
- (lambda (token)
- (let ((type (car token)))
- (cond ((eq type 'quoted-string)
- (std11-strip-quoted-pair (cdr token))
- )
- ((eq type 'comment)
- (concat
- "("
- (std11-strip-quoted-pair (cdr token))
- ")")
- )
- (t
- (cdr token)
- )))))
- (nth 1 addr) ""))
- )
- (cond ((> (length phrase) 0) phrase)
- (comment (std11-strip-quoted-pair comment))
- )
- ))))
-
-
-;;; @ parser
-;;;
-
-(defun std11-parse-address-string (string)
- "Parse STRING as mail address. [std11.el]"
- (std11-parse-address (std11-lexical-analyze string))
- )
-
-(defun std11-parse-addresses-string (string)
- "Parse STRING as mail address list. [std11.el]"
- (std11-parse-addresses (std11-lexical-analyze string))
- )
-
-(defun std11-extract-address-components (string)
- "Extract full name and canonical address from STRING.
-Returns a list of the form (FULL-NAME CANONICAL-ADDRESS).
-If no name can be extracted, FULL-NAME will be nil. [std11.el]"
- (let* ((structure (car (std11-parse-address-string
- (std11-unfold-string string))))
- (phrase (std11-full-name-string structure))
- (address (std11-address-string structure))
- )
- (list phrase address)
- ))
-
-(provide 'std11)
-
-(mapcar (function
- (lambda (func)
- (autoload func "std11-parse")
- ))
- '(std11-lexical-analyze
- std11-parse-address std11-parse-addresses
- std11-parse-address-string))
-
-
-;;; @ end
-;;;
-
-;;; std11.el ends here