aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen1995-12-06 21:19:47 +0000
committerLars Magne Ingebrigtsen1995-12-06 21:19:47 +0000
commit7e988fb615565b9b757501f340d05278bdd09cee (patch)
tree92fb7159b2d55daf3f352ce06ade0f6d80dd7d41
parente1dadc172e73067afc270bca4f94327e7f3ffe32 (diff)
downloademacs-7e988fb615565b9b757501f340d05278bdd09cee.tar.gz
emacs-7e988fb615565b9b757501f340d05278bdd09cee.zip
* 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.
-rw-r--r--lisp/gnus.el59
1 files changed, 40 insertions, 19 deletions
diff --git a/lisp/gnus.el b/lisp/gnus.el
index 1b6be07ddc9..cd12431adaf 100644
--- a/lisp/gnus.el
+++ b/lisp/gnus.el
@@ -1194,6 +1194,9 @@ following hook:
1194It is meant to be used for highlighting the article in some way. It 1194It is meant to be used for highlighting the article in some way. It
1195is not run if `gnus-visual' is nil.") 1195is not run if `gnus-visual' is nil.")
1196 1196
1197(defun gnus-parse-headers-hook nil
1198 "*A hook called before parsing the headers.")
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
@@ -3075,6 +3078,7 @@ Note: LIST has to be sorted over `<'."
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
@@ -3131,7 +3135,6 @@ Note: LIST has to be sorted over `<'."
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)
@@ -3181,6 +3184,10 @@ Note: LIST has to be sorted over `<'."
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)
3183 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)
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)
@@ -7175,6 +7182,8 @@ The resulting hash table is returned, or nil if no Xrefs were found."
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.
@@ -7312,6 +7321,8 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')."
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))
@@ -8959,7 +8970,7 @@ functions. (Ie. mail newsgroups at present.)"
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
@@ -9431,7 +9442,9 @@ the actual number of articles marked is returned."
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
@@ -9757,7 +9770,10 @@ even ticked and dormant ones."
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
@@ -10231,12 +10247,14 @@ Argument REVERSE means reverse order."
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
@@ -10250,13 +10268,15 @@ Argument REVERSE means reverse order."
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
@@ -10853,7 +10873,8 @@ The following commands are available:
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))))
@@ -12056,7 +12077,7 @@ If LEVEL is non-nil, the news will be set up at level LEVEL."
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.