;;; std11.el --- STD 11 functions for GNU Emacs
-;; Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc.
+;; Copyright (C) 1995,96,97,98,99,2000,01,02 Free Software Foundation, Inc.
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; Author: MORIOKA Tomohiko <tomo@m17n.org>
;; Keywords: mail, news, RFC 822, STD 11
;; This file is part of FLIM (Faithful Library about Internet Message).
;;; Code:
-(or (fboundp 'buffer-substring-no-properties)
- (require 'poe))
-
-(require 'custom)
+(require 'custom) ; std11-lexical-analyzer
;;; @ fetch
(if (re-search-forward "^$" bound t)
(goto-char (1- (match-beginning 0)))
(end-of-line)
- ))
- (point)
- )
+ (point))))
;;;###autoload
(defun std11-fetch-field (name)
)
;; (defconst std11-spaces-regexp
;; (eval-when-compile (concat "[" std11-space-char-list "]+")))
+
+(defconst std11-non-atom-regexp
+ (eval-when-compile
+ (concat "[" std11-special-char-list std11-space-char-list "]")))
+
(defconst std11-atom-regexp
(eval-when-compile
(concat "[^" std11-special-char-list std11-space-char-list "]+")))
))
(defun std11-analyze-atom (string start)
- (if (and (string-match std11-atom-regexp string start)
- (= (match-beginning 0) start))
- (let ((end (match-end 0)))
- (cons (cons 'atom (substring string start end))
- ;;(substring string end)
- end)
- )))
+ (if (string-match std11-non-atom-regexp string start)
+ (if (> (match-beginning 0) start)
+ (cons (cons 'atom (substring string start (match-beginning 0)))
+ (match-beginning 0))
+ nil)
+ (cons (cons 'atom (substring string start))
+ (length string)))
+ ;; (if (and (string-match std11-atom-regexp string start)
+ ;; (= (match-beginning 0) start))
+ ;; (let ((end (match-end 0)))
+ ;; (cons (cons 'atom (substring string start end))
+ ;; ;;(substring string end)
+ ;; end)
+ ;; ))
+ )
(defun std11-check-enclosure (string open close &optional recursive from)
(let ((len (length string))
(null (setq r (funcall func string start))))
(setq rest (cdr rest)))
(or r
- (list (cons 'error (substring string start)) (1+ len)))
+ (cons (cons 'error (substring string start)) (1+ len)))
))
(setq dest (cons (car ret) dest)
start (cdr ret))
(setq token (car lal))
(or (std11-ignored-token-p token)
(if (and (setq token-value (cdr token))
- (find-non-ascii-charset-string token-value)
- )
+ (delq 'ascii (find-charset-string token-value)))
(setq token nil)
)))
(setq lal (cdr lal))
"Return string of address part from parsed ADDRESS of RFC 822."
(cond ((eq (car address) 'group)
(mapconcat (function std11-address-string)
- (car (cdr address))
+ (nth 2 address)
", ")
)
((eq (car address) 'mailbox)