comparison lisp/vm/vm-summary.el @ 24:4103f0995bd7 r19-15b95

Import from CVS: tag r19-15b95
author cvs
date Mon, 13 Aug 2007 08:51:03 +0200
parents 859a2309aef8
children 441bb1e64a06
comparison
equal deleted inserted replaced
23:0edd3412f124 24:4103f0995bd7
293 ((fboundp 'make-extent) 293 ((fboundp 'make-extent)
294 (if (and vm-summary-overlay (extent-end-position vm-summary-overlay)) 294 (if (and vm-summary-overlay (extent-end-position vm-summary-overlay))
295 (set-extent-endpoints vm-summary-overlay start end) 295 (set-extent-endpoints vm-summary-overlay start end)
296 (setq vm-summary-overlay (make-extent start end)) 296 (setq vm-summary-overlay (make-extent start end))
297 ;; the reason this isn't needed under FSF Emacs is 297 ;; the reason this isn't needed under FSF Emacs is
298 ;; that insert-before-marker also inserts before 298 ;; that insert-before-markers also inserts before
299 ;; overlays! so a summary update of an entry just 299 ;; overlays! so a summary update of an entry just
300 ;; before this overlay in the summary buffer won't 300 ;; before this overlay in the summary buffer won't
301 ;; leak into the overlay, but it _will_ leak into an 301 ;; leak into the overlay, but it _will_ leak into an
302 ;; XEmacs extent. 302 ;; XEmacs extent.
303 (set-extent-property vm-summary-overlay 'start-open t) 303 (set-extent-property vm-summary-overlay 'start-open t)
325 (insert tokens) 325 (insert tokens)
326 (let (token) 326 (let (token)
327 (while tokens 327 (while tokens
328 (setq token (car tokens)) 328 (setq token (car tokens))
329 (cond ((stringp token) 329 (cond ((stringp token)
330 (insert token)) 330 (if vm-display-using-mime
331 (insert (vm-decode-mime-encoded-words-in-string token))
332 (insert token)))
331 ((eq token 'number) 333 ((eq token 'number)
332 (insert (vm-padded-number-of message))) 334 (insert (vm-padded-number-of message)))
333 ((eq token 'mark) 335 ((eq token 'mark)
334 (insert (vm-su-mark message))) 336 (insert (vm-su-mark message)))
335 ((eq token 'thread-indent) 337 ((eq token 'thread-indent)
442 ((= conv-spec ?*) 444 ((= conv-spec ?*)
443 (if tokenize 445 (if tokenize
444 (setq token ''mark) 446 (setq token ''mark)
445 (setq sexp (cons (list 'vm-su-mark 447 (setq sexp (cons (list 'vm-su-mark
446 'vm-su-message) sexp))))) 448 'vm-su-message) sexp)))))
449 (cond ((and (not token) vm-display-using-mime)
450 (setcar sexp
451 (list 'vm-decode-mime-encoded-words-in-string
452 (car sexp)))))
447 (cond ((and (not token) (match-beginning 1)) 453 (cond ((and (not token) (match-beginning 1))
448 (setcar sexp 454 (setcar sexp
449 (list 'vm-left-justify-string (car sexp) 455 (list 'vm-left-justify-string (car sexp)
450 (string-to-int 456 (string-to-int
451 (substring format 457 (substring format
463 (list 'vm-truncate-string (car sexp) 469 (list 'vm-truncate-string (car sexp)
464 (string-to-int 470 (string-to-int
465 (substring format 471 (substring format
466 (match-beginning 4) 472 (match-beginning 4)
467 (match-end 4))))))) 473 (match-end 4)))))))
474 (cond ((and (not token) vm-display-using-mime)
475 (setcar sexp
476 (list 'vm-reencode-mime-encoded-words-in-string
477 (car sexp)))))
468 (setq sexp-fmt 478 (setq sexp-fmt
469 (cons (if token "" "%s") 479 (cons (if token "" "%s")
470 (cons (substring format 480 (cons (substring format
471 last-match-end 481 last-match-end
472 (match-beginning 0)) 482 (match-beginning 0))
525 (if (>= (length string) width) 535 (if (>= (length string) width)
526 string 536 string
527 (concat (make-string (- width (length string)) ?\ ) string))) 537 (concat (make-string (- width (length string)) ?\ ) string)))
528 538
529 (defun vm-truncate-string (string width) 539 (defun vm-truncate-string (string width)
530 (cond ((<= (length string) width) 540 (cond
541 ;; doesn't work because the width of wide chars such as the Kanji
542 ;; glyphs as not even multiples of the default face's font width.
543 ;; ((fboundp 'char-width)
544 ;; (let ((i 0)
545 ;; (lim (length string))
546 ;; (total 0))
547 ;; (while (and (< i lim) (<= total width))
548 ;; (setq total (+ total (char-width (aref string i)))
549 ;; i (1+ i)))
550 ;; (if (<= total width)
551 ;; string
552 ;; (substring string 0 (1- i)))))
553 ((<= (length string) width)
531 string) 554 string)
532 ((< width 0) 555 ((< width 0)
533 (substring string width)) 556 (substring string width))
534 (t 557 (t
535 (substring string 0 width)))) 558 (substring string 0 width))))
809 from (or (nth 1 pair) from) 832 from (or (nth 1 pair) from)
810 full-name (or full-name (nth 0 pair) from))) 833 full-name (or full-name (nth 0 pair) from)))
811 (if (string-match "\\`\"\\([^\"]+\\)\"\\'" full-name) 834 (if (string-match "\\`\"\\([^\"]+\\)\"\\'" full-name)
812 (setq full-name 835 (setq full-name
813 (substring full-name (match-beginning 1) (match-end 1)))) 836 (substring full-name (match-beginning 1) (match-end 1))))
814 (setq full-name (vm-decode-mime-encoded-words-maybe full-name))
815 (while (setq i (string-match "\n" full-name i)) 837 (while (setq i (string-match "\n" full-name i))
816 (aset full-name i ?\ )) 838 (aset full-name i ?\ ))
817 (vm-set-full-name-of m full-name) 839 (vm-set-full-name-of m full-name)
818 (vm-set-from-of m from))) 840 (vm-set-from-of m from)))
819 841
887 (car list))) 909 (car list)))
888 ;; If double quoted are around the full name, fish the name out. 910 ;; If double quoted are around the full name, fish the name out.
889 (if (string-match "\\`\"\\([^\"]+\\)\"\\'" full-name) 911 (if (string-match "\\`\"\\([^\"]+\\)\"\\'" full-name)
890 (setq full-name 912 (setq full-name
891 (substring full-name (match-beginning 1) (match-end 1)))) 913 (substring full-name (match-beginning 1) (match-end 1))))
892 (setq full-name (vm-decode-mime-encoded-words-maybe full-name))
893 (while (setq i (string-match "\n" full-name i)) 914 (while (setq i (string-match "\n" full-name i))
894 (aset full-name i ?\ )) 915 (aset full-name i ?\ ))
895 (setq names (cons full-name names)) 916 (setq names (cons full-name names))
896 (setq list (cdr list))) 917 (setq list (cdr list)))
897 (setq names (nreverse names)) ; added by jwz for fixed vm-parse-addresses 918 (setq names (nreverse names)) ; added by jwz for fixed vm-parse-addresses
941 (or (vm-subject-of m) 962 (or (vm-subject-of m)
942 (vm-set-subject-of 963 (vm-set-subject-of
943 m 964 m
944 (let ((subject (or (vm-get-header-contents m "Subject:" " ") "")) 965 (let ((subject (or (vm-get-header-contents m "Subject:" " ") ""))
945 (i nil)) 966 (i nil))
946 (setq subject (vm-decode-mime-encoded-words-maybe subject))
947 (while (setq i (string-match "\n" subject i)) 967 (while (setq i (string-match "\n" subject i))
948 (aset subject i ?\ )) 968 (aset subject i ?\ ))
949 subject )))) 969 subject ))))
950 970
951 (defun vm-su-summary (m) 971 (defun vm-su-summary (m)