Synch with `flim-1_14'.
authoryamaoka <yamaoka>
Tue, 19 Dec 2000 12:51:09 +0000 (12:51 +0000)
committeryamaoka <yamaoka>
Tue, 19 Dec 2000 12:51:09 +0000 (12:51 +0000)
ChangeLog
FLIM-1.14-API.en [new file with mode: 0644]
Makefile
eword-decode.el
eword-encode.el
mime-def.el
mime-parse.el
mime.el
mmdbuffer.el [deleted file]
qmtp.el
smtp.el

index 64cf472..3d5f5ce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,84 @@
+2000-12-19  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * FLIM-1.14-API.en: New file.
+
+       * smtp.el (smtp-open-connection-function): Add autoload cookie.
+
+       * qmtp.el (qmtp-open-connection-function): Add autoload cookie.
+
+       * mime.el (mime-entity-children): Add DOC.
+       (mime-entity-node-id): Add DOC.
+       (mime-entity-content-type): Add DOC.
+       (mime-entity-content-disposition): Add DOC.
+       (mime-entity-encoding): Add DOC.
+
+2000-12-19  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mime.el (mime-encode-field-body): Add autoload setting.
+
+       * eword-encode.el (mime-encode-field-body): Renamed from
+       `eword-encode-field-body'; declare `eword-encode-field-body' as
+       obsolete alias.
+       (mime-encode-header-in-buffer): Use `mime-encode-field-body'
+       instead of `eword-encode-field-body'.
+
+2000-12-19  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mime.el (mime-encode-header-in-buffer): Renamed from
+       `eword-encode-header'.
+
+       * mmdbuffer.el: Deleted.
+
+       * mime-def.el (mime-header): New group.
+       (mime-field-decoding-max-size): New user option [moved from
+       eword-decode.el].
+       (mime-field-encoding-method-alist): New user option [moved from
+       eword-encode.el].
+
+       * eword-encode.el (eword-field-encoding-method-alist): Moved to
+       mime-def.el and renamed to `mime-field-encoding-method-alist'.
+       (mime-header-charset-encoding-alist): Renamed from
+       `eword-charset-encoding-alist'.
+       (mime-header-default-charset-encoding): New variable.
+       (ew-find-charset-rule): Use
+       `mime-header-default-charset-encoding'.
+       (eword-in-subject-p): Declare as obsolete function.
+       (mime-encode-header-in-buffer): Renamed from
+       `eword-encode-header'; declare `eword-encode-header' as obsolete
+       alias.
+
+       * eword-decode.el (eword-max-size-to-decode): Moved to mime-def.el
+       and renamed to `mime-field-decoding-max-size'.
+       (mime-header-lexical-analyzer): Renamed from
+       `eword-lexical-analyzer'; switch to variable.
+
+2000-12-19  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * eword-encode.el (eword-encode-default-start-column): Switch to
+       variable.
+
+2000-12-17  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mime-parse.el: Require `luna'.
+
+2000-12-16  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * eword-encode.el Use `find-charset-string' instead of
+       `find-non-ascii-charset-string'.
+       (eword-encode-addr-seq-to-rword-list): Don't use `butlast'.
+       (eword-encode-header): Use `find-charset-region' instead of
+       `find-non-ascii-charset-string'.
+
+2000-12-15  MORIOKA Tomohiko  <tomo@kanji.zinbun.kyoto-u.ac.jp>
+
+       * mime/eword-decode.el: Don't use
+       `define-obsolete-function-alias'; so `eword-decode-header' is
+       deleted.
+
+2000-12-15  TAKAHASHI Kaoru  <kaoru@kaisei.org>
+
+       * Makefile (tar): Use `cvs tag -R' instead of `cvs tag -RF'.
+
 2000-12-15   Daiki Ueno  <ueno@unixuser.org>
 
        * smtp.el (smtp-send-buffer): Pass the BUFFER argument to
diff --git a/FLIM-1.14-API.en b/FLIM-1.14-API.en
new file mode 100644 (file)
index 0000000..44f01f1
--- /dev/null
@@ -0,0 +1,503 @@
+* MIME entity
+
+** How to use
+
+(require 'mime)
+
+
+** Level 1 features
+
+[Function] mime-open-entity (type location)
+  Open an entity and return it.
+
+TYPE is representation-type.
+
+LOCATION is location of entity.  Specification of it is depended on
+representation-type.
+
+
+[Function] mime-entity-children (entity)
+  Return list of entities included in the ENTITY.
+
+
+[Function] mime-entity-node-id (entity)
+  Return node-id of ENTITY.
+
+
+[Function] mime-find-entity-from-node-id (entity-node-id message)
+  Return entity from ENTITY-NODE-ID in MESSAGE.
+  (mime-find-entity-from-number (reverse entity-node-id) message))
+
+
+[Function] mime-find-entity-from-content-id (cid message)
+  Return entity from CID in MESSAGE.
+
+
+[Function] mime-insert-entity (entity)
+  Insert header and body of ENTITY at point.
+
+
+[Function] mime-write-entity (entity filename)
+  Write header and body of ENTITY into FILENAME.
+
+
+[Function] mime-entity-body (entity)
+  Return network representation of ENTITY body.
+
+
+[Function] mime-insert-entity-body (entity)
+  Insert network representation of ENTITY body at point.
+
+
+[Function] mime-write-entity-body (entity filename)
+  Write body of ENTITY into FILENAME.
+
+
+[Function] mime-entity-content (entity)
+  Return content of ENTITY as byte sequence (string).
+
+
+[Function] mime-insert-entity-content (entity)
+  Insert content of ENTITY at point.
+
+
+[Function] mime-write-entity-content (entity filename)
+  Write content of ENTITY into FILENAME.
+
+
+[Function] mime-insert-text-content (entity)
+  Insert decoded text body of ENTITY.
+
+
+[Function] mime-entity-fetch-field (entity field-name)
+  Return the value of the ENTITY's header field whose type is
+FIELD-NAME.
+
+
+** Level 2 features
+
+[Function] mime-entity-content-type (entity)
+  Return content-type of ENTITY.
+
+
+[Function] mime-entity-content-disposition (entity)
+  Return content-disposition of ENTITY.
+
+
+[Function] mime-entity-encoding (entity &optional default-encoding)
+  Return content-transfer-encoding of ENTITY.
+
+If the ENTITY does not have Content-Transfer-Encoding field, this
+function returns DEFAULT-ENCODING.  If it is nil, "7bit" is used as
+default value.
+
+
+[Function] mime-entity-number (entity)
+  Return entity-number of ENTITY.
+  (reverse (mime-entity-node-id-internal entity)))
+
+
+[Function] mime-entity-parent (entity &optional message)
+  Return mother entity of ENTITY.
+
+If MESSAGE is specified, it is regarded as root entity.
+
+
+[Function] mime-root-entity-p (entity &optional message)
+  Return t if ENTITY is root-entity (message).
+
+If MESSAGE is specified, it is regarded as root entity.
+
+
+[Function] mime-find-root-entity (entity)
+  Return root entity of ENTITY.
+
+
+[Function] mime-entity-read-field (entity field-name)
+  Parse FIELD-NAME field in header of ENTITY, and return the result.
+
+Format of result is depended on kind of field.  For non-structured
+field, this function returns string.  For structured field, it returns
+list corresponding with structure of the field.
+
+Strings in the result will be converted to internal representation of
+Emacs.
+
+If FIELD-NAME field is not found, this function returns nil.
+
+
+[Function] mime-insert-header (entity &optional invisible-fields
+                                               visible-fields)
+  Insert before point a decoded header of ENTITY.
+
+
+[Function] mime-entity-name (entity)
+  Return name of the ENTITY.
+
+
+[Function] mime-entity-filename (entity)
+  Return filename of ENTITY.
+
+
+** Level 3 features
+
+[Function] mime-entity-cooked-p (entity)
+  Return non-nil if contents of ENTITY has been already
+  code-converted.
+
+[Function] mime-entity-set-content-type (entity content-type)
+  Set ENTITY's content-type to CONTENT-TYPE.
+
+
+[Function] mime-entity-set-encoding (entity encoding)
+  Set ENTITY's content-transfer-encoding to ENCODING.
+
+
+* encoded-word decoder
+
+** How to use
+
+(require 'mime)
+
+
+** Level 1 features
+
+[Function] mime-decode-header-in-buffer (&optional code-conversion separator)
+  Decode MIME encoded-words in header fields.
+
+If CODE-CONVERSION is nil, it decodes only encoded-words.  If it is
+mime-charset, it decodes non-ASCII bit patterns as the mime-charset.
+Otherwise it decodes non-ASCII bit patterns as the
+default-mime-charset.
+
+If SEPARATOR is not nil, it is used as header separator.
+
+
+[Function] mime-decode-header-in-region (start end
+                                        &optional code-conversion)
+  Decode MIME encoded-words in region between START and END.
+
+If CODE-CONVERSION is nil, it decodes only encoded-words.  If it is
+mime-charset, it decodes non-ASCII bit patterns as the mime-charset.
+Otherwise it decodes non-ASCII bit patterns as the
+default-mime-charset.
+
+
+[Function] mime-decode-field-body (field-body field-name
+                                  &optional mode max-column)
+  Decode FIELD-BODY as FIELD-NAME in MODE, and return the result.
+
+Optional argument MODE must be `plain', `wide', `summary' or `nov'.
+Default mode is `summary'.
+
+If MODE is `wide' and MAX-COLUMN is non-nil, the result is folded with
+MAX-COLUMN.
+
+Non MIME encoded-word part in FILED-BODY is decoded with
+`default-mime-charset'.
+
+
+** Level 2 features
+
+[Function] mime-set-field-decoder (field &rest specs)
+  Set decoder of FIELD.
+
+SPECS must be like `MODE1 DECODER1 MODE2 DECODER2 ...'.
+
+Each mode must be `nil', `plain', `wide', `summary' or `nov'.
+If mode is `nil', corresponding decoder is set up for every modes.
+
+
+[Macro] mime-find-field-presentation-method (name)
+  Return field-presentation-method from NAME.
+
+NAME must be `plain', `wide', `summary' or `nov'.
+
+
+[Function] mime-find-field-decoder (field &optional mode)
+  Return function to decode field-body of FIELD in MODE.
+
+Optional argument MODE must be object or name of
+field-presentation-method.  Name of field-presentation-method must be
+`plain', `wide', `summary' or `nov'.
+Default value of MODE is `summary'.
+
+
+[Function] mime-update-field-decoder-cache (field mode &optional function)
+  Update field decoder cache `mime-field-decoder-cache'.
+
+
+* encoded-word encoder
+
+** How to use
+
+(require 'mime)
+
+
+** Level 1 features
+
+[Function] mime-encode-header-in-buffer (&optional code-conversion)
+  Encode header fields to network representation, such as MIME encoded-word.
+
+It refer variable `mime-field-encoding-method-alist'.
+
+
+[Function] mime-encode-field-body (field-body field-name)
+  Encode FIELD-BODY as FIELD-NAME, and return the result.
+
+A lexical token includes non-ASCII character is encoded as MIME
+encoded-word.  ASCII token is not encoded.
+
+
+* Content-Transfer-Encoding
+
+** How to use
+
+(require 'mel)
+
+
+** Level 1 features
+
+[Function] mime-encode-region (start end encoding)
+  Encode region START to END of current buffer using ENCODING.
+
+ENCODING must be string.
+
+
+[Function] mime-decode-region (start end encoding)
+  Decode region START to END of current buffer using ENCODING.
+
+ENCODING must be string.
+
+
+[Function] mime-decode-string (string encoding)
+  Decode STRING using ENCODING.
+
+ENCODING must be string.  If ENCODING is found in
+`mime-string-decoding-method-alist' as its key, this function decodes
+the STRING by its value.
+
+
+[Function] mime-insert-encoded-file (filename encoding)
+  Insert file FILENAME encoded by ENCODING format.
+
+
+[Function] mime-write-decoded-region (start end filename encoding)
+  Decode and write current region encoded by ENCODING into FILENAME.
+
+START and END are buffer positions.
+
+
+* Mailcap
+
+** How to use
+
+(require 'mime-conf)
+
+
+** Level 1 features
+
+[Function] mime-parse-mailcap-buffer (&optional buffer order)
+  Parse BUFFER as a mailcap, and return the result.
+
+If optional argument ORDER is a function, result is sorted by it.
+If optional argument ORDER is not specified, result is sorted original
+order.  Otherwise result is not sorted.
+
+
+[Variable] mime-mailcap-file (default value is "~/.mailcap")
+  File name of user's mailcap file.
+
+
+[Function] mime-parse-mailcap-file (&optional filename order)
+  Parse FILENAME as a mailcap, and return the result.
+
+If optional argument ORDER is a function, result is sorted by it.
+If optional argument ORDER is not specified, result is sorted original
+order.  Otherwise result is not sorted.
+
+
+[Function] mime-format-mailcap-command (mtext situation)
+  Return formated command string from MTEXT and SITUATION.
+
+MTEXT is a command text of mailcap specification, such as
+view-command.
+
+SITUATION is an association-list about information of entity.  Its key
+may be:
+
+       'type           primary media-type
+       'subtype        media-subtype
+       'filename       filename
+       STRING          parameter of Content-Type field
+
+
+* MIME Field parsing
+
+** How to use
+
+(require 'mime)
+
+
+** Level 2 features
+
+[Variable] mime-field-parser-alist
+  Alist to specify field parser.
+
+
+[Function] mime-parse-Content-Type (string)
+  Parse STRING as field-body of Content-Type field.
+
+Return value is
+    (PRIMARY-TYPE SUBTYPE (NAME1 . VALUE1)(NAME2 . VALUE2) ...)
+or nil.  PRIMARY-TYPE and SUBTYPE are symbol and NAME_n and VALUE_n
+are string.
+
+
+[Function] mime-read-Content-Type ()
+  Read field-body of Content-Type field from current-buffer,
+and return parsed it.  Format of return value is as same as
+`mime-parse-Content-Type'.
+
+
+[Function] mime-parse-Content-Disposition (string)
+  Parse STRING as field-body of Content-Disposition field.
+
+
+[Function] mime-read-Content-Disposition ()
+  Read field-body of Content-Disposition field from current-buffer,
+and return parsed it.
+
+
+[Function] mime-parse-Content-Transfer-Encoding (string)
+  Parse STRING as field-body of Content-Transfer-Encoding field.
+
+
+[Function] mime-read-Content-Transfer-Encoding (&optional default-encoding)
+  Read field-body of Content-Transfer-Encoding field from
+current-buffer, and return it.
+
+If is is not found, return DEFAULT-ENCODING.
+
+
+[Function] mime-parse-msg-id (tokens)
+  Parse TOKENS as msg-id of Content-Id or Message-Id field.
+
+
+[Function] mime-uri-parse-cid (string)
+  Parse STRING as cid URI.
+
+
+* MIME message parsing
+
+** How to use
+
+(require 'mime)
+
+
+** Level 3 features
+
+[Function] mime-parse-buffer (&optional buffer representation-type)
+  Parse BUFFER as a MIME message.
+
+If buffer is omitted, it parses current-buffer.
+
+
+* STD 11 parsing
+
+** How to use
+
+(require 'std11)
+
+
+** Level 1 features
+
+[Function] std11-fetch-field (name)
+  Return the value of the header field NAME.
+
+The buffer is expected to be narrowed to just the headers of the message.
+
+
+[Function] std11-narrow-to-header (&optional boundary)
+  Narrow to the message header.
+
+If BOUNDARY is not nil, it is used as message header separator.
+
+
+[Function] std11-field-body (name &optional boundary)
+  Return the value of the header field NAME.
+
+If BOUNDARY is not nil, it is used as message header separator.
+
+
+[Function] std11-unfold-string (string)
+  Unfold STRING as message header field.
+
+
+** Level 2 features
+
+[Function] std11-lexical-analyze (string &optional analyzer start)
+  Analyze STRING as lexical tokens of STD 11.
+
+
+[Function] std11-address-string (address)
+  Return string of address part from parsed ADDRESS of RFC 822.
+
+
+[Function] std11-full-name-string (address)
+  Return string of full-name part from parsed ADDRESS of RFC 822.
+
+
+[Function] std11-msg-id-string (msg-id)
+  Return string from parsed MSG-ID of RFC 822.
+
+
+[Function] std11-fill-msg-id-list-string (string &optional column)
+  Fill list of msg-id in STRING, and return the result.
+
+
+[Function] std11-parse-address-string (string)
+  Parse STRING as mail address.
+
+
+[Function] std11-parse-addresses-string (string)
+  Parse STRING as mail address list.
+
+
+[Function] std11-parse-msg-id-string (string)
+  Parse STRING as msg-id.
+
+
+[Function] std11-parse-msg-ids-string (string)
+  Parse STRING as `*(phrase / msg-id)'.
+
+
+[Function] 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.
+
+
+* SMTP
+
+** How to use
+
+(require 'smtp)
+
+
+** Level 1 features
+
+[Function] smtp-send-buffer (sender recipients buffer)
+
+
+* QMTP
+
+** How to use
+
+(require 'qmtp)
+
+
+** Level 1 features
+
+[Function] qmtp-send-buffer (sender recipients buffer)
index 12d4325..8895e20 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -54,7 +54,7 @@ clean:
 
 tar:
        cvs commit
-       sh -c 'cvs tag -RF $(PACKAGE)-`echo $(VERSION) | tr . _`; \
+       sh -c 'cvs tag -R $(PACKAGE)-`echo $(VERSION) | tr . _`; \
        cd /tmp; \
        cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root \
                export -d $(PACKAGE)-$(VERSION) \
index 1dd428a..21ed55c 100644 (file)
 
 (eval-when-compile (require 'cl))      ; list*, pop
 
-(defgroup eword-decode nil
-  "Encoded-word decoding"
-  :group 'mime)
-
-(defcustom eword-max-size-to-decode 1000
-  "*Max size to decode header field."
-  :group 'eword-decode
-  :type '(choice (integer :tag "Limit (bytes)")
-                (const :tag "Don't limit" nil)))
-
 
 ;;; @ MIME encoded-word definition
 ;;;
@@ -143,8 +133,8 @@ decode the charset included in it, it is not decoded."
                                                    start-column
                                                    &optional max-column
                                                    start)
-  (if (and eword-max-size-to-decode
-          (> (length string) eword-max-size-to-decode))
+  (if (and mime-field-decoding-max-size
+          (> (length string) mime-field-decoding-max-size))
       string
     (or max-column
        (setq max-column fill-column))
@@ -471,8 +461,8 @@ If SEPARATOR is not nil, it is used as header separator."
        (point-max)))
    code-conversion))
 
-(define-obsolete-function-alias 'eword-decode-header
-  'mime-decode-header-in-buffer)
+;; (define-obsolete-function-alias 'eword-decode-header
+;;   'mime-decode-header-in-buffer)
 
 
 ;;; @ encoded-word decoder
@@ -554,7 +544,7 @@ as a version of Net$cape)."
   "*Max position of eword-lexical-analyze-cache.
 It is max size of eword-lexical-analyze-cache - 1.")
 
-(defcustom eword-lexical-analyzer
+(defvar mime-header-lexical-analyzer
   '(eword-analyze-quoted-string
     eword-analyze-domain-literal
     eword-analyze-comment
@@ -574,9 +564,7 @@ format.
 
 Previous function is preferred to next function.  If a function
 returns nil, next function is used.  Otherwise the return value will
-be the result."
-  :group 'eword-decode
-  :type '(repeat function))
+be the result.")
 
 (defun eword-analyze-quoted-string (string start &optional must-unfold)
   (let ((p (std11-check-enclosure string ?\" ?\" nil start)))
@@ -694,7 +682,7 @@ be the result."
        dest ret)
     (while (< start len)
       (setq ret
-           (let ((rest eword-lexical-analyzer)
+           (let ((rest mime-header-lexical-analyzer)
                  func r)
              (while (and (setq func (car rest))
                          (null
index f7111c1..71ebd75 100644 (file)
 ;;; @ variables
 ;;;
 
-(defgroup eword-encode nil
-  "Encoded-word encoding"
-  :group 'mime)
-
-(defcustom eword-field-encoding-method-alist
-  '(("X-Nsubject" . iso-2022-jp-2)
-    ("Newsgroups" . nil)
-    ("Message-ID" . nil)
-    (t            . mime)
-    )
-  "*Alist to specify field encoding method.
-Its key is field-name, value is encoding method.
-
-If method is `mime', this field will be encoded into MIME format.
-
-If method is a MIME-charset, this field will be encoded as the charset
-when it must be convert into network-code.
-
-If method is `default-mime-charset', this field will be encoded as
-variable `default-mime-charset' when it must be convert into
-network-code.
-
-If method is nil, this field will not be encoded."
-  :group 'eword-encode
-  :type '(repeat (cons (choice :tag "Field"
-                              (string :tag "Name")
-                              (const :tag "Default" t))
-                      (choice :tag "Method"
-                              (const :tag "MIME conversion" mime)
-                              (symbol :tag "non-MIME conversion")
-                              (const :tag "no-conversion" nil)))))
-
-(defvar eword-charset-encoding-alist
+;; User options are defined in mime-def.el.
+
+(defvar mime-header-charset-encoding-alist
   '((us-ascii          . nil)
     (iso-8859-1                . "Q")
     (iso-8859-2                . "Q")
@@ -89,6 +59,8 @@ If method is nil, this field will not be encoded."
     (utf-8             . "B")
     ))
 
+(defvar mime-header-default-charset-encoding "Q")
+
 
 ;;; @ encoded-text encoder
 ;;;
@@ -187,10 +159,10 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
 (defun ew-find-charset-rule (charsets)
   (if charsets
       (let* ((charset (find-mime-charset-by-charsets charsets))
-            (encoding (cdr (or (assq charset eword-charset-encoding-alist)
-                               '(nil . "Q")))))
-       (list charset encoding)
-       )))
+            (encoding
+             (cdr (or (assq charset mime-header-charset-encoding-alist)
+                      (cons charset mime-header-default-charset-encoding)))))
+       (list charset encoding))))
 
 (defun tm-eword::words-to-ruled-words (wl &optional mode)
   (mapcar (function
@@ -401,7 +373,7 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
                   (append dest
                           (list
                            (let ((ret (ew-find-charset-rule
-                                       (find-non-ascii-charset-string str))))
+                                       (find-charset-string str))))
                              (make-ew-rword
                               str (car ret)(nth 1 ret) 'phrase)
                              )
@@ -464,7 +436,8 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
                     (if (or (eq pname 'spaces)
                             (eq pname 'comment))
                         (nconc dest (list (list (cdr token) nil nil)))
-                      (nconc (butlast dest)
+                      (nconc (nreverse (cdr (reverse dest)))
+                             ;; (butlast dest)
                              (list
                               (list (concat (car (car (last dest)))
                                             (cdr token))
@@ -575,10 +548,8 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
 ;;; @ application interfaces
 ;;;
 
-(defcustom eword-encode-default-start-column 10
-  "Default start column if it is omitted."
-  :group 'eword-encode
-  :type 'integer)
+(defvar eword-encode-default-start-column 10
+  "Default start column if it is omitted.")
 
 (defun eword-encode-string (string &optional column mode)
   "Encode STRING as encoded-words, and return the result.
@@ -621,7 +592,7 @@ Optional argument COLUMN is start-position of the field."
        (or column eword-encode-default-start-column)
        (eword-encode-split-string string 'text))))
 
-(defun eword-encode-field-body (field-body field-name)
+(defun mime-encode-field-body (field-body field-name)
   "Encode FIELD-BODY as FIELD-NAME, and return the result.
 A lexical token includes non-ASCII character is encoded as MIME
 encoded-word.  ASCII token is not encoded."
@@ -640,27 +611,25 @@ encoded-word.  ASCII token is not encoded."
                     Resent-Sender To Resent-To
                     Cc Resent-Cc Bcc Resent-Bcc
                     Dcc))
-            (eword-encode-address-list field-body start)
-            )
+            (eword-encode-address-list field-body start))
            ((eq field-name 'In-Reply-To)
-            (eword-encode-in-reply-to field-body start)
-            )
+            (eword-encode-in-reply-to field-body start))
            ((memq field-name '(Mime-Version User-Agent))
-            (eword-encode-structured-field-body field-body start)
-            )
+            (eword-encode-structured-field-body field-body start))
            (t
-            (eword-encode-unstructured-field-body field-body start)
-            ))
-      )))
+            (eword-encode-unstructured-field-body field-body start))))))
+(defalias 'eword-encode-field-body 'mime-encode-field-body)
+(make-obsolete 'eword-encode-field-body 'mime-encode-field-body)
 
 (defun eword-in-subject-p ()
   (let ((str (std11-field-body "Subject")))
     (if (and str (string-match eword-encoded-word-regexp str))
        str)))
+(make-obsolete 'eword-in-subject-p "Don't use it.")
 
 (defsubst eword-find-field-encoding-method (field-name)
   (setq field-name (downcase field-name))
-  (let ((alist eword-field-encoding-method-alist))
+  (let ((alist mime-field-encoding-method-alist))
     (catch 'found
       (while alist
        (let* ((pair (car alist))
@@ -670,13 +639,14 @@ encoded-word.  ASCII token is not encoded."
              (throw 'found (cdr pair))
            ))
        (setq alist (cdr alist)))
-      (cdr (assq t eword-field-encoding-method-alist))
+      (cdr (assq t mime-field-encoding-method-alist))
       )))
 
-(defun eword-encode-header (&optional code-conversion)
+;;;###autoload
+(defun mime-encode-header-in-buffer (&optional code-conversion)
   "Encode header fields to network representation, such as MIME encoded-word.
 
-It refer variable `eword-field-encoding-method-alist'."
+It refer variable `mime-field-encoding-method-alist'."
   (interactive "*")
   (save-excursion
     (save-restriction
@@ -688,7 +658,7 @@ It refer variable `eword-field-encoding-method-alist'."
          (setq bbeg (match-end 0)
                field-name (buffer-substring (match-beginning 0) (1- bbeg))
                end (std11-field-end))
-         (and (find-non-ascii-charset-region bbeg end)
+         (and (delq 'ascii (find-charset-region bbeg end))
               (let ((method (eword-find-field-encoding-method
                              (downcase field-name))))
                 (cond ((eq method 'mime)
@@ -696,9 +666,8 @@ It refer variable `eword-field-encoding-method-alist'."
                               (buffer-substring-no-properties bbeg end)
                               ))
                          (delete-region bbeg end)
-                         (insert (eword-encode-field-body field-body
-                                                          field-name))
-                         ))
+                         (insert (mime-encode-field-body field-body
+                                                         field-name))))
                       (code-conversion
                        (let ((cs
                               (or (mime-charset-to-coding-system
@@ -709,6 +678,8 @@ It refer variable `eword-field-encoding-method-alist'."
                 ))
          ))
       )))
+(defalias 'eword-encode-header 'mime-encode-header-in-buffer)
+(make-obsolete 'eword-encode-header 'mime-encode-header-in-buffer)
 
 
 ;;; @ end
index 1da89bc..dfe1ccd 100644 (file)
   :type '(repeat string))
 
 
+;;; @@ for encoded-word
+;;;
+
+(defgroup mime-header nil
+  "Header representation, specially encoded-word"
+  :group 'mime)
+
+;;; @@@ decoding
+;;;
+
+(defcustom mime-field-decoding-max-size 1000
+  "*Max size to decode header field."
+  :group 'mime-header
+  :type '(choice (integer :tag "Limit (bytes)")
+                (const :tag "Don't limit" nil)))
+
+;;; @@@ encoding
+;;;
+
+(defcustom mime-field-encoding-method-alist
+  '(("X-Nsubject" . iso-2022-jp-2)
+    ("Newsgroups" . nil)
+    ("Message-ID" . nil)
+    (t            . mime)
+    )
+  "*Alist to specify field encoding method.
+Its key is field-name, value is encoding method.
+
+If method is `mime', this field will be encoded into MIME format.
+
+If method is a MIME-charset, this field will be encoded as the charset
+when it must be convert into network-code.
+
+If method is `default-mime-charset', this field will be encoded as
+variable `default-mime-charset' when it must be convert into
+network-code.
+
+If method is nil, this field will not be encoded."
+  :group 'mime-header
+  :type '(repeat (cons (choice :tag "Field"
+                              (string :tag "Name")
+                              (const :tag "Default" t))
+                      (choice :tag "Method"
+                              (const :tag "MIME conversion" mime)
+                              (symbol :tag "non-MIME conversion")
+                              (const :tag "no-conversion" nil)))))
+
+
 ;;; @ required functions
 ;;;
 
index d6d3d23..daa0e11 100644 (file)
@@ -25,6 +25,7 @@
 ;;; Code:
 
 (require 'mime-def)
+(require 'luna)
 (require 'std11)
 
 (autoload 'mime-entity-body-buffer "mime")
diff --git a/mime.el b/mime.el
index a3da250..a2ac434 100644 (file)
--- a/mime.el
+++ b/mime.el
 
 (eval-and-compile
 
+(autoload 'mime-encode-header-in-buffer "eword-encode"
+  "Encode header fields to network representation, such as MIME encoded-word.")
+
 (autoload 'eword-encode-header "eword-encode"
   "Encode header fields to network representation, such as MIME encoded-word.")
+(make-obsolete 'eword-encode-header 'mime-encode-header-in-buffer)
 
 (autoload 'mime-parse-Content-Type "mime-parse"
   "Parse STRING as field-body of Content-Type field.")
@@ -65,6 +69,10 @@ current-buffer, and return it.")
 
 )
 
+(autoload 'mime-encode-field-body "eword-encode"
+  "Encode FIELD-BODY as FIELD-NAME, and return the result.")
+
+
 ;;; @ Entity Representation and Implementation
 ;;;
 
@@ -88,10 +96,12 @@ representation-type."
 ;;;
 
 (defun mime-entity-children (entity)
+  "Return list of entities included in the ENTITY."
   (or (mime-entity-children-internal entity)
       (luna-send entity 'mime-entity-children entity)))
 
 (defun mime-entity-node-id (entity)
+  "Return node-id of ENTITY."
   (mime-entity-node-id-internal entity))
 
 (defun mime-entity-number (entity)
@@ -264,6 +274,7 @@ If MESSAGE is specified, it is regarded as root entity."
 ;; (make-obsolete 'mime-fetch-field 'mime-entity-fetch-field)
 
 (defun mime-entity-content-type (entity)
+  "Return content-type of ENTITY."
   (or (mime-entity-content-type-internal entity)
       (let ((ret (mime-entity-fetch-field entity "Content-Type")))
        (if ret
@@ -272,6 +283,7 @@ If MESSAGE is specified, it is regarded as root entity."
          ))))
 
 (defun mime-entity-content-disposition (entity)
+  "Return content-disposition of ENTITY."
   (or (mime-entity-content-disposition-internal entity)
       (let ((ret (mime-entity-fetch-field entity "Content-Disposition")))
        (if ret
@@ -280,6 +292,10 @@ If MESSAGE is specified, it is regarded as root entity."
          ))))
 
 (defun mime-entity-encoding (entity &optional default-encoding)
+  "Return content-transfer-encoding of ENTITY.
+If the ENTITY does not have Content-Transfer-Encoding field, this
+function returns DEFAULT-ENCODING.  If it is nil, \"7bit\" is used as
+default value."
   (or (mime-entity-encoding-internal entity)
       (let ((ret (mime-entity-fetch-field entity "Content-Transfer-Encoding")))
        (mime-entity-set-encoding-internal
diff --git a/mmdbuffer.el b/mmdbuffer.el
deleted file mode 100644 (file)
index 5a1ae20..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-;;; mmdual.el --- MIME entity module for dual buffers
-
-;; Copyright (C) 1998,1999,2000 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <tomo@m17n.org>
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of FLIM (Faithful Library about Internet Message).
-
-;; 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 'mime)
-
-(eval-and-compile
-  (luna-define-class mime-dual-entity (mime-entity)
-                    (header-buffer
-                     body-buffer))
-
-  (luna-define-internal-accessors 'mime-dual-entity)
-  )
-
-(luna-define-method initialize-instance :after ((entity mime-dual-entity)
-                                               &rest init-args)
-  (let ((buf (mime-dual-entity-header-buffer-internal entity)))
-    (if buf
-       (with-current-buffer buf
-         (or (mime-entity-content-type-internal entity)
-             (mime-entity-set-content-type-internal
-              entity
-              (let ((str (std11-fetch-field "Content-Type")))
-                (if str
-                    (mime-parse-Content-Type str)
-                  )))))))
-  entity)
-
-(luna-define-method mime-entity-name ((entity mime-dual-entity))
-  (buffer-name (mime-dual-entity-header-buffer-internal entity))
-  )
-
-
-(luna-define-method mime-insert-header ((entity mime-dual-entity)
-                                       &optional invisible-fields
-                                       visible-fields)
-  (let* ((buf (mime-dual-entity-header-buffer-internal entity))
-        header-start header-end)
-    (with-current-buffer buf
-      (setq header-start (point-min)
-           header-end (point-max)))
-    (mime-insert-header-from-buffer buf header-start header-end
-                                   invisible-fields visible-fields)
-    ))
-
-(luna-define-method mime-entity-content ((entity mime-dual-entity))
-  (mime-decode-string
-   (with-current-buffer (mime-dual-entity-body-buffer-internal entity)
-     (buffer-string))
-   (mime-entity-encoding entity)))
-
-(luna-define-method mime-entity-fetch-field :around
-  ((entity mime-dual-entity) field-name)
-  (or (luna-call-next-method)
-      (with-current-buffer (mime-dual-entity-header-buffer-internal entity)
-       (let ((ret (std11-fetch-field field-name)))
-         (when ret
-           (or (symbolp field-name)
-               (setq field-name
-                     (intern (capitalize (capitalize field-name)))))
-           (mime-entity-set-original-header-internal
-            entity
-            (put-alist field-name ret
-                       (mime-entity-original-header-internal entity)))
-           ret)))))
-
-(luna-define-method mime-insert-entity-content ((entity mime-dual-entity))
-  (insert
-   (mime-decode-string
-    (with-current-buffer (mime-dual-entity-body-buffer-internal entity)
-      (buffer-substring (point-min)(point-max)))
-    (mime-entity-encoding entity))))
-
-(luna-define-method mime-write-entity-content ((entity mime-dual-entity)
-                                              filename)
-  (with-current-buffer (mime-dual-entity-body-buffer-internal entity)
-    (mime-write-decoded-region (point-min)
-                              (point-max)
-                              filename
-                              (or (mime-entity-encoding entity) "7bit"))))
-
-(luna-define-method mime-insert-entity ((entity mime-dual-entity))
-  (let (buf)
-    (setq buf (mime-dual-entity-header-buffer-internal entity))
-    (when buf
-      (insert-buffer (mime-dual-entity-header-buffer-internal entity))
-      (setq buf (mime-dual-entity-body-buffer-internal entity))
-      (when buf
-       (insert "\n")
-       (insert-buffer buf)))))
-
-(luna-define-method mime-write-entity ((entity mime-dual-entity) filename)
-  (let (buf)
-    (setq buf (mime-dual-entity-header-buffer-internal entity))
-    (if (null buf)
-       (error "No header buffer.")
-      (with-current-buffer buf
-       (write-region-as-raw-text-CRLF
-        (point-min)(point-max) filename))
-      (setq buf (mime-dual-entity-body-buffer-internal entity))
-      (when buf
-       (with-temp-buffer
-         (insert "\n")
-         (write-region-as-raw-text-CRLF
-          (point-min)(point-max)
-          filename 'append))
-       (with-current-buffer buf
-         (write-region-as-raw-text-CRLF
-          (point-min)(point-max)
-          filename 'append))))))
-
-(luna-define-method mime-write-entity-body ((entity mime-dual-entity) filename)
-  (with-current-buffer (mime-dual-entity-body-buffer-internal entity)
-    (write-region-as-binary (point-min)(point-max)
-                           filename)))
-
-
-;;; @ buffer
-;;;
-
-(luna-define-method mime-entity-header-buffer ((entity mime-dual-entity))
-  (mime-dual-entity-header-buffer-internal entity))
-
-(luna-define-method mime-entity-body-buffer ((entity mime-dual-entity))
-  (mime-dual-entity-body-buffer-internal entity))
-
-(luna-define-method mime-entity-buffer ((entity mime-dual-entity))
-  (message "mime-dual-entity does not have mime-entity-buffer.")
-  nil)
-
-(luna-define-method mime-entity-body-start-point ((entity mime-dual-entity))
-  (with-current-buffer (mime-entity-body-buffer entity)
-    (point-min)))
-
-(luna-define-method mime-entity-body-end-point ((entity mime-dual-entity))
-  (with-current-buffer (mime-entity-body-buffer entity)
-    (point-max)))
-
-(luna-define-method mime-entity-point-min ((entity mime-dual-entity))
-  (message "mime-dual-entity does not have mime-entity-point-min.")
-  nil)
-
-(luna-define-method mime-entity-point-max ((entity mime-dual-entity))
-  (message "mime-dual-entity does not have mime-entity-point-max.")
-  nil)
-
-(luna-define-method mime-goto-header-start-point ((entity mime-dual-entity))
-  (set-buffer (mime-dual-entity-header-buffer-internal entity))
-  (goto-char (point-min)))
-
-(luna-define-method mime-goto-body-start-point ((entity mime-dual-entity))
-  (set-buffer (mime-dual-entity-body-buffer-internal entity))
-  (goto-char (point-min)))
-
-(luna-define-method mime-goto-body-end-point ((entity mime-dual-entity))
-  (set-buffer (mime-dual-entity-body-buffer-internal entity))
-  (goto-char (point-max)))
-
-
-;;; @ end
-;;;
-
-(provide 'mmdual)
-
-;;; mmdual.el ends here
diff --git a/qmtp.el b/qmtp.el
index feab66a..f1f3104 100644 (file)
--- a/qmtp.el
+++ b/qmtp.el
@@ -61,6 +61,7 @@ called from `qmtp-via-qmtp' with arguments SENDER and RECIPIENTS.")
   :type 'integer
   :group 'qmtp)
 
+;;;###autoload
 (defvar qmtp-open-connection-function (function open-network-stream))
 
 (defvar qmtp-error-response-alist
diff --git a/smtp.el b/smtp.el
index e389660..c63c81b 100644 (file)
--- a/smtp.el
+++ b/smtp.el
@@ -112,7 +112,7 @@ don't define this value."
   :group 'smtp-extensions)
 
 (defvar sasl-mechanisms)
-
+;;;###autoload
 (defvar smtp-open-connection-function (function open-network-stream))
 
 (defvar smtp-read-point nil)