comparison lisp/vm/vm-startup.el @ 100:4be1180a9e89 r20-1b2

Import from CVS: tag r20-1b2
author cvs
date Mon, 13 Aug 2007 09:15:11 +0200
parents 0d2f883870bc
children a145efe76779
comparison
equal deleted inserted replaced
99:2d83cbd90d8d 100:4be1180a9e89
59 (let ((default-directory 59 (let ((default-directory
60 (or (and vm-folder-directory 60 (or (and vm-folder-directory
61 (expand-file-name vm-folder-directory)) 61 (expand-file-name vm-folder-directory))
62 default-directory)) 62 default-directory))
63 (inhibit-local-variables t) 63 (inhibit-local-variables t)
64 (enable-local-variables nil)) 64 (enable-local-variables nil)
65 ;; for XEmacs/Mule
66 (overriding-file-coding-system 'no-conversion))
65 (vm-unsaved-message "Reading %s..." file) 67 (vm-unsaved-message "Reading %s..." file)
66 (prog1 (find-file-noselect file) 68 (prog1 (find-file-noselect file)
67 ;; update folder history 69 ;; update folder history
68 (let ((item (or folder vm-primary-inbox))) 70 (let ((item (or folder vm-primary-inbox)))
69 (if (not (equal item (car vm-folder-history))) 71 (if (not (equal item (car vm-folder-history)))
70 (setq vm-folder-history 72 (setq vm-folder-history
71 (cons item vm-folder-history)))) 73 (cons item vm-folder-history))))
72 (vm-unsaved-message "Reading %s... done" file)))))))) 74 (vm-unsaved-message "Reading %s... done" file))))))))
73 (set-buffer folder-buffer) 75 (set-buffer folder-buffer)
76 ;; for XEmacs/MULE
77 ;;
78 ;; If the file coding system is not a no-conversion variant,
79 ;; make it so by encoding all the text, then setting
80 ;; the file coding system and decoding it.
81 ;; This is only possible if a file is visited and vm-mode
82 ;; is run on it afterwards.
83 (defvar file-coding-system)
84 (if (and (fboundp 'get-coding-system)
85 (not (eq file-coding-system
86 (get-coding-system 'no-conversion-unix)))
87 (not (eq file-coding-system
88 (get-coding-system 'no-conversion-dos)))
89 (not (eq file-coding-system
90 (get-coding-system 'no-conversion-mac)))
91 (not (eq file-coding-system
92 (get-coding-system 'binary))))
93 (progn
94 (encode-coding-region (point-min) (point-max) file-coding-system)
95 (set-file-coding-system 'no-conversion nil)
96 (decode-coding-region (point-min) (point-max) file-coding-system)))
74 (vm-check-for-killed-summary) 97 (vm-check-for-killed-summary)
75 (vm-check-for-killed-presentation) 98 (vm-check-for-killed-presentation)
76 ;; If the buffer's not modified then we know that there can be no 99 ;; If the buffer's not modified then we know that there can be no
77 ;; messages in the folder that are not on disk. 100 ;; messages in the folder that are not on disk.
78 (or (buffer-modified-p) (setq vm-messages-not-on-disk 0)) 101 (or (buffer-modified-p) (setq vm-messages-not-on-disk 0))
198 (not vm-block-new-mail) 221 (not vm-block-new-mail)
199 (not vm-folder-read-only)) 222 (not vm-folder-read-only))
200 (progn 223 (progn
201 (vm-unsaved-message "Checking for new mail for %s..." 224 (vm-unsaved-message "Checking for new mail for %s..."
202 (or buffer-file-name (buffer-name))) 225 (or buffer-file-name (buffer-name)))
203 (if (and (vm-get-spooled-mail) (vm-assimilate-new-messages t)) 226 (if (and (vm-get-spooled-mail t) (vm-assimilate-new-messages t))
204 (progn 227 (progn
205 (setq totals-blurb (vm-emit-totals-blurb)) 228 (setq totals-blurb (vm-emit-totals-blurb))
206 (if (vm-thoughtfully-select-message) 229 (if (vm-thoughtfully-select-message)
207 (vm-preview-current-message) 230 (vm-preview-current-message)
208 (vm-update-summary-and-mode-line)))) 231 (vm-update-summary-and-mode-line))))
209 (message totals-blurb))) 232 (message totals-blurb)))
210 233
211 ;; Display copyright and copying info unless 234 ;; Display copyright and copying info unless
212 ;; user says no. 235 ;; user says no.
213 ;; Check this-command so we don't make the user wait if 236 (if (and (interactive-p) (not vm-startup-message-displayed))
214 ;; they call vm non-interactively from some other program.
215 (if (and (not vm-startup-message-displayed)
216 (or (memq this-command '(vm vm-visit-folder))
217 ;; for emacs -f vm
218 (null last-command)))
219 (progn 237 (progn
220 (vm-display-startup-message) 238 (vm-display-startup-message)
221 (if (not (input-pending-p)) 239 (if (not (input-pending-p))
222 (message totals-blurb))))))) 240 (message totals-blurb)))))))
223 241
249 (put 'vm-mode 'mode-class 'special) 267 (put 'vm-mode 'mode-class 'special)
250 268
251 (defun vm-mode (&optional read-only) 269 (defun vm-mode (&optional read-only)
252 "Major mode for reading mail. 270 "Major mode for reading mail.
253 271
254 This is VM 6.13. 272 This is VM 6.15.
255 273
256 Commands: 274 Commands:
257 h - summarize folder contents 275 h - summarize folder contents
258 C-t - toggle threads display 276 C-t - toggle threads display
259 277
417 vm-frame-per-folder 435 vm-frame-per-folder
418 vm-frame-per-summary 436 vm-frame-per-summary
419 vm-highlighted-header-face 437 vm-highlighted-header-face
420 vm-highlighted-header-regexp 438 vm-highlighted-header-regexp
421 vm-honor-page-delimiters 439 vm-honor-page-delimiters
440 vm-image-directory
422 vm-in-reply-to-format 441 vm-in-reply-to-format
423 vm-included-text-attribution-format 442 vm-included-text-attribution-format
424 vm-included-text-discard-header-regexp 443 vm-included-text-discard-header-regexp
425 vm-included-text-headers 444 vm-included-text-headers
426 vm-included-text-prefix 445 vm-included-text-prefix
427 vm-invisible-header-regexp 446 vm-invisible-header-regexp
428 vm-jump-to-new-messages 447 vm-jump-to-new-messages
429 vm-jump-to-unread-messages 448 vm-jump-to-unread-messages
430 vm-keep-crash-boxes 449 vm-keep-crash-boxes
431 vm-keep-sent-messages 450 vm-keep-sent-messages
451 vm-mail-check-interval
432 vm-mail-header-from 452 vm-mail-header-from
433 vm-mail-mode-hook 453 vm-mail-mode-hook
434 vm-make-crash-box-name 454 vm-make-crash-box-name
435 vm-make-spool-file-name 455 vm-make-spool-file-name
436 vm-mime-8bit-composition-charset 456 vm-mime-8bit-composition-charset
442 vm-mime-base64-decoder-program 462 vm-mime-base64-decoder-program
443 vm-mime-base64-decoder-switches 463 vm-mime-base64-decoder-switches
444 vm-mime-base64-encoder-program 464 vm-mime-base64-encoder-program
445 vm-mime-base64-encoder-switches 465 vm-mime-base64-encoder-switches
446 vm-mime-button-face 466 vm-mime-button-face
467 vm-mime-charset-font-alist
468 vm-mime-default-face-charsets
447 vm-mime-digest-discard-header-regexp 469 vm-mime-digest-discard-header-regexp
448 vm-mime-digest-headers 470 vm-mime-digest-headers
449 vm-mime-display-function 471 vm-mime-display-function
450 vm-mime-external-content-types-alist 472 vm-mime-external-content-types-alist
451 vm-mime-internal-content-types 473 vm-mime-internal-content-types
457 vm-move-after-undeleting 479 vm-move-after-undeleting
458 vm-move-messages-physically 480 vm-move-messages-physically
459 vm-mutable-frames 481 vm-mutable-frames
460 vm-mutable-windows 482 vm-mutable-windows
461 vm-netscape-program 483 vm-netscape-program
484 vm-pop-bytes-per-session
485 vm-pop-max-message-size
462 vm-pop-md5-program 486 vm-pop-md5-program
487 vm-pop-messages-per-session
463 vm-popup-menu-on-mouse-3 488 vm-popup-menu-on-mouse-3
464 vm-preferences-file 489 vm-preferences-file
465 vm-preview-lines 490 vm-preview-lines
466 vm-preview-read-messages 491 vm-preview-read-messages
467 vm-primary-inbox 492 vm-primary-inbox
488 vm-select-unread-message-hook 513 vm-select-unread-message-hook
489 vm-send-digest-hook 514 vm-send-digest-hook
490 vm-send-using-mime 515 vm-send-using-mime
491 vm-skip-deleted-messages 516 vm-skip-deleted-messages
492 vm-skip-read-messages 517 vm-skip-read-messages
518 vm-spool-file-suffixes
493 vm-spool-files 519 vm-spool-files
494 vm-spool-file-suffixes
495 vm-startup-with-summary 520 vm-startup-with-summary
496 vm-strip-reply-headers 521 vm-strip-reply-headers
497 vm-summary-arrow 522 vm-summary-arrow
498 vm-summary-format 523 vm-summary-format
499 vm-summary-highlight-face 524 vm-summary-highlight-face
500 vm-summary-mode-hook 525 vm-summary-mode-hook
501 vm-summary-redo-hook 526 vm-summary-redo-hook
502 vm-summary-show-threads 527 vm-summary-show-threads
503 vm-summary-thread-indent-level 528 vm-summary-thread-indent-level
529 vm-tale-is-an-idiot
504 vm-temp-file-directory 530 vm-temp-file-directory
505 vm-tale-is-an-idiot
506 vm-trust-From_-with-Content-Length 531 vm-trust-From_-with-Content-Length
507 vm-undisplay-buffer-hook 532 vm-undisplay-buffer-hook
508 vm-unforwarded-header-regexp 533 vm-unforwarded-header-regexp
509 vm-url-browser 534 vm-url-browser
510 vm-url-search-limit 535 vm-url-search-limit
626 folders. 651 folders.
627 652
628 vm-virtual-mode is not a normal major mode. If you run it, it 653 vm-virtual-mode is not a normal major mode. If you run it, it
629 will not do anything. The entry point to vm-virtual-mode is 654 will not do anything. The entry point to vm-virtual-mode is
630 vm-visit-virtual-folder.") 655 vm-visit-virtual-folder.")
656
657 (defvar scroll-in-place)
631 658
632 (defun vm-visit-virtual-folder (folder-name &optional read-only) 659 (defun vm-visit-virtual-folder (folder-name &optional read-only)
633 (interactive 660 (interactive
634 (let ((last-command last-command) 661 (let ((last-command last-command)
635 (this-command this-command)) 662 (this-command this-command))
659 buffer-read-only t 686 buffer-read-only t
660 vm-folder-read-only read-only 687 vm-folder-read-only read-only
661 vm-label-obarray (make-vector 29 0) 688 vm-label-obarray (make-vector 29 0)
662 vm-virtual-folder-definition 689 vm-virtual-folder-definition
663 (assoc folder-name vm-virtual-folder-alist)) 690 (assoc folder-name vm-virtual-folder-alist))
691 ;; scroll in place messes with scroll-up and this loses
692 (make-local-variable 'scroll-in-place)
693 (setq scroll-in-place nil)
664 (vm-build-virtual-message-list nil) 694 (vm-build-virtual-message-list nil)
665 (use-local-map vm-mode-map) 695 (use-local-map vm-mode-map)
666 (and (vm-menu-support-possible-p) 696 (and (vm-menu-support-possible-p)
667 (vm-menu-install-menus)) 697 (vm-menu-install-menus))
668 (add-hook 'kill-buffer-hook 'vm-garbage-collect-folder) 698 (add-hook 'kill-buffer-hook 'vm-garbage-collect-folder)
848 'vm-frame-per-folder 878 'vm-frame-per-folder
849 'vm-frame-per-summary 879 'vm-frame-per-summary
850 'vm-highlight-url-face 880 'vm-highlight-url-face
851 'vm-highlighted-header-regexp 881 'vm-highlighted-header-regexp
852 'vm-honor-page-delimiters 882 'vm-honor-page-delimiters
883 'vm-image-directory
853 'vm-in-reply-to-format 884 'vm-in-reply-to-format
854 'vm-included-text-attribution-format 885 'vm-included-text-attribution-format
855 'vm-included-text-discard-header-regexp 886 'vm-included-text-discard-header-regexp
856 'vm-included-text-headers 887 'vm-included-text-headers
857 'vm-included-text-prefix 888 'vm-included-text-prefix
863 'vm-keep-sent-messages 894 'vm-keep-sent-messages
864 'vm-mail-header-from 895 'vm-mail-header-from
865 'vm-mail-hook 896 'vm-mail-hook
866 'vm-make-crash-box-name 897 'vm-make-crash-box-name
867 'vm-make-spool-file-name 898 'vm-make-spool-file-name
899 'vm-mail-check-interval
868 'vm-mail-mode-hook 900 'vm-mail-mode-hook
869 'vm-mime-8bit-composition-charset 901 'vm-mime-8bit-composition-charset
870 'vm-mime-8bit-text-transfer-encoding 902 'vm-mime-8bit-text-transfer-encoding
871 'vm-mime-alternative-select-method 903 'vm-mime-alternative-select-method
872 'vm-mime-attachment-auto-type-alist 904 'vm-mime-attachment-auto-type-alist
875 'vm-mime-base64-decoder-program 907 'vm-mime-base64-decoder-program
876 'vm-mime-base64-decoder-switches 908 'vm-mime-base64-decoder-switches
877 'vm-mime-base64-encoder-program 909 'vm-mime-base64-encoder-program
878 'vm-mime-base64-encoder-switches 910 'vm-mime-base64-encoder-switches
879 'vm-mime-button-face 911 'vm-mime-button-face
912 'vm-mime-charset-font-alist
913 'vm-mime-default-face-charsets
880 'vm-mime-digest-discard-header-regexp 914 'vm-mime-digest-discard-header-regexp
881 'vm-mime-digest-headers 915 'vm-mime-digest-headers
882 'vm-mime-display-function 916 'vm-mime-display-function
883 'vm-mime-external-content-types-alist 917 'vm-mime-external-content-types-alist
884 'vm-mime-internal-content-types 918 'vm-mime-internal-content-types
891 'vm-move-messages-physically 925 'vm-move-messages-physically
892 'vm-movemail-program 926 'vm-movemail-program
893 'vm-mutable-frames 927 'vm-mutable-frames
894 'vm-mutable-windows 928 'vm-mutable-windows
895 'vm-netscape-program 929 'vm-netscape-program
930 'vm-pop-bytes-per-session
931 'vm-pop-max-message-size
932 'vm-pop-messages-per-session
896 'vm-pop-md5-program 933 'vm-pop-md5-program
897 'vm-popup-menu-on-mouse-3 934 'vm-popup-menu-on-mouse-3
898 'vm-preferences-file 935 'vm-preferences-file
899 'vm-preview-lines 936 'vm-preview-lines
900 'vm-preview-read-messages 937 'vm-preview-read-messages
986 (and (= emacs-major-version 19) 1023 (and (= emacs-major-version 19)
987 (< emacs-minor-version 34)))) 1024 (< emacs-minor-version 34))))
988 (error "VM %s must be run on Emacs 19.34 or a later version." 1025 (error "VM %s must be run on Emacs 19.34 or a later version."
989 vm-version)))) 1026 vm-version))))
990 1027
1028 (defun vm-set-debug-flags ()
1029 (or stack-trace-on-error
1030 debug-on-error
1031 (setq stack-trace-on-error
1032 '(
1033 wrong-type-argument
1034 wrong-number-of-arguments
1035 args-out-of-range
1036 void-function
1037 void-variable
1038 ))))
1039
991 (defun vm-session-initialization () 1040 (defun vm-session-initialization ()
992 (vm-check-emacs-version) 1041 (vm-check-emacs-version)
1042 (vm-set-debug-flags)
993 ;; If this is the first time VM has been run in this Emacs session, 1043 ;; If this is the first time VM has been run in this Emacs session,
994 ;; do some necessary preparations. 1044 ;; do some necessary preparations.
995 (if (or (not (boundp 'vm-session-beginning)) 1045 (if (or (not (boundp 'vm-session-beginning))
996 vm-session-beginning) 1046 vm-session-beginning)
997 (progn 1047 (progn