Mercurial > hg > xemacs-beta
comparison lisp/vm/vm-misc.el @ 118:7d55a9ba150c r20-1b11
Import from CVS: tag r20-1b11
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:24:17 +0200 |
parents | 8619ce7e4c50 |
children | cca96a509cfe |
comparison
equal
deleted
inserted
replaced
117:578fd4947a72 | 118:7d55a9ba150c |
---|---|
90 (not (string= s ""))) | 90 (not (string= s ""))) |
91 (setq list (cons s list))) | 91 (setq list (cons s list))) |
92 (nreverse list)) ; jwz: fixed order | 92 (nreverse list)) ; jwz: fixed order |
93 (and work-buffer (kill-buffer work-buffer))))))) | 93 (and work-buffer (kill-buffer work-buffer))))))) |
94 | 94 |
95 (defun vm-parse-structured-header (string &optional sepchar keep-quotes) | |
96 (if (null string) | |
97 () | |
98 (let ((work-buffer nil)) | |
99 (save-excursion | |
100 (unwind-protect | |
101 (let ((list nil) | |
102 (nonspecials "^\"\\( \t\n\r\f") | |
103 start s char sp+sepchar) | |
104 (if sepchar | |
105 (setq nonspecials (concat nonspecials (list sepchar)) | |
106 sp+sepchar (concat "\t\f\n\r " (list sepchar)))) | |
107 (setq work-buffer (generate-new-buffer "*vm-work*")) | |
108 (buffer-disable-undo work-buffer) | |
109 (set-buffer work-buffer) | |
110 (insert string) | |
111 (goto-char (point-min)) | |
112 (skip-chars-forward "\t\f\n\r ") | |
113 (setq start (point)) | |
114 (while (not (eobp)) | |
115 (skip-chars-forward nonspecials) | |
116 (setq char (following-char)) | |
117 (cond ((looking-at "[ \t\n\r\f]") | |
118 (delete-char 1)) | |
119 ((= char ?\\) | |
120 (forward-char 1) | |
121 (if (not (eobp)) | |
122 (forward-char 1))) | |
123 ((and sepchar (= char sepchar)) | |
124 (setq s (buffer-substring start (point))) | |
125 (if (or (null (string-match "^[\t\f\n\r ]+$" s)) | |
126 (not (string= s ""))) | |
127 (setq list (cons s list))) | |
128 (skip-chars-forward sp+sepchar) | |
129 (setq start (point))) | |
130 ((looking-at " \t\n\r\f") | |
131 (skip-chars-forward " \t\n\r\f")) | |
132 ((= char ?\") | |
133 (let ((done nil)) | |
134 (if keep-quotes | |
135 (forward-char 1) | |
136 (delete-char 1)) | |
137 (while (not done) | |
138 (if (null (re-search-forward "[\\\"]" nil t)) | |
139 (setq done t) | |
140 (setq char (char-after (1- (point)))) | |
141 (cond ((char-equal char ?\\) | |
142 (delete-char -1) | |
143 (if (eobp) | |
144 (setq done t) | |
145 (forward-char 1))) | |
146 (t (if (not keep-quotes) | |
147 (delete-char -1)) | |
148 (setq done t))))))) | |
149 ((= char ?\() | |
150 (let ((done nil) | |
151 (pos (point)) | |
152 (parens 1)) | |
153 (forward-char 1) | |
154 (while (not done) | |
155 (if (null (re-search-forward "[\\()]" nil t)) | |
156 (setq done t) | |
157 (setq char (char-after (1- (point)))) | |
158 (cond ((char-equal char ?\\) | |
159 (if (eobp) | |
160 (setq done t) | |
161 (forward-char 1))) | |
162 ((char-equal char ?\() | |
163 (setq parens (1+ parens))) | |
164 (t | |
165 (setq parens (1- parens) | |
166 done (zerop parens)))))) | |
167 (delete-region pos (point)))))) | |
168 (setq s (buffer-substring start (point))) | |
169 (if (and (null (string-match "^[\t\f\n\r ]+$" s)) | |
170 (not (string= s ""))) | |
171 (setq list (cons s list))) | |
172 (nreverse list)) | |
173 (and work-buffer (kill-buffer work-buffer))))))) | |
174 | |
95 (defun vm-write-string (where string) | 175 (defun vm-write-string (where string) |
96 (if (bufferp where) | 176 (if (bufferp where) |
97 (vm-save-buffer-excursion | 177 (vm-save-buffer-excursion |
98 (set-buffer where) | 178 (set-buffer where) |
99 (goto-char (point-max)) | 179 (goto-char (point-max)) |
433 (if (equal (aref vect 5) "") | 513 (if (equal (aref vect 5) "") |
434 (aset vect 5 (vm-current-time-zone))) | 514 (aset vect 5 (vm-current-time-zone))) |
435 ;; save this work so we won't have to do it again | 515 ;; save this work so we won't have to do it again |
436 (setq vm-sortable-date-alist | 516 (setq vm-sortable-date-alist |
437 (cons (cons string | 517 (cons (cons string |
438 (timezone-make-date-sortable | 518 (condition-case nil |
439 (format "%s %s %s %s %s" | 519 (timezone-make-date-sortable |
440 (aref vect 1) | 520 (format "%s %s %s %s %s" |
441 (aref vect 2) | 521 (aref vect 1) |
442 (aref vect 3) | 522 (aref vect 2) |
443 (aref vect 4) | 523 (aref vect 3) |
444 (aref vect 5)))) | 524 (aref vect 4) |
525 (aref vect 5))) | |
526 (error "1970010100:00:00"))) | |
445 vm-sortable-date-alist)) | 527 vm-sortable-date-alist)) |
446 ;; return result | 528 ;; return result |
447 (cdr (car vm-sortable-date-alist))))) | 529 (cdr (car vm-sortable-date-alist))))) |
448 | 530 |
449 (defun vm-current-time-zone () | 531 (defun vm-current-time-zone () |