Mercurial > hg > xemacs-beta
comparison lisp/gnus/gnus-sum.el @ 116:9f59509498e1 r20-1b10
Import from CVS: tag r20-1b10
| author | cvs |
|---|---|
| date | Mon, 13 Aug 2007 09:23:06 +0200 |
| parents | 8619ce7e4c50 |
| children | 7d55a9ba150c |
comparison
equal
deleted
inserted
replaced
| 115:f109f7dabbe2 | 116:9f59509498e1 |
|---|---|
| 712 | 712 |
| 713 | 713 |
| 714 ;;; Internal variables | 714 ;;; Internal variables |
| 715 | 715 |
| 716 (defvar gnus-scores-exclude-files nil) | 716 (defvar gnus-scores-exclude-files nil) |
| 717 | |
| 718 (defvar gnus-summary-display-table | |
| 719 ;; Change the display table. Odd characters have a tendency to mess | |
| 720 ;; up nicely formatted displays - we make all possible glyphs | |
| 721 ;; display only a single character. | |
| 722 | |
| 723 ;; We start from the standard display table, if any. | |
| 724 (let ((table (or (copy-sequence standard-display-table) | |
| 725 (make-display-table))) | |
| 726 ;; Nix out all the control chars... | |
| 727 (i 32)) | |
| 728 (while (>= (setq i (1- i)) 0) | |
| 729 (aset table i [??])) | |
| 730 ;; ... but not newline and cr, of course. (cr is necessary for the | |
| 731 ;; selective display). | |
| 732 (aset table ?\n nil) | |
| 733 (aset table ?\r nil) | |
| 734 ;; We nix out any glyphs over 126 that are not set already. | |
| 735 (let ((i 256)) | |
| 736 (while (>= (setq i (1- i)) 127) | |
| 737 ;; Only modify if the entry is nil. | |
| 738 (or (aref table i) | |
| 739 (aset table i [??])))) | |
| 740 table) | |
| 741 "Display table used in summary mode buffers.") | |
| 742 | 717 |
| 743 (defvar gnus-original-article nil) | 718 (defvar gnus-original-article nil) |
| 744 (defvar gnus-article-internal-prepare-hook nil) | 719 (defvar gnus-article-internal-prepare-hook nil) |
| 745 (defvar gnus-newsgroup-process-stack nil) | 720 (defvar gnus-newsgroup-process-stack nil) |
| 746 | 721 |
| 1870 (buffer-disable-undo (current-buffer)) | 1845 (buffer-disable-undo (current-buffer)) |
| 1871 (setq buffer-read-only t) ;Disable modification | 1846 (setq buffer-read-only t) ;Disable modification |
| 1872 (setq truncate-lines t) | 1847 (setq truncate-lines t) |
| 1873 (setq selective-display t) | 1848 (setq selective-display t) |
| 1874 (setq selective-display-ellipses t) ;Display `...' | 1849 (setq selective-display-ellipses t) ;Display `...' |
| 1875 (setq buffer-display-table gnus-summary-display-table) | 1850 (gnus-summary-set-display-table) |
| 1876 (gnus-set-default-directory) | 1851 (gnus-set-default-directory) |
| 1877 (setq gnus-newsgroup-name group) | 1852 (setq gnus-newsgroup-name group) |
| 1878 (make-local-variable 'gnus-summary-line-format) | 1853 (make-local-variable 'gnus-summary-line-format) |
| 1879 (make-local-variable 'gnus-summary-line-format-spec) | 1854 (make-local-variable 'gnus-summary-line-format-spec) |
| 1880 (make-local-variable 'gnus-summary-mark-positions) | 1855 (make-local-variable 'gnus-summary-mark-positions) |
| 2207 | 2182 |
| 2208 (defun gnus-mouse-pick-article (e) | 2183 (defun gnus-mouse-pick-article (e) |
| 2209 (interactive "e") | 2184 (interactive "e") |
| 2210 (mouse-set-point e) | 2185 (mouse-set-point e) |
| 2211 (gnus-summary-next-page nil t)) | 2186 (gnus-summary-next-page nil t)) |
| 2187 | |
| 2188 (defun gnus-summary-set-display-table () | |
| 2189 ;; Change the display table. Odd characters have a tendency to mess | |
| 2190 ;; up nicely formatted displays - we make all possible glyphs | |
| 2191 ;; display only a single character. | |
| 2192 | |
| 2193 ;; We start from the standard display table, if any. | |
| 2194 (let ((table (or (copy-sequence standard-display-table) | |
| 2195 (make-display-table))) | |
| 2196 ;; Nix out all the control chars... | |
| 2197 (i 32)) | |
| 2198 (while (>= (setq i (1- i)) 0) | |
| 2199 (aset table i [??])) | |
| 2200 ;; ... but not newline and cr, of course. (cr is necessary for the | |
| 2201 ;; selective display). | |
| 2202 (aset table ?\n nil) | |
| 2203 (aset table ?\r nil) | |
| 2204 ;; We nix out any glyphs over 126 that are not set already. | |
| 2205 (let ((i 256)) | |
| 2206 (while (>= (setq i (1- i)) 127) | |
| 2207 ;; Only modify if the entry is nil. | |
| 2208 (or (aref table i) | |
| 2209 (aset table i [??])))) | |
| 2210 (setq buffer-display-table table))) | |
| 2212 | 2211 |
| 2213 (defun gnus-summary-setup-buffer (group) | 2212 (defun gnus-summary-setup-buffer (group) |
| 2214 "Initialize summary buffer." | 2213 "Initialize summary buffer." |
| 2215 (let ((buffer (concat "*Summary " group "*"))) | 2214 (let ((buffer (concat "*Summary " group "*"))) |
| 2216 (if (get-buffer buffer) | 2215 (if (get-buffer buffer) |
| 3584 | 3583 |
| 3585 (defun gnus-select-newsgroup (group &optional read-all) | 3584 (defun gnus-select-newsgroup (group &optional read-all) |
| 3586 "Select newsgroup GROUP. | 3585 "Select newsgroup GROUP. |
| 3587 If READ-ALL is non-nil, all articles in the group are selected." | 3586 If READ-ALL is non-nil, all articles in the group are selected." |
| 3588 (let* ((entry (gnus-gethash group gnus-newsrc-hashtb)) | 3587 (let* ((entry (gnus-gethash group gnus-newsrc-hashtb)) |
| 3588 ;;!!! Dirty hack; should be removed. | |
| 3589 (gnus-summary-ignore-duplicates | |
| 3590 (if (eq (car (gnus-find-method-for-group group)) 'nnvirtual) | |
| 3591 t | |
| 3592 gnus-summary-ignore-duplicates)) | |
| 3589 (info (nth 2 entry)) | 3593 (info (nth 2 entry)) |
| 3590 articles fetched-articles cached) | 3594 articles fetched-articles cached) |
| 3591 | 3595 |
| 3592 (unless (gnus-check-server | 3596 (unless (gnus-check-server |
| 3593 (setq gnus-current-select-method | 3597 (setq gnus-current-select-method |
| 6178 (save-excursion | 6182 (save-excursion |
| 6179 (set-buffer gnus-summary-buffer) | 6183 (set-buffer gnus-summary-buffer) |
| 6180 gnus-current-article))) | 6184 gnus-current-article))) |
| 6181 (ogroup gnus-newsgroup-name) | 6185 (ogroup gnus-newsgroup-name) |
| 6182 (params (append (gnus-info-params (gnus-get-info ogroup)) | 6186 (params (append (gnus-info-params (gnus-get-info ogroup)) |
| 6183 (list (cons 'to-group ogroup)))) | 6187 (list (cons 'to-group ogroup)) |
| 6188 (list (cons 'save-article-group ogroup)))) | |
| 6184 (case-fold-search t) | 6189 (case-fold-search t) |
| 6185 (buf (current-buffer)) | 6190 (buf (current-buffer)) |
| 6186 dig) | 6191 dig) |
| 6187 (save-excursion | 6192 (save-excursion |
| 6188 (setq dig (nnheader-set-temp-buffer " *gnus digest buffer*")) | 6193 (setq dig (nnheader-set-temp-buffer " *gnus digest buffer*")) |
| 6665 " " new-xref)) | 6670 " " new-xref)) |
| 6666 (save-excursion | 6671 (save-excursion |
| 6667 (set-buffer copy-buf) | 6672 (set-buffer copy-buf) |
| 6668 ;; First put the article in the destination group. | 6673 ;; First put the article in the destination group. |
| 6669 (gnus-request-article-this-buffer article gnus-newsgroup-name) | 6674 (gnus-request-article-this-buffer article gnus-newsgroup-name) |
| 6670 (setq art-group | 6675 (when (consp (setq art-group |
| 6671 (gnus-request-accept-article | 6676 (gnus-request-accept-article |
| 6672 to-newsgroup select-method (not articles))) | 6677 to-newsgroup select-method (not articles)))) |
| 6673 (setq new-xref (concat new-xref " " (car art-group) | 6678 (setq new-xref (concat new-xref " " (car art-group) |
| 6674 ":" (cdr art-group))) | 6679 ":" (cdr art-group))) |
| 6675 ;; Now we have the new Xrefs header, so we insert | 6680 ;; Now we have the new Xrefs header, so we insert |
| 6676 ;; it and replace the new article. | 6681 ;; it and replace the new article. |
| 6677 (nnheader-replace-header "Xref" new-xref) | 6682 (nnheader-replace-header "Xref" new-xref) |
| 6678 (gnus-request-replace-article | 6683 (gnus-request-replace-article |
| 6679 (cdr art-group) to-newsgroup (current-buffer)) | 6684 (cdr art-group) to-newsgroup (current-buffer)) |
| 6680 art-group))))) | 6685 art-group)))))) |
| 6681 (if (not art-group) | 6686 (cond |
| 6682 (gnus-message 1 "Couldn't %s article %s" | 6687 ((not art-group) |
| 6683 (cadr (assq action names)) article) | 6688 (gnus-message 1 "Couldn't %s article %s" |
| 6689 (cadr (assq action names)) article)) | |
| 6690 ((and (eq art-group 'junk) | |
| 6691 (eq action 'move)) | |
| 6692 (gnus-summary-mark-article article gnus-canceled-mark) | |
| 6693 (gnus-message 4 "Deleted article %s" article)) | |
| 6694 (t | |
| 6684 (let* ((entry | 6695 (let* ((entry |
| 6685 (or | 6696 (or |
| 6686 (gnus-gethash (car art-group) gnus-newsrc-hashtb) | 6697 (gnus-gethash (car art-group) gnus-newsrc-hashtb) |
| 6687 (gnus-gethash | 6698 (gnus-gethash |
| 6688 (gnus-group-prefixed-name | 6699 (gnus-group-prefixed-name |
| 6753 (gnus-request-replace-article | 6764 (gnus-request-replace-article |
| 6754 article gnus-newsgroup-name (current-buffer))))) | 6765 article gnus-newsgroup-name (current-buffer))))) |
| 6755 | 6766 |
| 6756 (gnus-summary-goto-subject article) | 6767 (gnus-summary-goto-subject article) |
| 6757 (when (eq action 'move) | 6768 (when (eq action 'move) |
| 6758 (gnus-summary-mark-article article gnus-canceled-mark))) | 6769 (gnus-summary-mark-article article gnus-canceled-mark)))) |
| 6759 (gnus-summary-remove-process-mark article)) | 6770 (gnus-summary-remove-process-mark article)) |
| 6760 ;; Re-activate all groups that have been moved to. | 6771 ;; Re-activate all groups that have been moved to. |
| 6761 (while to-groups | 6772 (while to-groups |
| 6762 (gnus-activate-group (pop to-groups))) | 6773 (gnus-activate-group (pop to-groups))) |
| 6763 | 6774 |
| 7066 (execute-kbd-macro (concat (this-command-keys) key)) | 7077 (execute-kbd-macro (concat (this-command-keys) key)) |
| 7067 (gnus-article-edit-done)) | 7078 (gnus-article-edit-done)) |
| 7068 | 7079 |
| 7069 ;;; Respooling | 7080 ;;; Respooling |
| 7070 | 7081 |
| 7071 (defun gnus-summary-respool-query () | 7082 (defun gnus-summary-respool-query (&optional silent) |
| 7072 "Query where the respool algorithm would put this article." | 7083 "Query where the respool algorithm would put this article." |
| 7073 (interactive) | 7084 (interactive) |
| 7074 (gnus-set-global-variables) | 7085 (gnus-set-global-variables) |
| 7075 (let (gnus-mark-article-hook) | 7086 (let (gnus-mark-article-hook) |
| 7076 (gnus-summary-select-article) | 7087 (gnus-summary-select-article) |
| 7077 (save-excursion | 7088 (save-excursion |
| 7078 (set-buffer gnus-original-article-buffer) | 7089 (set-buffer gnus-original-article-buffer) |
| 7079 (save-restriction | 7090 (save-restriction |
| 7080 (message-narrow-to-head) | 7091 (message-narrow-to-head) |
| 7081 (message "This message would go to %s" | 7092 (let ((groups (nnmail-article-group 'identity))) |
| 7082 (mapconcat 'car (nnmail-article-group 'identity) ", ")))))) | 7093 (unless silent |
| 7094 (if groups | |
| 7095 (message "This message would go to %s" | |
| 7096 (mapconcat 'car groups ", ")) | |
| 7097 (message "This message would go to no groups")) | |
| 7098 groups)))))) | |
| 7083 | 7099 |
| 7084 ;; Summary marking commands. | 7100 ;; Summary marking commands. |
| 7085 | 7101 |
| 7086 (defun gnus-summary-kill-same-subject-and-select (&optional unmark) | 7102 (defun gnus-summary-kill-same-subject-and-select (&optional unmark) |
| 7087 "Mark articles which has the same subject as read, and then select the next. | 7103 "Mark articles which has the same subject as read, and then select the next. |
