Mercurial > emacs
comparison lisp/gnus.el @ 13694:73433c3071a5
* gnus.el (gnus-parse-headers-hook): New hook.
(gnus-get-newsgroup-headers): Call it.
(gnus-get-newsgroup-headers-xover): Call it.
(gnus-group-mode-map): Moved `gnus-group-fetch-faq' from `M-f' to
`H f'.
(gnus-summary-copy-article): Allow respooling to any backend.
(gnus-summary-set-process-mark): Make sure each article can only
be process marked once.
(gnus-summary-remove-lines-marked-with): Put point on a valid
article after removing lines.
(gnus-summary-sort-by-author): Didn't allow sorting when
pseudo-articles were present.
(gnus-summary-sort-by-subject): Ditto.
author | Lars Magne Ingebrigtsen <larsi@gnus.org> |
---|---|
date | Wed, 06 Dec 1995 21:19:47 +0000 |
parents | 9426437410bf |
children | e8358f30c41c |
comparison
equal
deleted
inserted
replaced
13693:40766c32c127 | 13694:73433c3071a5 |
---|---|
1191 (defvar gnus-visual-mark-article-hook | 1191 (defvar gnus-visual-mark-article-hook |
1192 (list 'gnus-highlight-selected-summary) | 1192 (list 'gnus-highlight-selected-summary) |
1193 "*Hook run after selecting an article in the summary buffer. | 1193 "*Hook run after selecting an article in the summary buffer. |
1194 It is meant to be used for highlighting the article in some way. It | 1194 It is meant to be used for highlighting the article in some way. It |
1195 is not run if `gnus-visual' is nil.") | 1195 is not run if `gnus-visual' is nil.") |
1196 | |
1197 (defun gnus-parse-headers-hook nil | |
1198 "*A hook called before parsing the headers.") | |
1196 | 1199 |
1197 (defvar gnus-exit-group-hook nil | 1200 (defvar gnus-exit-group-hook nil |
1198 "*A hook called when exiting (not quitting) summary mode.") | 1201 "*A hook called when exiting (not quitting) summary mode.") |
1199 | 1202 |
1200 (defvar gnus-suspend-gnus-hook nil | 1203 (defvar gnus-suspend-gnus-hook nil |
3073 | 3076 |
3074 (defvar gnus-group-mode-map nil) | 3077 (defvar gnus-group-mode-map nil) |
3075 (defvar gnus-group-group-map nil) | 3078 (defvar gnus-group-group-map nil) |
3076 (defvar gnus-group-mark-map nil) | 3079 (defvar gnus-group-mark-map nil) |
3077 (defvar gnus-group-list-map nil) | 3080 (defvar gnus-group-list-map nil) |
3081 (defvar gnus-group-help-map nil) | |
3078 (defvar gnus-group-sub-map nil) | 3082 (defvar gnus-group-sub-map nil) |
3079 (put 'gnus-group-mode 'mode-class 'special) | 3083 (put 'gnus-group-mode 'mode-class 'special) |
3080 | 3084 |
3081 (if gnus-group-mode-map | 3085 (if gnus-group-mode-map |
3082 nil | 3086 nil |
3129 (define-key gnus-group-mode-map "s" 'gnus-group-save-newsrc) | 3133 (define-key gnus-group-mode-map "s" 'gnus-group-save-newsrc) |
3130 (define-key gnus-group-mode-map "z" 'gnus-group-suspend) | 3134 (define-key gnus-group-mode-map "z" 'gnus-group-suspend) |
3131 (define-key gnus-group-mode-map "Z" 'gnus-group-clear-dribble) | 3135 (define-key gnus-group-mode-map "Z" 'gnus-group-clear-dribble) |
3132 (define-key gnus-group-mode-map "q" 'gnus-group-exit) | 3136 (define-key gnus-group-mode-map "q" 'gnus-group-exit) |
3133 (define-key gnus-group-mode-map "Q" 'gnus-group-quit) | 3137 (define-key gnus-group-mode-map "Q" 'gnus-group-quit) |
3134 (define-key gnus-group-mode-map "\M-f" 'gnus-group-fetch-faq) | |
3135 (define-key gnus-group-mode-map "?" 'gnus-group-describe-briefly) | 3138 (define-key gnus-group-mode-map "?" 'gnus-group-describe-briefly) |
3136 (define-key gnus-group-mode-map "\C-c\C-i" 'gnus-info-find-node) | 3139 (define-key gnus-group-mode-map "\C-c\C-i" 'gnus-info-find-node) |
3137 (define-key gnus-group-mode-map "\M-e" 'gnus-group-edit-group-method) | 3140 (define-key gnus-group-mode-map "\M-e" 'gnus-group-edit-group-method) |
3138 (define-key gnus-group-mode-map "^" 'gnus-group-enter-server-mode) | 3141 (define-key gnus-group-mode-map "^" 'gnus-group-enter-server-mode) |
3139 (define-key gnus-group-mode-map gnus-mouse-2 'gnus-mouse-pick-group) | 3142 (define-key gnus-group-mode-map gnus-mouse-2 'gnus-mouse-pick-group) |
3178 (define-key gnus-group-list-map "u" 'gnus-group-list-all-groups) | 3181 (define-key gnus-group-list-map "u" 'gnus-group-list-all-groups) |
3179 (define-key gnus-group-list-map "a" 'gnus-group-apropos) | 3182 (define-key gnus-group-list-map "a" 'gnus-group-apropos) |
3180 (define-key gnus-group-list-map "d" 'gnus-group-description-apropos) | 3183 (define-key gnus-group-list-map "d" 'gnus-group-description-apropos) |
3181 (define-key gnus-group-list-map "m" 'gnus-group-list-matching) | 3184 (define-key gnus-group-list-map "m" 'gnus-group-list-matching) |
3182 (define-key gnus-group-list-map "M" 'gnus-group-list-all-matching) | 3185 (define-key gnus-group-list-map "M" 'gnus-group-list-all-matching) |
3186 | |
3187 (define-prefix-command 'gnus-group-help-map) | |
3188 (define-key gnus-group-mode-map "H" 'gnus-group-help-map) | |
3189 (define-key gnus-group-help-map "f" 'gnus-group-fetch-faq) | |
3183 | 3190 |
3184 (define-prefix-command 'gnus-group-sub-map) | 3191 (define-prefix-command 'gnus-group-sub-map) |
3185 (define-key gnus-group-mode-map "S" 'gnus-group-sub-map) | 3192 (define-key gnus-group-mode-map "S" 'gnus-group-sub-map) |
3186 (define-key gnus-group-sub-map "l" 'gnus-group-set-current-level) | 3193 (define-key gnus-group-sub-map "l" 'gnus-group-set-current-level) |
3187 (define-key gnus-group-sub-map "t" 'gnus-group-unsubscribe-current-group) | 3194 (define-key gnus-group-sub-map "t" 'gnus-group-unsubscribe-current-group) |
7173 (let ((cur nntp-server-buffer) | 7180 (let ((cur nntp-server-buffer) |
7174 (dependencies gnus-newsgroup-dependencies) | 7181 (dependencies gnus-newsgroup-dependencies) |
7175 headers id dep end ref) | 7182 headers id dep end ref) |
7176 (save-excursion | 7183 (save-excursion |
7177 (set-buffer nntp-server-buffer) | 7184 (set-buffer nntp-server-buffer) |
7185 ;; Allow the user to mangle the headers before parsing them. | |
7186 (run-hooks 'gnus-parse-headers-hook) | |
7178 (goto-char (point-min)) | 7187 (goto-char (point-min)) |
7179 ;; Search to the beginning of the next header. Error messages | 7188 ;; Search to the beginning of the next header. Error messages |
7180 ;; do not begin with 2 or 3. | 7189 ;; do not begin with 2 or 3. |
7181 (while (re-search-forward "^[23][0-9]+ " nil t) | 7190 (while (re-search-forward "^[23][0-9]+ " nil t) |
7182 (let ((header (make-vector 9 nil)) | 7191 (let ((header (make-vector 9 nil)) |
7310 (let ((cur nntp-server-buffer) | 7319 (let ((cur nntp-server-buffer) |
7311 (dependencies gnus-newsgroup-dependencies) | 7320 (dependencies gnus-newsgroup-dependencies) |
7312 number headers header) | 7321 number headers header) |
7313 (save-excursion | 7322 (save-excursion |
7314 (set-buffer nntp-server-buffer) | 7323 (set-buffer nntp-server-buffer) |
7324 ;; Allow the user to mangle the headers before parsing them. | |
7325 (run-hooks 'gnus-parse-headers-hook) | |
7315 (goto-char (point-min)) | 7326 (goto-char (point-min)) |
7316 (while (and sequence (not (eobp))) | 7327 (while (and sequence (not (eobp))) |
7317 (setq number (read cur)) | 7328 (setq number (read cur)) |
7318 (while (and sequence (< (car sequence) number)) | 7329 (while (and sequence (< (car sequence) number)) |
7319 (setq sequence (cdr sequence))) | 7330 (setq sequence (cdr sequence))) |
8957 (save-excursion | 8968 (save-excursion |
8958 (set-buffer copy-buf) | 8969 (set-buffer copy-buf) |
8959 (gnus-request-article-this-buffer | 8970 (gnus-request-article-this-buffer |
8960 (car articles) gnus-newsgroup-name) | 8971 (car articles) gnus-newsgroup-name) |
8961 (gnus-request-accept-article | 8972 (gnus-request-accept-article |
8962 (if select-method (quote select-method) to-newsgroup) | 8973 (if select-method (list 'quote select-method) to-newsgroup) |
8963 (not (cdr articles))))) | 8974 (not (cdr articles))))) |
8964 (let* ((entry | 8975 (let* ((entry |
8965 (or | 8976 (or |
8966 (gnus-gethash (car art-group) gnus-newsrc-hashtb) | 8977 (gnus-gethash (car art-group) gnus-newsrc-hashtb) |
8967 (gnus-gethash | 8978 (gnus-gethash |
9429 (interactive "p") | 9440 (interactive "p") |
9430 (gnus-summary-mark-forward n gnus-dormant-mark)) | 9441 (gnus-summary-mark-forward n gnus-dormant-mark)) |
9431 | 9442 |
9432 (defun gnus-summary-set-process-mark (article) | 9443 (defun gnus-summary-set-process-mark (article) |
9433 "Set the process mark on ARTICLE and update the summary line." | 9444 "Set the process mark on ARTICLE and update the summary line." |
9434 (setq gnus-newsgroup-processable (cons article gnus-newsgroup-processable)) | 9445 (setq gnus-newsgroup-processable |
9446 (cons article | |
9447 (delq article gnus-newsgroup-processable))) | |
9435 (let ((buffer-read-only nil)) | 9448 (let ((buffer-read-only nil)) |
9436 (if (gnus-summary-goto-subject article) | 9449 (if (gnus-summary-goto-subject article) |
9437 (progn | 9450 (progn |
9438 (gnus-summary-show-thread) | 9451 (gnus-summary-show-thread) |
9439 (and (eq (gnus-summary-article-mark) gnus-dummy-mark) | 9452 (and (eq (gnus-summary-article-mark) gnus-dummy-mark) |
9755 "Remove lines that are marked with MARKS (e.g. \"DK\")." | 9768 "Remove lines that are marked with MARKS (e.g. \"DK\")." |
9756 (interactive "sMarks: ") | 9769 (interactive "sMarks: ") |
9757 ;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu>. | 9770 ;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu>. |
9758 (gnus-set-global-variables) | 9771 (gnus-set-global-variables) |
9759 (let ((buffer-read-only nil) | 9772 (let ((buffer-read-only nil) |
9760 (orig-article (gnus-summary-article-number)) | 9773 (orig-article |
9774 (progn | |
9775 (gnus-summary-search-forward t) | |
9776 (gnus-summary-article-number))) | |
9761 (marks (concat "^[" marks "]"))) | 9777 (marks (concat "^[" marks "]"))) |
9762 (goto-char (point-min)) | 9778 (goto-char (point-min)) |
9763 (if gnus-newsgroup-adaptive | 9779 (if gnus-newsgroup-adaptive |
9764 (gnus-score-remove-lines-adaptive marks) | 9780 (gnus-score-remove-lines-adaptive marks) |
9765 (while (re-search-forward marks nil t) | 9781 (while (re-search-forward marks nil t) |
10229 (gnus-set-global-variables) | 10245 (gnus-set-global-variables) |
10230 (gnus-summary-sort | 10246 (gnus-summary-sort |
10231 (cons | 10247 (cons |
10232 (lambda () | 10248 (lambda () |
10233 (let* ((header (gnus-get-header-by-num (gnus-summary-article-number))) | 10249 (let* ((header (gnus-get-header-by-num (gnus-summary-article-number))) |
10234 (extract (funcall | 10250 extract) |
10235 gnus-extract-address-components | 10251 (if (not (vectorp header)) |
10236 (mail-header-from header)))) | 10252 "" |
10237 (concat (or (car extract) (cdr extract)) | 10253 (setq extract (funcall gnus-extract-address-components |
10238 "\r" (int-to-string (mail-header-number header)) | 10254 (mail-header-from header))) |
10239 "\r" (mail-header-subject header)))) | 10255 (concat (or (car extract) (cdr extract)) |
10256 "\r" (int-to-string (mail-header-number header)) | |
10257 "\r" (mail-header-subject header))))) | |
10240 'gnus-thread-sort-by-author) | 10258 'gnus-thread-sort-by-author) |
10241 reverse)) | 10259 reverse)) |
10242 | 10260 |
10243 (defun gnus-summary-sort-by-subject (&optional reverse) | 10261 (defun gnus-summary-sort-by-subject (&optional reverse) |
10244 "Sort summary buffer by subject alphabetically. `Re:'s are ignored. | 10262 "Sort summary buffer by subject alphabetically. `Re:'s are ignored. |
10248 (gnus-set-global-variables) | 10266 (gnus-set-global-variables) |
10249 (gnus-summary-sort | 10267 (gnus-summary-sort |
10250 (cons | 10268 (cons |
10251 (lambda () | 10269 (lambda () |
10252 (let* ((header (gnus-get-header-by-num (gnus-summary-article-number))) | 10270 (let* ((header (gnus-get-header-by-num (gnus-summary-article-number))) |
10253 (extract (funcall | 10271 extract) |
10254 gnus-extract-address-components | 10272 (if (not (vectorp header)) |
10255 (mail-header-from header)))) | 10273 "" |
10256 (concat | 10274 (setq extract (funcall gnus-extract-address-components |
10257 (downcase (gnus-simplify-subject (gnus-summary-subject-string) t)) | 10275 (mail-header-from header))) |
10258 "\r" (int-to-string (mail-header-number header)) | 10276 (concat |
10259 "\r" (or (car extract) (cdr extract))))) | 10277 (downcase (gnus-simplify-subject (gnus-summary-subject-string) t)) |
10278 "\r" (int-to-string (mail-header-number header)) | |
10279 "\r" (or (car extract) (cdr extract)))))) | |
10260 'gnus-thread-sort-by-subject) | 10280 'gnus-thread-sort-by-subject) |
10261 reverse)) | 10281 reverse)) |
10262 | 10282 |
10263 (defun gnus-summary-sort-by-date (&optional reverse) | 10283 (defun gnus-summary-sort-by-date (&optional reverse) |
10264 "Sort summary buffer by date. | 10284 "Sort summary buffer by date. |
10851 (if (or (stringp article) (numberp article)) | 10871 (if (or (stringp article) (numberp article)) |
10852 (progn | 10872 (progn |
10853 (erase-buffer) | 10873 (erase-buffer) |
10854 ;; There may be some overlays that we have to kill... | 10874 ;; There may be some overlays that we have to kill... |
10855 (insert "i") | 10875 (insert "i") |
10856 (let ((overlays (overlays-at (point-min)))) | 10876 (let ((overlays (and (fboundp 'overlays-at) |
10877 (overlays-at (point-min))))) | |
10857 (while overlays | 10878 (while overlays |
10858 (delete-overlay (car overlays)) | 10879 (delete-overlay (car overlays)) |
10859 (setq overlays (cdr overlays)))) | 10880 (setq overlays (cdr overlays)))) |
10860 (erase-buffer) | 10881 (erase-buffer) |
10861 (let ((gnus-override-method | 10882 (let ((gnus-override-method |
12054 | 12075 |
12055 (gnus-update-format-specifications) | 12076 (gnus-update-format-specifications) |
12056 | 12077 |
12057 ;; Find new newsgroups and treat them. | 12078 ;; Find new newsgroups and treat them. |
12058 (if (and init gnus-check-new-newsgroups gnus-read-active-file (not level) | 12079 (if (and init gnus-check-new-newsgroups gnus-read-active-file (not level) |
12059 (gnus-server-opened gnus-select-method)) | 12080 (gnus-check-server gnus-select-method)) |
12060 (gnus-find-new-newsgroups)) | 12081 (gnus-find-new-newsgroups)) |
12061 | 12082 |
12062 ;; Find the number of unread articles in each non-dead group. | 12083 ;; Find the number of unread articles in each non-dead group. |
12063 (let ((gnus-read-active-file (and (not level) gnus-read-active-file))) | 12084 (let ((gnus-read-active-file (and (not level) gnus-read-active-file))) |
12064 (gnus-get-unread-articles (or level (1+ gnus-level-subscribed)))) | 12085 (gnus-get-unread-articles (or level (1+ gnus-level-subscribed)))) |