diff options
| author | Stefan Monnier | 2009-02-01 03:39:37 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2009-02-01 03:39:37 +0000 |
| commit | 2dc00ad0c32453ea4d5573ebac7ab041f54330fd (patch) | |
| tree | 0494b3efdc528fba201a5975c2761d9272c4b2af | |
| parent | 73d7bcb9186581589b8ab10b2b4f9f98f734d7fc (diff) | |
| download | emacs-2dc00ad0c32453ea4d5573ebac7ab041f54330fd.tar.gz emacs-2dc00ad0c32453ea4d5573ebac7ab041f54330fd.zip | |
(rmail-view-buffer): Make buffer-local.
(rmail-select-summary, rmail-perm-variables, rmail-redecode-body)
(rmail-undelete-previous-message, rmail-mark-message)
(rmail-speedbar-buttons): Use with-current-buffer.
(rmail-mode-map): Move initialization into declaration.
(rmail-swap-buffers, rmail-unfontify-buffer-function)
(rmail-fontify-message): Use restore-buffer-modified-p.
(rmail-expunge-and-save): Don't swap buffer.
(rmail-get-header, rmail-set-header, rmail-set-attribute)
(rmail-apply-in-message): Swap save-excursion and save-restriction.
| -rw-r--r-- | lisp/ChangeLog | 11 | ||||
| -rw-r--r-- | lisp/mail/rmail.el | 341 |
2 files changed, 179 insertions, 173 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9188230e6f7..020cc4e71cb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,5 +1,16 @@ | |||
| 1 | 2009-02-01 Stefan Monnier <monnier@iro.umontreal.ca> | 1 | 2009-02-01 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 2 | ||
| 3 | * mail/rmail.el (rmail-view-buffer): Make buffer-local. | ||
| 4 | (rmail-select-summary, rmail-perm-variables, rmail-redecode-body) | ||
| 5 | (rmail-undelete-previous-message, rmail-mark-message) | ||
| 6 | (rmail-speedbar-buttons): Use with-current-buffer. | ||
| 7 | (rmail-mode-map): Move initialization into declaration. | ||
| 8 | (rmail-swap-buffers, rmail-unfontify-buffer-function) | ||
| 9 | (rmail-fontify-message): Use restore-buffer-modified-p. | ||
| 10 | (rmail-expunge-and-save): Don't swap buffer. | ||
| 11 | (rmail-get-header, rmail-set-header, rmail-set-attribute) | ||
| 12 | (rmail-apply-in-message): Swap save-excursion and save-restriction. | ||
| 13 | |||
| 3 | * mail/rmailsort.el (rmail-sort-messages): Use car-less-than-car | 14 | * mail/rmailsort.el (rmail-sort-messages): Use car-less-than-car |
| 4 | if possible. | 15 | if possible. |
| 5 | 16 | ||
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index b2bd29c1991..3966c0edac3 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el | |||
| @@ -563,6 +563,7 @@ by substituting the new message number into the existing list.") | |||
| 563 | 563 | ||
| 564 | (defvar rmail-view-buffer nil | 564 | (defvar rmail-view-buffer nil |
| 565 | "Buffer which holds RMAIL message for MIME displaying.") | 565 | "Buffer which holds RMAIL message for MIME displaying.") |
| 566 | (make-variable-buffer-local 'rmail-view-buffer) | ||
| 566 | (put 'rmail-view-buffer 'permanent-local t) | 567 | (put 'rmail-view-buffer 'permanent-local t) |
| 567 | 568 | ||
| 568 | ;; `Sticky' default variables. | 569 | ;; `Sticky' default variables. |
| @@ -675,10 +676,6 @@ the variable `rmail-mime-feature'.") | |||
| 675 | The first parenthesized expression should match the MIME-charset name.") | 676 | The first parenthesized expression should match the MIME-charset name.") |
| 676 | 677 | ||
| 677 | 678 | ||
| 678 | ;;; Regexp matching the delimiter of messages in UNIX mail format | ||
| 679 | ;;; (UNIX From lines), minus the initial ^. Note that if you change | ||
| 680 | ;;; this expression, you must change the code in rmail-nuke-pinhead-header | ||
| 681 | ;;; that knows the exact ordering of the \\( \\) subexpressions. | ||
| 682 | (defvar rmail-unix-mail-delimiter | 679 | (defvar rmail-unix-mail-delimiter |
| 683 | (let ((time-zone-regexp | 680 | (let ((time-zone-regexp |
| 684 | (concat "\\([A-Z]?[A-Z]?[A-Z][A-Z]\\( DST\\)?" | 681 | (concat "\\([A-Z]?[A-Z]?[A-Z][A-Z]\\( DST\\)?" |
| @@ -729,7 +726,10 @@ The first parenthesized expression should match the MIME-charset name.") | |||
| 729 | "\\(remote from .*\\)?" | 726 | "\\(remote from .*\\)?" |
| 730 | 727 | ||
| 731 | "\n")) | 728 | "\n")) |
| 732 | nil) | 729 | "Regexp matching the delimiter of messages in UNIX mail format |
| 730 | \(UNIX From lines), minus the initial ^. Note that if you change | ||
| 731 | this expression, you must change the code in rmail-nuke-pinhead-header | ||
| 732 | that knows the exact ordering of the \\( \\) subexpressions.") | ||
| 733 | 733 | ||
| 734 | (defvar rmail-font-lock-keywords | 734 | (defvar rmail-font-lock-keywords |
| 735 | ;; These are all matched case-insensitively. | 735 | ;; These are all matched case-insensitively. |
| @@ -774,8 +774,7 @@ The first parenthesized expression should match the MIME-charset name.") | |||
| 774 | (let ((rmail-total-messages total)) | 774 | (let ((rmail-total-messages total)) |
| 775 | ,@body)) | 775 | ,@body)) |
| 776 | (select-window window)))) | 776 | (select-window window)))) |
| 777 | (save-excursion | 777 | (with-current-buffer rmail-summary-buffer |
| 778 | (set-buffer rmail-summary-buffer) | ||
| 779 | (let ((rmail-total-messages total)) | 778 | (let ((rmail-total-messages total)) |
| 780 | ,@body))) | 779 | ,@body))) |
| 781 | (rmail-maybe-display-summary))) | 780 | (rmail-maybe-display-summary))) |
| @@ -843,15 +842,15 @@ If `rmail-display-summary' is non-nil, make a summary for this RMAIL file." | |||
| 843 | (switch-to-buffer | 842 | (switch-to-buffer |
| 844 | (let ((enable-local-variables nil)) | 843 | (let ((enable-local-variables nil)) |
| 845 | (find-file-noselect file-name)))) | 844 | (find-file-noselect file-name)))) |
| 846 | ;; Insure that the collection and view buffers are in sync and | 845 | ;; Ensure that the collection and view buffers are in sync and |
| 847 | ;; insure that a message is not being edited. | 846 | ;; ensure that a message is not being edited. |
| 848 | (if (eq major-mode 'rmail-mode) | 847 | (if (eq major-mode 'rmail-mode) |
| 849 | (rmail-swap-buffers-maybe)) | 848 | (rmail-swap-buffers-maybe)) |
| 850 | (if (eq major-mode 'rmail-edit-mode) | 849 | (if (eq major-mode 'rmail-edit-mode) |
| 851 | (error "Exit Rmail Edit mode before getting new mail")) | 850 | (error "Exit Rmail Edit mode before getting new mail")) |
| 852 | (or (and existed (> (buffer-size) 0)) | 851 | (or (and existed (> (buffer-size) 0)) |
| 853 | (setq run-mail-hook t)) | 852 | (setq run-mail-hook t)) |
| 854 | ;; Insure that the Rmail file is in mbox format, the buffer is in | 853 | ;; Ensure that the Rmail file is in mbox format, the buffer is in |
| 855 | ;; Rmail mode and has been scanned to find all the messages | 854 | ;; Rmail mode and has been scanned to find all the messages |
| 856 | ;; (setting the global message variables in the process). | 855 | ;; (setting the global message variables in the process). |
| 857 | (rmail-convert-file-maybe) | 856 | (rmail-convert-file-maybe) |
| @@ -942,183 +941,183 @@ The buffer is expected to be narrowed to just the header of the message." | |||
| 942 | 941 | ||
| 943 | ;;; Set up Rmail mode keymaps | 942 | ;;; Set up Rmail mode keymaps |
| 944 | 943 | ||
| 945 | (defvar rmail-mode-map nil) | 944 | (defvar rmail-mode-map |
| 946 | (if rmail-mode-map | 945 | (let ((map (make-keymap))) |
| 947 | nil | 946 | (suppress-keymap map) |
| 948 | (setq rmail-mode-map (make-keymap)) | 947 | (define-key map "a" 'rmail-add-label) |
| 949 | (suppress-keymap rmail-mode-map) | 948 | (define-key map "b" 'rmail-bury) |
| 950 | (define-key rmail-mode-map "a" 'rmail-add-label) | 949 | (define-key map "c" 'rmail-continue) |
| 951 | (define-key rmail-mode-map "b" 'rmail-bury) | 950 | (define-key map "d" 'rmail-delete-forward) |
| 952 | (define-key rmail-mode-map "c" 'rmail-continue) | 951 | (define-key map "\C-d" 'rmail-delete-backward) |
| 953 | (define-key rmail-mode-map "d" 'rmail-delete-forward) | 952 | (define-key map "e" 'rmail-edit-current-message) |
| 954 | (define-key rmail-mode-map "\C-d" 'rmail-delete-backward) | 953 | (define-key map "f" 'rmail-forward) |
| 955 | (define-key rmail-mode-map "e" 'rmail-edit-current-message) | 954 | (define-key map "g" 'rmail-get-new-mail) |
| 956 | (define-key rmail-mode-map "f" 'rmail-forward) | 955 | (define-key map "h" 'rmail-summary) |
| 957 | (define-key rmail-mode-map "g" 'rmail-get-new-mail) | 956 | (define-key map "i" 'rmail-input) |
| 958 | (define-key rmail-mode-map "h" 'rmail-summary) | 957 | (define-key map "j" 'rmail-show-message-maybe) |
| 959 | (define-key rmail-mode-map "i" 'rmail-input) | 958 | (define-key map "k" 'rmail-kill-label) |
| 960 | (define-key rmail-mode-map "j" 'rmail-show-message-maybe) | 959 | (define-key map "l" 'rmail-summary-by-labels) |
| 961 | (define-key rmail-mode-map "k" 'rmail-kill-label) | 960 | (define-key map "\e\C-h" 'rmail-summary) |
| 962 | (define-key rmail-mode-map "l" 'rmail-summary-by-labels) | 961 | (define-key map "\e\C-l" 'rmail-summary-by-labels) |
| 963 | (define-key rmail-mode-map "\e\C-h" 'rmail-summary) | 962 | (define-key map "\e\C-r" 'rmail-summary-by-recipients) |
| 964 | (define-key rmail-mode-map "\e\C-l" 'rmail-summary-by-labels) | 963 | (define-key map "\e\C-s" 'rmail-summary-by-regexp) |
| 965 | (define-key rmail-mode-map "\e\C-r" 'rmail-summary-by-recipients) | 964 | (define-key map "\e\C-t" 'rmail-summary-by-topic) |
| 966 | (define-key rmail-mode-map "\e\C-s" 'rmail-summary-by-regexp) | 965 | (define-key map "m" 'rmail-mail) |
| 967 | (define-key rmail-mode-map "\e\C-t" 'rmail-summary-by-topic) | 966 | (define-key map "\em" 'rmail-retry-failure) |
| 968 | (define-key rmail-mode-map "m" 'rmail-mail) | 967 | (define-key map "n" 'rmail-next-undeleted-message) |
| 969 | (define-key rmail-mode-map "\em" 'rmail-retry-failure) | 968 | (define-key map "\en" 'rmail-next-message) |
| 970 | (define-key rmail-mode-map "n" 'rmail-next-undeleted-message) | 969 | (define-key map "\e\C-n" 'rmail-next-labeled-message) |
| 971 | (define-key rmail-mode-map "\en" 'rmail-next-message) | 970 | (define-key map "o" 'rmail-output) |
| 972 | (define-key rmail-mode-map "\e\C-n" 'rmail-next-labeled-message) | 971 | (define-key map "\C-o" 'rmail-output-as-seen) |
| 973 | (define-key rmail-mode-map "o" 'rmail-output) | 972 | (define-key map "p" 'rmail-previous-undeleted-message) |
| 974 | (define-key rmail-mode-map "\C-o" 'rmail-output-as-seen) | 973 | (define-key map "\ep" 'rmail-previous-message) |
| 975 | (define-key rmail-mode-map "p" 'rmail-previous-undeleted-message) | 974 | (define-key map "\e\C-p" 'rmail-previous-labeled-message) |
| 976 | (define-key rmail-mode-map "\ep" 'rmail-previous-message) | 975 | (define-key map "q" 'rmail-quit) |
| 977 | (define-key rmail-mode-map "\e\C-p" 'rmail-previous-labeled-message) | 976 | (define-key map "r" 'rmail-reply) |
| 978 | (define-key rmail-mode-map "q" 'rmail-quit) | 977 | ;; I find I can't live without the default M-r command -- rms. |
| 979 | (define-key rmail-mode-map "r" 'rmail-reply) | 978 | ;; (define-key rmail-mode-map "\er" 'rmail-search-backwards) |
| 980 | ;; I find I can't live without the default M-r command -- rms. | 979 | (define-key map "s" 'rmail-expunge-and-save) |
| 981 | ;; (define-key rmail-mode-map "\er" 'rmail-search-backwards) | 980 | (define-key map "\es" 'rmail-search) |
| 982 | (define-key rmail-mode-map "s" 'rmail-expunge-and-save) | 981 | (define-key map "t" 'rmail-toggle-header) |
| 983 | (define-key rmail-mode-map "\es" 'rmail-search) | 982 | (define-key map "u" 'rmail-undelete-previous-message) |
| 984 | (define-key rmail-mode-map "t" 'rmail-toggle-header) | 983 | (define-key map "w" 'rmail-output-body-to-file) |
| 985 | (define-key rmail-mode-map "u" 'rmail-undelete-previous-message) | 984 | (define-key map "\C-c\C-w" 'rmail-widen) |
| 986 | (define-key rmail-mode-map "w" 'rmail-output-body-to-file) | 985 | (define-key map "x" 'rmail-expunge) |
| 987 | (define-key rmail-mode-map "\C-c\C-w" 'rmail-widen) | 986 | (define-key map "." 'rmail-beginning-of-message) |
| 988 | (define-key rmail-mode-map "x" 'rmail-expunge) | 987 | (define-key map "/" 'rmail-end-of-message) |
| 989 | (define-key rmail-mode-map "." 'rmail-beginning-of-message) | 988 | (define-key map "<" 'rmail-first-message) |
| 990 | (define-key rmail-mode-map "/" 'rmail-end-of-message) | 989 | (define-key map ">" 'rmail-last-message) |
| 991 | (define-key rmail-mode-map "<" 'rmail-first-message) | 990 | (define-key map " " 'scroll-up) |
| 992 | (define-key rmail-mode-map ">" 'rmail-last-message) | 991 | (define-key map "\177" 'scroll-down) |
| 993 | (define-key rmail-mode-map " " 'scroll-up) | 992 | (define-key map "?" 'describe-mode) |
| 994 | (define-key rmail-mode-map "\177" 'scroll-down) | 993 | (define-key map "\C-c\C-s\C-d" 'rmail-sort-by-date) |
| 995 | (define-key rmail-mode-map "?" 'describe-mode) | 994 | (define-key map "\C-c\C-s\C-s" 'rmail-sort-by-subject) |
| 996 | (define-key rmail-mode-map "\C-c\C-s\C-d" 'rmail-sort-by-date) | 995 | (define-key map "\C-c\C-s\C-a" 'rmail-sort-by-author) |
| 997 | (define-key rmail-mode-map "\C-c\C-s\C-s" 'rmail-sort-by-subject) | 996 | (define-key map "\C-c\C-s\C-r" 'rmail-sort-by-recipient) |
| 998 | (define-key rmail-mode-map "\C-c\C-s\C-a" 'rmail-sort-by-author) | 997 | (define-key map "\C-c\C-s\C-c" 'rmail-sort-by-correspondent) |
| 999 | (define-key rmail-mode-map "\C-c\C-s\C-r" 'rmail-sort-by-recipient) | 998 | (define-key map "\C-c\C-s\C-l" 'rmail-sort-by-lines) |
| 1000 | (define-key rmail-mode-map "\C-c\C-s\C-c" 'rmail-sort-by-correspondent) | 999 | (define-key map "\C-c\C-s\C-k" 'rmail-sort-by-labels) |
| 1001 | (define-key rmail-mode-map "\C-c\C-s\C-l" 'rmail-sort-by-lines) | 1000 | (define-key map "\C-c\C-n" 'rmail-next-same-subject) |
| 1002 | (define-key rmail-mode-map "\C-c\C-s\C-k" 'rmail-sort-by-labels) | 1001 | (define-key map "\C-c\C-p" 'rmail-previous-same-subject) |
| 1003 | (define-key rmail-mode-map "\C-c\C-n" 'rmail-next-same-subject) | 1002 | |
| 1004 | (define-key rmail-mode-map "\C-c\C-p" 'rmail-previous-same-subject) | ||
| 1005 | ) | ||
| 1006 | 1003 | ||
| 1007 | (define-key rmail-mode-map [menu-bar] (make-sparse-keymap)) | 1004 | (define-key map [menu-bar] (make-sparse-keymap)) |
| 1005 | |||
| 1006 | (define-key map [menu-bar classify] | ||
| 1007 | (cons "Classify" (make-sparse-keymap "Classify"))) | ||
| 1008 | 1008 | ||
| 1009 | (define-key rmail-mode-map [menu-bar classify] | 1009 | (define-key map [menu-bar classify input-menu] |
| 1010 | (cons "Classify" (make-sparse-keymap "Classify"))) | 1010 | nil) |
| 1011 | 1011 | ||
| 1012 | (define-key rmail-mode-map [menu-bar classify input-menu] | 1012 | (define-key map [menu-bar classify output-menu] |
| 1013 | nil) | 1013 | nil) |
| 1014 | 1014 | ||
| 1015 | (define-key rmail-mode-map [menu-bar classify output-menu] | 1015 | (define-key map [menu-bar classify output-body] |
| 1016 | nil) | 1016 | '("Output body to file..." . rmail-output-body-to-file)) |
| 1017 | 1017 | ||
| 1018 | (define-key rmail-mode-map [menu-bar classify output-body] | 1018 | (define-key map [menu-bar classify output-inbox] |
| 1019 | '("Output body to file..." . rmail-output-body-to-file)) | 1019 | '("Output..." . rmail-output)) |
| 1020 | 1020 | ||
| 1021 | (define-key rmail-mode-map [menu-bar classify output-inbox] | 1021 | (define-key map [menu-bar classify output] |
| 1022 | '("Output..." . rmail-output)) | 1022 | '("Output as seen..." . rmail-output-as-seen)) |
| 1023 | 1023 | ||
| 1024 | (define-key rmail-mode-map [menu-bar classify output] | 1024 | (define-key map [menu-bar classify kill-label] |
| 1025 | '("Output as seen..." . rmail-output-as-seen)) | 1025 | '("Kill Label..." . rmail-kill-label)) |
| 1026 | 1026 | ||
| 1027 | (define-key rmail-mode-map [menu-bar classify kill-label] | 1027 | (define-key map [menu-bar classify add-label] |
| 1028 | '("Kill Label..." . rmail-kill-label)) | 1028 | '("Add Label..." . rmail-add-label)) |
| 1029 | 1029 | ||
| 1030 | (define-key rmail-mode-map [menu-bar classify add-label] | 1030 | (define-key map [menu-bar summary] |
| 1031 | '("Add Label..." . rmail-add-label)) | 1031 | (cons "Summary" (make-sparse-keymap "Summary"))) |
| 1032 | 1032 | ||
| 1033 | (define-key rmail-mode-map [menu-bar summary] | 1033 | (define-key map [menu-bar summary senders] |
| 1034 | (cons "Summary" (make-sparse-keymap "Summary"))) | 1034 | '("By Senders..." . rmail-summary-by-senders)) |
| 1035 | 1035 | ||
| 1036 | (define-key rmail-mode-map [menu-bar summary senders] | 1036 | (define-key map [menu-bar summary labels] |
| 1037 | '("By Senders..." . rmail-summary-by-senders)) | 1037 | '("By Labels..." . rmail-summary-by-labels)) |
| 1038 | 1038 | ||
| 1039 | (define-key rmail-mode-map [menu-bar summary labels] | 1039 | (define-key map [menu-bar summary recipients] |
| 1040 | '("By Labels..." . rmail-summary-by-labels)) | 1040 | '("By Recipients..." . rmail-summary-by-recipients)) |
| 1041 | 1041 | ||
| 1042 | (define-key rmail-mode-map [menu-bar summary recipients] | 1042 | (define-key map [menu-bar summary topic] |
| 1043 | '("By Recipients..." . rmail-summary-by-recipients)) | 1043 | '("By Topic..." . rmail-summary-by-topic)) |
| 1044 | 1044 | ||
| 1045 | (define-key rmail-mode-map [menu-bar summary topic] | 1045 | (define-key map [menu-bar summary regexp] |
| 1046 | '("By Topic..." . rmail-summary-by-topic)) | 1046 | '("By Regexp..." . rmail-summary-by-regexp)) |
| 1047 | 1047 | ||
| 1048 | (define-key rmail-mode-map [menu-bar summary regexp] | 1048 | (define-key map [menu-bar summary all] |
| 1049 | '("By Regexp..." . rmail-summary-by-regexp)) | 1049 | '("All" . rmail-summary)) |
| 1050 | 1050 | ||
| 1051 | (define-key rmail-mode-map [menu-bar summary all] | 1051 | (define-key map [menu-bar mail] |
| 1052 | '("All" . rmail-summary)) | 1052 | (cons "Mail" (make-sparse-keymap "Mail"))) |
| 1053 | 1053 | ||
| 1054 | (define-key rmail-mode-map [menu-bar mail] | 1054 | (define-key map [menu-bar mail rmail-get-new-mail] |
| 1055 | (cons "Mail" (make-sparse-keymap "Mail"))) | 1055 | '("Get New Mail" . rmail-get-new-mail)) |
| 1056 | 1056 | ||
| 1057 | (define-key rmail-mode-map [menu-bar mail rmail-get-new-mail] | 1057 | (define-key map [menu-bar mail lambda] |
| 1058 | '("Get New Mail" . rmail-get-new-mail)) | 1058 | '("----")) |
| 1059 | 1059 | ||
| 1060 | (define-key rmail-mode-map [menu-bar mail lambda] | 1060 | (define-key map [menu-bar mail continue] |
| 1061 | '("----")) | 1061 | '("Continue" . rmail-continue)) |
| 1062 | 1062 | ||
| 1063 | (define-key rmail-mode-map [menu-bar mail continue] | 1063 | (define-key map [menu-bar mail resend] |
| 1064 | '("Continue" . rmail-continue)) | 1064 | '("Re-send..." . rmail-resend)) |
| 1065 | 1065 | ||
| 1066 | (define-key rmail-mode-map [menu-bar mail resend] | 1066 | (define-key map [menu-bar mail forward] |
| 1067 | '("Re-send..." . rmail-resend)) | 1067 | '("Forward" . rmail-forward)) |
| 1068 | 1068 | ||
| 1069 | (define-key rmail-mode-map [menu-bar mail forward] | 1069 | (define-key map [menu-bar mail retry] |
| 1070 | '("Forward" . rmail-forward)) | 1070 | '("Retry" . rmail-retry-failure)) |
| 1071 | 1071 | ||
| 1072 | (define-key rmail-mode-map [menu-bar mail retry] | 1072 | (define-key map [menu-bar mail reply] |
| 1073 | '("Retry" . rmail-retry-failure)) | 1073 | '("Reply" . rmail-reply)) |
| 1074 | 1074 | ||
| 1075 | (define-key rmail-mode-map [menu-bar mail reply] | 1075 | (define-key map [menu-bar mail mail] |
| 1076 | '("Reply" . rmail-reply)) | 1076 | '("Mail" . rmail-mail)) |
| 1077 | 1077 | ||
| 1078 | (define-key rmail-mode-map [menu-bar mail mail] | 1078 | (define-key map [menu-bar delete] |
| 1079 | '("Mail" . rmail-mail)) | 1079 | (cons "Delete" (make-sparse-keymap "Delete"))) |
| 1080 | 1080 | ||
| 1081 | (define-key rmail-mode-map [menu-bar delete] | 1081 | (define-key map [menu-bar delete expunge/save] |
| 1082 | (cons "Delete" (make-sparse-keymap "Delete"))) | 1082 | '("Expunge/Save" . rmail-expunge-and-save)) |
| 1083 | 1083 | ||
| 1084 | (define-key rmail-mode-map [menu-bar delete expunge/save] | 1084 | (define-key map [menu-bar delete expunge] |
| 1085 | '("Expunge/Save" . rmail-expunge-and-save)) | 1085 | '("Expunge" . rmail-expunge)) |
| 1086 | 1086 | ||
| 1087 | (define-key rmail-mode-map [menu-bar delete expunge] | 1087 | (define-key map [menu-bar delete undelete] |
| 1088 | '("Expunge" . rmail-expunge)) | 1088 | '("Undelete" . rmail-undelete-previous-message)) |
| 1089 | 1089 | ||
| 1090 | (define-key rmail-mode-map [menu-bar delete undelete] | 1090 | (define-key map [menu-bar delete delete] |
| 1091 | '("Undelete" . rmail-undelete-previous-message)) | 1091 | '("Delete" . rmail-delete-forward)) |
| 1092 | 1092 | ||
| 1093 | (define-key rmail-mode-map [menu-bar delete delete] | 1093 | (define-key map [menu-bar move] |
| 1094 | '("Delete" . rmail-delete-forward)) | 1094 | (cons "Move" (make-sparse-keymap "Move"))) |
| 1095 | 1095 | ||
| 1096 | (define-key rmail-mode-map [menu-bar move] | 1096 | (define-key map [menu-bar move search-back] |
| 1097 | (cons "Move" (make-sparse-keymap "Move"))) | 1097 | '("Search Back..." . rmail-search-backwards)) |
| 1098 | 1098 | ||
| 1099 | (define-key rmail-mode-map [menu-bar move search-back] | 1099 | (define-key map [menu-bar move search] |
| 1100 | '("Search Back..." . rmail-search-backwards)) | 1100 | '("Search..." . rmail-search)) |
| 1101 | 1101 | ||
| 1102 | (define-key rmail-mode-map [menu-bar move search] | 1102 | (define-key map [menu-bar move previous] |
| 1103 | '("Search..." . rmail-search)) | 1103 | '("Previous Nondeleted" . rmail-previous-undeleted-message)) |
| 1104 | 1104 | ||
| 1105 | (define-key rmail-mode-map [menu-bar move previous] | 1105 | (define-key map [menu-bar move next] |
| 1106 | '("Previous Nondeleted" . rmail-previous-undeleted-message)) | 1106 | '("Next Nondeleted" . rmail-next-undeleted-message)) |
| 1107 | 1107 | ||
| 1108 | (define-key rmail-mode-map [menu-bar move next] | 1108 | (define-key map [menu-bar move last] |
| 1109 | '("Next Nondeleted" . rmail-next-undeleted-message)) | 1109 | '("Last" . rmail-last-message)) |
| 1110 | 1110 | ||
| 1111 | (define-key rmail-mode-map [menu-bar move last] | 1111 | (define-key map [menu-bar move first] |
| 1112 | '("Last" . rmail-last-message)) | 1112 | '("First" . rmail-first-message)) |
| 1113 | 1113 | ||
| 1114 | (define-key rmail-mode-map [menu-bar move first] | 1114 | (define-key map [menu-bar move previous] |
| 1115 | '("First" . rmail-first-message)) | 1115 | '("Previous" . rmail-previous-message)) |
| 1116 | 1116 | ||
| 1117 | (define-key rmail-mode-map [menu-bar move previous] | 1117 | (define-key map [menu-bar move next] |
| 1118 | '("Previous" . rmail-previous-message)) | 1118 | '("Next" . rmail-next-message)) |
| 1119 | 1119 | ||
| 1120 | (define-key rmail-mode-map [menu-bar move next] | 1120 | map)) |
| 1121 | '("Next" . rmail-next-message)) | ||
| 1122 | 1121 | ||
| 1123 | ;; Rmail toolbar | 1122 | ;; Rmail toolbar |
| 1124 | (defvar rmail-tool-bar-map | 1123 | (defvar rmail-tool-bar-map |
| @@ -1271,7 +1270,7 @@ sets the current buffer's `buffer-file-coding-system' to that of | |||
| 1271 | buffer-file-coding-system))) | 1270 | buffer-file-coding-system))) |
| 1272 | (buffer-swap-text rmail-view-buffer) | 1271 | (buffer-swap-text rmail-view-buffer) |
| 1273 | (setq buffer-file-coding-system coding) | 1272 | (setq buffer-file-coding-system coding) |
| 1274 | (set-buffer-modified-p modp))) | 1273 | (restore-buffer-modified-p modp))) |
| 1275 | 1274 | ||
| 1276 | (defun rmail-buffers-swapped-p () | 1275 | (defun rmail-buffers-swapped-p () |
| 1277 | "Return non-nil if the message collection is in `rmail-view-buffer'." | 1276 | "Return non-nil if the message collection is in `rmail-view-buffer'." |
| @@ -1303,10 +1302,7 @@ If so restore the actual mbox message collection." | |||
| 1303 | (make-local-variable 'rmail-buffer) | 1302 | (make-local-variable 'rmail-buffer) |
| 1304 | (setq rmail-buffer (current-buffer)) | 1303 | (setq rmail-buffer (current-buffer)) |
| 1305 | (set-buffer-multibyte nil) | 1304 | (set-buffer-multibyte nil) |
| 1306 | (make-local-variable 'rmail-view-buffer) | 1305 | (with-current-buffer (setq rmail-view-buffer (rmail-generate-viewer-buffer)) |
| 1307 | (save-excursion | ||
| 1308 | (setq rmail-view-buffer (rmail-generate-viewer-buffer)) | ||
| 1309 | (set-buffer rmail-view-buffer) | ||
| 1310 | (setq buffer-undo-list t) | 1306 | (setq buffer-undo-list t) |
| 1311 | (set-buffer-multibyte t) | 1307 | (set-buffer-multibyte t) |
| 1312 | ;; Force C-x C-s write Unix EOLs. | 1308 | ;; Force C-x C-s write Unix EOLs. |
| @@ -1391,7 +1387,8 @@ If so restore the actual mbox message collection." | |||
| 1391 | (interactive) | 1387 | (interactive) |
| 1392 | (set-buffer rmail-buffer) | 1388 | (set-buffer rmail-buffer) |
| 1393 | (rmail-expunge t) | 1389 | (rmail-expunge t) |
| 1394 | (rmail-swap-buffers-maybe) | 1390 | ;; No need to swap buffers: rmail-write-region-annotate takes care of it. |
| 1391 | ;; (rmail-swap-buffers-maybe) | ||
| 1395 | (save-buffer) | 1392 | (save-buffer) |
| 1396 | (if (rmail-summary-exists) | 1393 | (if (rmail-summary-exists) |
| 1397 | (rmail-select-summary (set-buffer-modified-p nil))) | 1394 | (rmail-select-summary (set-buffer-modified-p nil))) |
| @@ -1944,7 +1941,7 @@ new messages. Return the number of new messages." | |||
| 1944 | limit) | 1941 | limit) |
| 1945 | ;; Detect an empty inbox file. | 1942 | ;; Detect an empty inbox file. |
| 1946 | (unless (= start (point-max)) | 1943 | (unless (= start (point-max)) |
| 1947 | ;; Scan the new messages to establish a count and to insure that | 1944 | ;; Scan the new messages to establish a count and to ensure that |
| 1948 | ;; an attribute header is present. | 1945 | ;; an attribute header is present. |
| 1949 | (while (looking-at "From ") | 1946 | (while (looking-at "From ") |
| 1950 | ;; Determine if a new attribute header needs to be added to | 1947 | ;; Determine if a new attribute header needs to be added to |
| @@ -1977,9 +1974,9 @@ If MSGNUM is nil, use the current message." | |||
| 1977 | (save-excursion | 1974 | (save-excursion |
| 1978 | ;; ... so it is ok to go to a different buffer. | 1975 | ;; ... so it is ok to go to a different buffer. |
| 1979 | (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) | 1976 | (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) |
| 1977 | (save-excursion | ||
| 1980 | (save-restriction | 1978 | (save-restriction |
| 1981 | (widen) | 1979 | (widen) |
| 1982 | (save-excursion | ||
| 1983 | (goto-char msgbeg) | 1980 | (goto-char msgbeg) |
| 1984 | (setq end (search-forward "\n\n" nil t)) | 1981 | (setq end (search-forward "\n\n" nil t)) |
| 1985 | (if end | 1982 | (if end |
| @@ -2001,9 +1998,9 @@ If MSGNUM is nil, use the current message." | |||
| 2001 | (save-excursion | 1998 | (save-excursion |
| 2002 | ;; ... so it is ok to go to a different buffer. | 1999 | ;; ... so it is ok to go to a different buffer. |
| 2003 | (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) | 2000 | (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) |
| 2001 | (save-excursion | ||
| 2004 | (save-restriction | 2002 | (save-restriction |
| 2005 | (widen) | 2003 | (widen) |
| 2006 | (save-excursion | ||
| 2007 | (goto-char msgbeg) | 2004 | (goto-char msgbeg) |
| 2008 | (setq end (search-forward "\n\n" nil t)) | 2005 | (setq end (search-forward "\n\n" nil t)) |
| 2009 | (if end (setq end (1- end))) | 2006 | (if end (setq end (1- end))) |
| @@ -2117,9 +2114,9 @@ change; nil means current message." | |||
| 2117 | (save-excursion | 2114 | (save-excursion |
| 2118 | ;; ... so it is ok to go to a different buffer. | 2115 | ;; ... so it is ok to go to a different buffer. |
| 2119 | (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) | 2116 | (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) |
| 2117 | (save-excursion | ||
| 2120 | (save-restriction | 2118 | (save-restriction |
| 2121 | (widen) | 2119 | (widen) |
| 2122 | (save-excursion | ||
| 2123 | ;; Determine if the current state is the desired state. | 2120 | ;; Determine if the current state is the desired state. |
| 2124 | (goto-char msgbeg) | 2121 | (goto-char msgbeg) |
| 2125 | (save-excursion | 2122 | (save-excursion |
| @@ -2204,13 +2201,12 @@ If MSGNUM is nil, use the current message." | |||
| 2204 | (save-excursion | 2201 | (save-excursion |
| 2205 | ;; ... so it is ok to go to a different buffer. | 2202 | ;; ... so it is ok to go to a different buffer. |
| 2206 | (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) | 2203 | (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) |
| 2204 | (save-excursion | ||
| 2207 | (save-restriction | 2205 | (save-restriction |
| 2208 | (widen) | 2206 | (widen) |
| 2209 | (save-excursion | ||
| 2210 | (goto-char msgbeg) | 2207 | (goto-char msgbeg) |
| 2211 | (save-restriction | ||
| 2212 | (narrow-to-region msgbeg msgend) | 2208 | (narrow-to-region msgbeg msgend) |
| 2213 | (apply function args))))))))) | 2209 | (apply function args)))))))) |
| 2214 | 2210 | ||
| 2215 | (defun rmail-widen-to-current-msgbeg (function) | 2211 | (defun rmail-widen-to-current-msgbeg (function) |
| 2216 | "Call FUNCTION with point at start of internal data of current message. | 2212 | "Call FUNCTION with point at start of internal data of current message. |
| @@ -2462,6 +2458,7 @@ N defaults to the current message." | |||
| 2462 | (interactive "p") | 2458 | (interactive "p") |
| 2463 | (or (eq major-mode 'rmail-mode) | 2459 | (or (eq major-mode 'rmail-mode) |
| 2464 | (switch-to-buffer rmail-buffer)) | 2460 | (switch-to-buffer rmail-buffer)) |
| 2461 | ;; FIXME: Why do we swap the raw data back in? | ||
| 2465 | (rmail-swap-buffers-maybe) | 2462 | (rmail-swap-buffers-maybe) |
| 2466 | (rmail-maybe-set-message-counters) | 2463 | (rmail-maybe-set-message-counters) |
| 2467 | (widen) | 2464 | (widen) |
| @@ -2675,8 +2672,7 @@ to be used to fix messages encoded with 8-bit encodings, such as | |||
| 2675 | iso-8859, koi8-r, etc." | 2672 | iso-8859, koi8-r, etc." |
| 2676 | (interactive "zCoding system for re-decoding this message: ") | 2673 | (interactive "zCoding system for re-decoding this message: ") |
| 2677 | (when (not rmail-enable-mime) | 2674 | (when (not rmail-enable-mime) |
| 2678 | (save-excursion | 2675 | (with-current-buffer rmail-buffer |
| 2679 | (set-buffer rmail-buffer) | ||
| 2680 | (rmail-swap-buffers-maybe) | 2676 | (rmail-swap-buffers-maybe) |
| 2681 | (save-restriction | 2677 | (save-restriction |
| 2682 | (widen) | 2678 | (widen) |
| @@ -3109,8 +3105,7 @@ If N is negative, go forwards instead." | |||
| 3109 | (rmail-show-message-maybe msg)) | 3105 | (rmail-show-message-maybe msg)) |
| 3110 | (rmail-set-attribute rmail-deleted-attr-index nil) | 3106 | (rmail-set-attribute rmail-deleted-attr-index nil) |
| 3111 | (if (rmail-summary-exists) | 3107 | (if (rmail-summary-exists) |
| 3112 | (save-excursion | 3108 | (with-current-buffer rmail-summary-buffer |
| 3113 | (set-buffer rmail-summary-buffer) | ||
| 3114 | (rmail-summary-mark-undeleted msg))) | 3109 | (rmail-summary-mark-undeleted msg))) |
| 3115 | (rmail-maybe-display-summary)))) | 3110 | (rmail-maybe-display-summary)))) |
| 3116 | 3111 | ||
| @@ -3407,8 +3402,7 @@ use \\[mail-yank-original] to yank the original message into it." | |||
| 3407 | This is use in the send-actions for message buffers. | 3402 | This is use in the send-actions for message buffers. |
| 3408 | MSGNUM-LIST is a list of the form (MSGNUM) | 3403 | MSGNUM-LIST is a list of the form (MSGNUM) |
| 3409 | which is an element of rmail-msgref-vector." | 3404 | which is an element of rmail-msgref-vector." |
| 3410 | (save-excursion | 3405 | (with-current-buffer buffer |
| 3411 | (set-buffer buffer) | ||
| 3412 | (if (car msgnum-list) | 3406 | (if (car msgnum-list) |
| 3413 | (rmail-set-attribute attribute t (car msgnum-list))))) | 3407 | (rmail-set-attribute attribute t (car msgnum-list))))) |
| 3414 | 3408 | ||
| @@ -3816,7 +3810,8 @@ This has an effect only if a summary buffer exists." | |||
| 3816 | (remove-hook 'rmail-show-message-hook 'rmail-fontify-message t) | 3810 | (remove-hook 'rmail-show-message-hook 'rmail-fontify-message t) |
| 3817 | (remove-text-properties (point-min) (point-max) '(rmail-fontified nil)) | 3811 | (remove-text-properties (point-min) (point-max) '(rmail-fontified nil)) |
| 3818 | (font-lock-default-unfontify-buffer) | 3812 | (font-lock-default-unfontify-buffer) |
| 3819 | (and (not modified) (buffer-modified-p) (set-buffer-modified-p nil))))) | 3813 | (and (not modified) (buffer-modified-p) |
| 3814 | (restore-buffer-modified-p nil))))) | ||
| 3820 | 3815 | ||
| 3821 | (defun rmail-fontify-message () | 3816 | (defun rmail-fontify-message () |
| 3822 | ;; Fontify the current message if it is not already fontified. | 3817 | ;; Fontify the current message if it is not already fontified. |
| @@ -3829,7 +3824,8 @@ This has an effect only if a summary buffer exists." | |||
| 3829 | (save-match-data | 3824 | (save-match-data |
| 3830 | (add-text-properties (point-min) (point-max) '(rmail-fontified t)) | 3825 | (add-text-properties (point-min) (point-max) '(rmail-fontified t)) |
| 3831 | (font-lock-fontify-region (point-min) (point-max)) | 3826 | (font-lock-fontify-region (point-min) (point-max)) |
| 3832 | (and (not modified) (buffer-modified-p) (set-buffer-modified-p nil))))))) | 3827 | (and (not modified) (buffer-modified-p) |
| 3828 | (restore-buffer-modified-p nil))))))) | ||
| 3833 | 3829 | ||
| 3834 | ;;; Speedbar support for RMAIL files. | 3830 | ;;; Speedbar support for RMAIL files. |
| 3835 | (eval-when-compile (require 'speedbar)) | 3831 | (eval-when-compile (require 'speedbar)) |
| @@ -3875,8 +3871,7 @@ Click on the address under Reply to: to reply to this person. | |||
| 3875 | Under Folders: Click a name to read it, or on the <M> to move the | 3871 | Under Folders: Click a name to read it, or on the <M> to move the |
| 3876 | current message into that RMAIL folder." | 3872 | current message into that RMAIL folder." |
| 3877 | (let ((from nil)) | 3873 | (let ((from nil)) |
| 3878 | (save-excursion | 3874 | (with-current-buffer buffer |
| 3879 | (set-buffer buffer) | ||
| 3880 | (goto-char (point-min)) | 3875 | (goto-char (point-min)) |
| 3881 | (if (not (re-search-forward "^Reply-To: " nil t)) | 3876 | (if (not (re-search-forward "^Reply-To: " nil t)) |
| 3882 | (if (not (re-search-forward "^From:? " nil t)) | 3877 | (if (not (re-search-forward "^From:? " nil t)) |
| @@ -3896,8 +3891,8 @@ current message into that RMAIL folder." | |||
| 3896 | 'rmail-speedbar-button 'rmail-reply)) | 3891 | 'rmail-speedbar-button 'rmail-reply)) |
| 3897 | (insert "Folders:\n") | 3892 | (insert "Folders:\n") |
| 3898 | (let* ((case-fold-search nil) | 3893 | (let* ((case-fold-search nil) |
| 3899 | (df (directory-files (save-excursion (set-buffer buffer) | 3894 | (df (directory-files (with-current-buffer buffer |
| 3900 | default-directory) | 3895 | default-directory) |
| 3901 | nil rmail-speedbar-match-folder-regexp))) | 3896 | nil rmail-speedbar-match-folder-regexp))) |
| 3902 | (while df | 3897 | (while df |
| 3903 | (speedbar-insert-button "<M>" 'speedbar-button-face 'highlight | 3898 | (speedbar-insert-button "<M>" 'speedbar-button-face 'highlight |