*** pub/dgnus/lisp/custom.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/custom.el Wed Aug 30 18:03:24 1995 *************** *** 248,258 **** "Symbol used for highlighting text under mouse.") ;; Put it in the Help menu, if possible. ! (condition-case nil ! ;; This will not work under XEmacs. ! (global-set-key [ menu-bar help-menu customize ] ! '("Customize..." . customize)) ! (error nil)) ;;; Categories: ;; --- 248,258 ---- "Symbol used for highlighting text under mouse.") ;; Put it in the Help menu, if possible. ! (if (string-match "XEmacs" emacs-version) ! nil ! ;; This will not work under XEmacs. ! (global-set-key [ menu-bar help-menu customize ] ! '("Customize..." . customize))) ;;; Categories: ;; *** pub/dgnus/lisp/gnus-cache.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-cache.el Wed Aug 30 14:38:40 1995 *************** *** 117,135 **** (defun gnus-cache-possibly-enter-article (group article headers ticked dormant unread) ! (let ((number (header-number headers)) file dir) ! (if (or (not (vectorp headers)) ; This might be a dummy article. (not (gnus-cache-member-of-class gnus-cache-enter-articles ticked dormant unread)) (file-exists-p (setq file (gnus-cache-file-name group article)))) ! () ; Do nothing. ;; Possibly create the cache directory. (or (file-exists-p (setq dir (file-name-directory file))) (gnus-make-directory dir)) ;; Save the article in the cache. (if (file-exists-p file) ! t ; The article already is saved, so we end here. (let ((gnus-use-cache nil)) (gnus-summary-select-article)) (save-excursion --- 117,135 ---- (defun gnus-cache-possibly-enter-article (group article headers ticked dormant unread) ! (let ((number (mail-header-number headers)) file dir) ! (if (or (not (vectorp headers)) ; This might be a dummy article. (not (gnus-cache-member-of-class gnus-cache-enter-articles ticked dormant unread)) (file-exists-p (setq file (gnus-cache-file-name group article)))) ! () ; Do nothing. ;; Possibly create the cache directory. (or (file-exists-p (setq dir (file-name-directory file))) (gnus-make-directory dir)) ;; Save the article in the cache. (if (file-exists-p file) ! t ; The article already is saved, so we end here. (let ((gnus-use-cache nil)) (gnus-summary-select-article)) (save-excursion *************** *** 155,169 **** (beginning-of-line) ;; [number subject from date id references chars lines xref] (insert (format "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n" ! (header-number headers) ! (header-subject headers) ! (header-from headers) ! (header-date headers) ! (header-id headers) ! (or (header-references headers) "") ! (or (header-chars headers) "") ! (or (header-lines headers) "") ! (or (header-xref headers) "")))) t)))) (defun gnus-cache-enter-remove-article (article) --- 155,169 ---- (beginning-of-line) ;; [number subject from date id references chars lines xref] (insert (format "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n" ! (mail-header-number headers) ! (mail-header-subject headers) ! (mail-header-from headers) ! (mail-header-date headers) ! (mail-header-id headers) ! (or (mail-header-references headers) "") ! (or (mail-header-chars headers) "") ! (or (mail-header-lines headers) "") ! (or (mail-header-xref headers) "")))) t)))) (defun gnus-cache-enter-remove-article (article) *** pub/dgnus/lisp/gnus-cite.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-cite.el Wed Aug 30 14:38:38 1995 *************** *** 389,414 **** gnus-cite-loose-attribution-alist)))) ;; Find exact supercite citations. (gnus-cite-match-attributions 'small nil ! (lambda (prefix tag) ! (if tag ! (concat "\\`" (regexp-quote prefix) "[ \t]*" ! (regexp-quote tag) ">")))) ;; Find loose supercite citations after attributions. (gnus-cite-match-attributions 'small t ! (lambda (prefix tag) ! (if tag (concat "\\<" (regexp-quote tag) "\\>")))) ;; Find loose supercite citations anywhere. (gnus-cite-match-attributions 'small nil ! (lambda (prefix tag) ! (if tag (concat "\\<" (regexp-quote tag) "\\>")))) ;; Find nested citations after attributions. (gnus-cite-match-attributions 'small-if-unique t ! (lambda (prefix tag) ! (concat "\\`" (regexp-quote prefix) ".+"))) ;; Find nested citations anywhere. (gnus-cite-match-attributions 'small nil ! (lambda (prefix tag) ! (concat "\\`" (regexp-quote prefix) ".+"))) ;; Remove loose prefixes with too few lines. (let ((alist gnus-cite-loose-prefix-alist) entry) --- 389,414 ---- gnus-cite-loose-attribution-alist)))) ;; Find exact supercite citations. (gnus-cite-match-attributions 'small nil ! (lambda (prefix tag) ! (if tag ! (concat "\\`" (regexp-quote prefix) "[ \t]*" ! (regexp-quote tag) ">")))) ;; Find loose supercite citations after attributions. (gnus-cite-match-attributions 'small t ! (lambda (prefix tag) ! (if tag (concat "\\<" (regexp-quote tag) "\\>")))) ;; Find loose supercite citations anywhere. (gnus-cite-match-attributions 'small nil ! (lambda (prefix tag) ! (if tag (concat "\\<" (regexp-quote tag) "\\>")))) ;; Find nested citations after attributions. (gnus-cite-match-attributions 'small-if-unique t ! (lambda (prefix tag) ! (concat "\\`" (regexp-quote prefix) ".+"))) ;; Find nested citations anywhere. (gnus-cite-match-attributions 'small nil ! (lambda (prefix tag) ! (concat "\\`" (regexp-quote prefix) ".+"))) ;; Remove loose prefixes with too few lines. (let ((alist gnus-cite-loose-prefix-alist) entry) *************** *** 487,507 **** (setq gnus-cite-attribution-alist (cons (cons in (car best)) gnus-cite-attribution-alist))) (if (memq best gnus-cite-loose-prefix-alist) ! (let ((loop gnus-cite-prefix-alist) ! (numbers (cdr best)) ! current) ! (setq gnus-cite-loose-prefix-alist ! (delq best gnus-cite-loose-prefix-alist)) ! (while loop ! (setq current (car loop) ! loop (cdr loop)) ! (if (eq current best) ! () ! (setcdr current (gnus-set-difference (cdr current) numbers)) ! (if (null (cdr current)) ! (setq gnus-cite-loose-prefix-alist ! (delq current gnus-cite-loose-prefix-alist) ! atts (delq current atts))))))))))) (defun gnus-cite-find-loose (prefix) ;; Return a list of loose attribution lines prefixed by PREFIX. --- 487,507 ---- (setq gnus-cite-attribution-alist (cons (cons in (car best)) gnus-cite-attribution-alist))) (if (memq best gnus-cite-loose-prefix-alist) ! (let ((loop gnus-cite-prefix-alist) ! (numbers (cdr best)) ! current) ! (setq gnus-cite-loose-prefix-alist ! (delq best gnus-cite-loose-prefix-alist)) ! (while loop ! (setq current (car loop) ! loop (cdr loop)) ! (if (eq current best) ! () ! (setcdr current (gnus-set-difference (cdr current) numbers)) ! (if (null (cdr current)) ! (setq gnus-cite-loose-prefix-alist ! (delq current gnus-cite-loose-prefix-alist) ! atts (delq current atts))))))))))) (defun gnus-cite-find-loose (prefix) ;; Return a list of loose attribution lines prefixed by PREFIX. *** pub/dgnus/lisp/gnus-cus.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-cus.el Tue Aug 29 14:58:11 1995 *************** *** 40,46 **** "turquoise")) (defvar gnus-face-dark-name-list ! '("blue" "firebrick" "dark green" "dark orange" "dark khaki" "dark violet" "dark turquoise")) --- 40,46 ---- "turquoise")) (defvar gnus-face-dark-name-list ! '("skyblue" "firebrick" "dark green" "dark orange" "dark khaki" "dark violet" "dark turquoise")) *************** *** 326,332 **** ((eq gnus-background-mode 'dark) (list (list "From" nil (custom-face-lookup ! "SkyeBlue" nil nil t t nil)) (list "Subject" nil (custom-face-lookup "pink" nil nil t t nil)) --- 326,332 ---- ((eq gnus-background-mode 'dark) (list (list "From" nil (custom-face-lookup ! "SkyBlue" nil nil t t nil)) (list "Subject" nil (custom-face-lookup "pink" nil nil t t nil)) *************** *** 337,343 **** (custom-face-lookup "cyan" nil nil t nil nil) (custom-face-lookup ! "green" nil nil nil t nil)))) (t (list (list "From" nil --- 337,343 ---- (custom-face-lookup "cyan" nil nil t nil nil) (custom-face-lookup ! "forestgreen" nil nil nil t nil)))) (t (list (list "From" nil *************** *** 350,356 **** nil nil t t nil)) (list "Newsgroups:.*," nil (custom-face-lookup ! "red" nil nil t t nil)) (list "" (custom-face-lookup "DarkGreen" --- 350,356 ---- nil nil t t nil)) (list "Newsgroups:.*," nil (custom-face-lookup ! "indianred" nil nil t t nil)) (list "" (custom-face-lookup "DarkGreen" *** pub/dgnus/lisp/gnus-ems.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-ems.el Wed Aug 30 14:38:36 1995 *************** *** 302,321 **** (let ((header (car (gnus-gethash (downcase message-id) gnus-newsgroup-dependencies)))) (if header ! (or (gnus-summary-goto-article (header-number header)) ;; The header has been read, but the article had been ;; expunged, so we insert it again. (let ((beg (point))) (gnus-summary-insert-line nil header 0 nil gnus-read-mark nil nil ! (header-subject header)) (save-excursion (goto-char beg) (remove-text-properties (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) '(gnus-number nil gnus-mark nil gnus-level nil))) (forward-line -1) ! (header-number header))) (let ((gnus-override-method gnus-refer-article-method) (gnus-ancient-mark gnus-read-mark) (tmp-point (window-start --- 302,321 ---- (let ((header (car (gnus-gethash (downcase message-id) gnus-newsgroup-dependencies)))) (if header ! (or (gnus-summary-goto-article (mail-header-number header)) ;; The header has been read, but the article had been ;; expunged, so we insert it again. (let ((beg (point))) (gnus-summary-insert-line nil header 0 nil gnus-read-mark nil nil ! (mail-header-subject header)) (save-excursion (goto-char beg) (remove-text-properties (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) '(gnus-number nil gnus-mark nil gnus-level nil))) (forward-line -1) ! (mail-header-number header))) (let ((gnus-override-method gnus-refer-article-method) (gnus-ancient-mark gnus-read-mark) (tmp-point (window-start *************** *** 332,338 **** (if (gnus-article-prepare message-id nil (gnus-read-header message-id)) (progn ! (setq number (header-number gnus-current-headers)) (gnus-rebuild-thread message-id) (gnus-summary-goto-subject number) (gnus-summary-recenter) --- 332,338 ---- (if (gnus-article-prepare message-id nil (gnus-read-header message-id)) (progn ! (setq number (mail-header-number gnus-current-headers)) (gnus-rebuild-thread message-id) (gnus-summary-goto-subject number) (gnus-summary-recenter) *************** *** 447,453 **** (if fun (funcall fun data)))) ;; Re-build the thread containing ID. ! (defun gnus-rebuild-thread-xemacs (id) (let ((dep gnus-newsgroup-dependencies) (buffer-read-only nil) parent headers refs thread art) --- 447,453 ---- (if fun (funcall fun data)))) ;; Re-build the thread containing ID. ! (defun gnus-rebuild-thread-xemacs (id) (let ((dep gnus-newsgroup-dependencies) (buffer-read-only nil) parent headers refs thread art) *************** *** 455,461 **** (car (setq art (gnus-gethash (downcase id) dep))))) (setq parent art) ! (setq id (and (setq refs (header-references headers)) (string-match "\\(<[^>]+>\\) *$" refs) (substring refs (match-beginning 1) (match-end 1))))) (setq thread (gnus-make-sub-thread (car parent))) --- 455,461 ---- (car (setq art (gnus-gethash (downcase id) dep))))) (setq parent art) ! (setq id (and (setq refs (mail-header-references headers)) (string-match "\\(<[^>]+>\\) *$" refs) (substring refs (match-beginning 1) (match-end 1))))) (setq thread (gnus-make-sub-thread (car parent))) *************** *** 465,473 **** (save-excursion (while (and (>= (point) beg) (not (bobp))) ! (remove-text-properties ! (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) ! '(gnus-number nil gnus-mark nil gnus-level nil)) (forward-line -1))) (gnus-summary-update-lines beg (point))))) --- 465,474 ---- (save-excursion (while (and (>= (point) beg) (not (bobp))) ! (or (eobp) ! (remove-text-properties ! (1+ (gnus-point-at-bol)) (1+ (gnus-point-at-eol)) ! '(gnus-number nil gnus-mark nil gnus-level nil))) (forward-line -1))) (gnus-summary-update-lines beg (point))))) *************** *** 488,493 **** --- 489,517 ---- (defun gnus-window-top-edge-xemacs (&optional window) (nth 1 (window-pixel-edges window))) + ;; Select the lowest window on the frame. + (defun gnus-appt-select-lowest-window-xemacs () + (let* ((lowest-window (selected-window)) + (bottom-edge (car (cdr (cdr (cdr (window-pixel-edges)))))) + (last-window (previous-window)) + (window-search t)) + (while window-search + (let* ((this-window (next-window)) + (next-bottom-edge (car (cdr (cdr (cdr + (window-pixel-edges + this-window))))))) + (if (< bottom-edge next-bottom-edge) + (progn + (setq bottom-edge next-bottom-edge) + (setq lowest-window this-window))) + + (select-window this-window) + (if (eq last-window this-window) + (progn + (select-window lowest-window) + (setq window-search nil))))))) + + (defun gnus-ems-redefine () (cond ((string-match "XEmacs\\|Lucid" emacs-version) *************** *** 508,538 **** (fset 'gnus-article-add-button 'gnus-article-add-button-xemacs) (fset 'gnus-window-top-edge 'gnus-window-top-edge-xemacs) (if (not gnus-visual) () (setq gnus-group-mode-hook (cons '(lambda () ! (easy-menu-add gnus-group-reading-menu) ! (easy-menu-add gnus-group-group-menu) ! (easy-menu-add gnus-group-misc-menu) ! (gnus-install-mouse-tracker)) gnus-group-mode-hook)) (setq gnus-summary-mode-hook (cons '(lambda () ! (easy-menu-add gnus-summary-article-menu) ! (easy-menu-add gnus-summary-thread-menu) ! (easy-menu-add gnus-summary-misc-menu) ! (easy-menu-add gnus-summary-post-menu) ! (easy-menu-add gnus-summary-kill-menu) ! (gnus-install-mouse-tracker)) gnus-summary-mode-hook)) (setq gnus-article-mode-hook (cons '(lambda () ! (easy-menu-add gnus-article-article-menu) ! (easy-menu-add gnus-article-treatment-menu)) gnus-article-mode-hook))) (defvar gnus-logo (make-glyph (make-specifier 'image))) --- 532,566 ---- (fset 'gnus-article-add-button 'gnus-article-add-button-xemacs) (fset 'gnus-window-top-edge 'gnus-window-top-edge-xemacs) + (or (fboundp 'appt-select-lowest-window) + (fset 'appt-select-lowest-window + 'gnus-appt-select-lowest-window-xemacs)) + (if (not gnus-visual) () (setq gnus-group-mode-hook (cons '(lambda () ! (easy-menu-add gnus-group-reading-menu) ! (easy-menu-add gnus-group-group-menu) ! (easy-menu-add gnus-group-misc-menu) ! (gnus-install-mouse-tracker)) gnus-group-mode-hook)) (setq gnus-summary-mode-hook (cons '(lambda () ! (easy-menu-add gnus-summary-article-menu) ! (easy-menu-add gnus-summary-thread-menu) ! (easy-menu-add gnus-summary-misc-menu) ! (easy-menu-add gnus-summary-post-menu) ! (easy-menu-add gnus-summary-kill-menu) ! (gnus-install-mouse-tracker)) gnus-summary-mode-hook)) (setq gnus-article-mode-hook (cons '(lambda () ! (easy-menu-add gnus-article-article-menu) ! (easy-menu-add gnus-article-treatment-menu)) gnus-article-mode-hook))) (defvar gnus-logo (make-glyph (make-specifier 'image))) *** pub/dgnus/lisp/gnus-kill.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-kill.el Wed Aug 30 14:38:35 1995 *************** *** 199,205 **** "Subject" (if (vectorp gnus-current-headers) (regexp-quote ! (gnus-simplify-subject (header-subject gnus-current-headers))) ""))) (defun gnus-kill-file-kill-by-author () --- 199,205 ---- "Subject" (if (vectorp gnus-current-headers) (regexp-quote ! (gnus-simplify-subject (mail-header-subject gnus-current-headers))) ""))) (defun gnus-kill-file-kill-by-author () *************** *** 208,214 **** (gnus-kill-file-enter-kill "From" (if (vectorp gnus-current-headers) ! (regexp-quote (header-from gnus-current-headers)) ""))) (defun gnus-kill-file-kill-by-thread () --- 208,214 ---- (gnus-kill-file-enter-kill "From" (if (vectorp gnus-current-headers) ! (regexp-quote (mail-header-from gnus-current-headers)) ""))) (defun gnus-kill-file-kill-by-thread () *************** *** 217,230 **** (gnus-kill-file-enter-kill "References" (if (vectorp gnus-current-headers) ! (regexp-quote (header-id gnus-current-headers)) ""))) (defun gnus-kill-file-kill-by-xref () "Kill by Xref." (interactive) (let ((xref (and (vectorp gnus-current-headers) ! (header-xref gnus-current-headers))) (start 0) group) (if xref --- 217,230 ---- (gnus-kill-file-enter-kill "References" (if (vectorp gnus-current-headers) ! (regexp-quote (mail-header-id gnus-current-headers)) ""))) (defun gnus-kill-file-kill-by-xref () "Kill by Xref." (interactive) (let ((xref (and (vectorp gnus-current-headers) ! (mail-header-xref gnus-current-headers))) (start 0) group) (if xref *************** *** 241,247 **** (defun gnus-kill-file-raise-followups-to-author (level) "Raise score for all followups to the current author." (interactive "p") ! (let ((name (header-from gnus-current-headers)) string) (save-excursion (gnus-kill-set-kill-buffer) --- 241,247 ---- (defun gnus-kill-file-raise-followups-to-author (level) "Raise score for all followups to the current author." (interactive "p") ! (let ((name (mail-header-from gnus-current-headers)) string) (save-excursion (gnus-kill-set-kill-buffer) *************** *** 357,370 **** (let ((headers gnus-newsgroup-headers)) (if gnus-kill-killed (setq gnus-newsgroup-kill-headers ! (mapcar (lambda (header) (header-number header)) headers)) (while headers (or (gnus-member-of-range ! (header-number (car headers)) gnus-newsgroup-killed) (setq gnus-newsgroup-kill-headers ! (cons (header-number (car headers)) gnus-newsgroup-kill-headers))) (setq headers (cdr headers)))) (setq files nil)) --- 357,370 ---- (let ((headers gnus-newsgroup-headers)) (if gnus-kill-killed (setq gnus-newsgroup-kill-headers ! (mapcar (lambda (header) (mail-header-number header)) headers)) (while headers (or (gnus-member-of-range ! (mail-header-number (car headers)) gnus-newsgroup-killed) (setq gnus-newsgroup-kill-headers ! (cons (mail-header-number (car headers)) gnus-newsgroup-kill-headers))) (setq headers (cdr headers)))) (setq files nil)) *************** *** 444,473 **** '((?m . " ") (?j . "X"))) pattern modifier commands) ! (while (not (eobp)) ! (if (not (looking-at "[ \t]*/\\([^/]*\\)/\\([ahfcH]\\)?:\\([a-z=:]*\\)")) ! () ! (setq pattern (buffer-substring (match-beginning 1) (match-end 1))) ! (setq modifier (if (match-beginning 2) (char-after (match-beginning 2)) ! ?s)) ! (setq commands (buffer-substring (match-beginning 3) (match-end 3))) ! ! ;; The "f:+" command marks everything *but* the matches as read, ! ;; so we simply first match everything as read, and then unmark ! ;; PATTERN later. ! (and (string-match "\\+" commands) ! (progn ! (gnus-kill "from" ".") ! (setq commands "m"))) ! ! (gnus-kill ! (or (cdr (assq modifier mod-to-header)) "subject") ! pattern ! (if (string-match "m" commands) ! '(gnus-summary-mark-as-unread nil " ") ! '(gnus-summary-mark-as-read nil "X")) ! nil t)) ! (forward-line 1)))) ;; Kill changes and new format by suggested by JWZ and Sudish Joseph ;; . --- 444,473 ---- '((?m . " ") (?j . "X"))) pattern modifier commands) ! (while (not (eobp)) ! (if (not (looking-at "[ \t]*/\\([^/]*\\)/\\([ahfcH]\\)?:\\([a-z=:]*\\)")) ! () ! (setq pattern (buffer-substring (match-beginning 1) (match-end 1))) ! (setq modifier (if (match-beginning 2) (char-after (match-beginning 2)) ! ?s)) ! (setq commands (buffer-substring (match-beginning 3) (match-end 3))) ! ! ;; The "f:+" command marks everything *but* the matches as read, ! ;; so we simply first match everything as read, and then unmark ! ;; PATTERN later. ! (and (string-match "\\+" commands) ! (progn ! (gnus-kill "from" ".") ! (setq commands "m"))) ! ! (gnus-kill ! (or (cdr (assq modifier mod-to-header)) "subject") ! pattern ! (if (string-match "m" commands) ! '(gnus-summary-mark-as-unread nil " ") ! '(gnus-summary-mark-as-read nil "X")) ! nil t)) ! (forward-line 1)))) ;; Kill changes and new format by suggested by JWZ and Sudish Joseph ;; . *************** *** 584,592 **** (gnus-last-article nil) (gnus-break-pages nil) ;No need to break pages. (gnus-mark-article-hook nil)) ;Inhibit marking as read. ! (message "Searching for article: %d..." (header-number header)) (gnus-article-setup-buffer) ! (gnus-article-prepare (header-number header) t) (if (save-excursion (set-buffer gnus-article-buffer) (goto-char (point-min)) --- 584,592 ---- (gnus-last-article nil) (gnus-break-pages nil) ;No need to break pages. (gnus-mark-article-hook nil)) ;Inhibit marking as read. ! (message "Searching for article: %d..." (mail-header-number header)) (gnus-article-setup-buffer) ! (gnus-article-prepare (mail-header-number header) t) (if (save-excursion (set-buffer gnus-article-buffer) (goto-char (point-min)) *** pub/dgnus/lisp/gnus-msg.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-msg.el Wed Aug 30 14:57:50 1995 *************** *** 348,354 **** (if (not (string-equal (downcase (mail-strip-quoted-names ! (header-from gnus-current-headers))) (downcase (mail-strip-quoted-names (gnus-inews-user-name))))) (error "This article is not yours.")) (save-excursion --- 348,354 ---- (if (not (string-equal (downcase (mail-strip-quoted-names ! (mail-header-from gnus-current-headers))) (downcase (mail-strip-quoted-names (gnus-inews-user-name))))) (error "This article is not yours.")) (save-excursion *************** *** 424,430 **** (save-excursion (set-buffer gnus-summary-buffer) (cons (current-buffer) gnus-current-article)))) ! (from (and header (header-from header))) (winconf (current-window-configuration)) real-group) (and gnus-interactive-post --- 424,430 ---- (save-excursion (set-buffer gnus-summary-buffer) (cons (current-buffer) gnus-current-article)))) ! (from (and header (mail-header-from header))) (winconf (current-window-configuration)) real-group) (and gnus-interactive-post *************** *** 463,469 **** (make-local-variable 'gnus-article-reply) (make-local-variable 'gnus-article-check-size) (make-local-variable 'gnus-reply-subject) ! (setq gnus-reply-subject (and header (header-subject header))) (setq gnus-article-reply sumart) ;; Handle `gnus-auto-mail-to-author'. ;; Suggested by Daniel Quinlan . --- 463,469 ---- (make-local-variable 'gnus-article-reply) (make-local-variable 'gnus-article-check-size) (make-local-variable 'gnus-reply-subject) ! (setq gnus-reply-subject (and header (mail-header-subject header))) (setq gnus-article-reply sumart) ;; Handle `gnus-auto-mail-to-author'. ;; Suggested by Daniel Quinlan . *************** *** 1067,1074 **** (if (or (not (re-search-forward (concat "^" (downcase (symbol-name header)) ":") nil t)) (progn ! (if (= (following-char) ? ) (forward-char 1) (insert " ")) (looking-at "[ \t]*$"))) (progn (setq value (or (if (consp elem) --- 1067,1078 ---- (if (or (not (re-search-forward (concat "^" (downcase (symbol-name header)) ":") nil t)) (progn ! ;; The header was found. We insert a space after the ! ;; colon, if there is none. ! (if (/= (following-char) ? ) (insert " ")) ! ;; Find out whether the header is empty... (looking-at "[ \t]*$"))) + ;; So we find out what value we should insert. (progn (setq value (or (if (consp elem) *************** *** 1490,1496 **** (setq follow-to (funcall gnus-reply-to-function group))) (setq from (mail-fetch-field "from")) (setq date (or (mail-fetch-field "date") ! (header-date gnus-current-headers))) (and from (let ((stop-pos (string-match " *at \\| *@ \\| *(\\| *<" from))) --- 1494,1500 ---- (setq follow-to (funcall gnus-reply-to-function group))) (setq from (mail-fetch-field "from")) (setq date (or (mail-fetch-field "date") ! (mail-header-date gnus-current-headers))) (and from (let ((stop-pos (string-match " *at \\| *@ \\| *(\\| *<" from))) *************** *** 1522,1527 **** --- 1526,1532 ---- (or follow-to reply-to from sender ""))) subject message-of nil gnus-article-copy nil) + (auto-save-mode auto-save-default) (use-local-map (copy-keymap mail-mode-map)) (local-set-key "\C-c\C-c" 'gnus-mail-send-and-exit) *************** *** 1579,1585 **** (defun gnus-mail-yank-original () (interactive) (save-excursion ! (mail-yank-original nil)) (or mail-yank-hooks mail-citation-hook (run-hooks 'news-reply-header-hook))) --- 1584,1590 ---- (defun gnus-mail-yank-original () (interactive) (save-excursion ! (mail-yank-original nil)) (or mail-yank-hooks mail-citation-hook (run-hooks 'news-reply-header-hook))) *************** *** 1606,1612 **** gnus-newsgroup-name))) gnus-valid-select-methods)) (gnus-fetch-field "From") ! gnus-newsgroup-name) "] " (or (gnus-fetch-field "Subject") "")))) (defun gnus-forward-insert-buffer (buffer) --- 1611,1617 ---- gnus-newsgroup-name))) gnus-valid-select-methods)) (gnus-fetch-field "From") ! gnus-newsgroup-name) "] " (or (gnus-fetch-field "Subject") "")))) (defun gnus-forward-insert-buffer (buffer) *************** *** 1696,1701 **** --- 1701,1707 ---- (erase-buffer) (mail-mode) (mail-setup gnus-maintainer nil nil nil nil nil) + (auto-save-mode auto-save-default) (make-local-variable 'gnus-prev-winconf) (setq gnus-prev-winconf winconf) (use-local-map (copy-keymap mail-mode-map)) *** pub/dgnus/lisp/gnus-score.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-score.el Wed Aug 30 14:38:30 1995 *************** *** 275,282 **** (if (eq 'perm temporary) ; Temp nil temporary) ! (not (nth 3 entry))) ; Prompt ! ))) (defun gnus-score-insert-help (string alist idx) (setq gnus-score-help-winconf (current-window-configuration)) --- 275,282 ---- (if (eq 'perm temporary) ; Temp nil temporary) ! (not (nth 3 entry))) ; Prompt ! ))) (defun gnus-score-insert-help (string alist idx) (setq gnus-score-help-winconf (current-window-configuration)) *************** *** 323,329 **** (let ((article (gnus-summary-article-number)) headers) (if article ! (if (setq headers (gnus-get-header-by-number article)) (aref headers (nth 1 (assoc header gnus-header-index))) (if no-err nil --- 323,330 ---- (let ((article (gnus-summary-article-number)) headers) (if article ! (if (and (setq headers (gnus-get-header-by-number article)) ! (vectorp headers)) (aref headers (nth 1 (assoc header gnus-header-index))) (if no-err nil *************** *** 350,356 **** (read-string "Match: ") (if (y-or-n-p "Use regexp match? ") 'r 's) (and current-prefix-arg ! (prefix-numeric-value current-prefix-arg)) (cond ((not (y-or-n-p "Add to score file? ")) 'now) ((y-or-n-p "Expire kill? ") --- 351,357 ---- (read-string "Match: ") (if (y-or-n-p "Use regexp match? ") 'r 's) (and current-prefix-arg ! (prefix-numeric-value current-prefix-arg)) (cond ((not (y-or-n-p "Add to score file? ")) 'now) ((y-or-n-p "Expire kill? ") *************** *** 434,440 **** (prefix-numeric-value current-prefix-arg))) (save-excursion (or (and (stringp match) (> (length match) 0)) ! (error "No match")) (goto-char (point-min)) (let ((regexp (cond ((eq type 'f) (gnus-simplify-subject-fuzzy match)) --- 435,441 ---- (prefix-numeric-value current-prefix-arg))) (save-excursion (or (and (stringp match) (> (length match) 0)) ! (error "No match")) (goto-char (point-min)) (let ((regexp (cond ((eq type 'f) (gnus-simplify-subject-fuzzy match)) *************** *** 452,472 **** (beginning-of-line 2))))) (defun gnus-summary-score-crossposting (score date) ! ;; Enter score file entry for current crossposting. ! ;; SCORE is the score to add. ! ;; DATE is the expire date. ! (let ((xref (gnus-summary-header "xref")) ! (start 0) ! group) ! (or xref (error "This article is not crossposted")) ! (while (string-match " \\([^ \t]+\\):" xref start) ! (setq start (match-end 0)) ! (if (not (string= ! (setq group ! (substring xref (match-beginning 1) (match-end 1))) ! gnus-newsgroup-name)) ! (gnus-summary-score-entry ! "xref" (concat " " group ":") nil score date t))))) ;;; --- 453,473 ---- (beginning-of-line 2))))) (defun gnus-summary-score-crossposting (score date) ! ;; Enter score file entry for current crossposting. ! ;; SCORE is the score to add. ! ;; DATE is the expire date. ! (let ((xref (gnus-summary-header "xref")) ! (start 0) ! group) ! (or xref (error "This article is not crossposted")) ! (while (string-match " \\([^ \t]+\\):" xref start) ! (setq start (match-end 0)) ! (if (not (string= ! (setq group ! (substring xref (match-beginning 1) (match-end 1))) ! gnus-newsgroup-name)) ! (gnus-summary-score-entry ! "xref" (concat " " group ":") nil score date t))))) ;;; *************** *** 821,828 **** ;; WARNING: The assq makes the function O(N*S) while it could ;; be written as O(N+S), where N is (length gnus-newsgroup-headers) ;; and S is (length gnus-newsgroup-scored). ! (or (assq (header-number header) gnus-newsgroup-scored) ! (setq gnus-scores-articles ;Total of 2 * N cons-cells used. (cons (cons header (or gnus-summary-default-score 0)) gnus-scores-articles)))) --- 822,829 ---- ;; WARNING: The assq makes the function O(N*S) while it could ;; be written as O(N+S), where N is (length gnus-newsgroup-headers) ;; and S is (length gnus-newsgroup-scored). ! (or (assq (mail-header-number header) gnus-newsgroup-scored) ! (setq gnus-scores-articles ;Total of 2 * N cons-cells used. (cons (cons header (or gnus-summary-default-score 0)) gnus-scores-articles)))) *************** *** 856,862 **** (while gnus-scores-articles (or (= gnus-summary-default-score (cdr (car gnus-scores-articles))) (setq gnus-newsgroup-scored ! (cons (cons (header-number (car (car gnus-scores-articles))) (cdr (car gnus-scores-articles))) gnus-newsgroup-scored))) --- 857,863 ---- (while gnus-scores-articles (or (= gnus-summary-default-score (cdr (car gnus-scores-articles))) (setq gnus-newsgroup-scored ! (cons (cons (mail-header-number (car (car gnus-scores-articles))) (cdr (car gnus-scores-articles))) gnus-newsgroup-scored))) *************** *** 978,984 **** (found ;Match, update date. (gnus-score-set 'touched '(t) alist) (setcar (nthcdr 2 kill) now)) ! ((< date expire) ;Old entry, remove. (gnus-score-set 'touched '(t) alist) (setcdr entries (cdr rest)) (setq rest entries))) --- 979,985 ---- (found ;Match, update date. (gnus-score-set 'touched '(t) alist) (setcar (nthcdr 2 kill) now)) ! ((< date expire) ;Old entry, remove. (gnus-score-set 'touched '(t) alist) (setcdr entries (cdr rest)) (setq rest entries))) *************** *** 1029,1035 **** (found ;Match, update date. (gnus-score-set 'touched '(t) alist) (setcar (nthcdr 2 kill) now)) ! ((< date expire) ;Old entry, remove. (gnus-score-set 'touched '(t) alist) (setcdr entries (cdr rest)) (setq rest entries))) --- 1030,1036 ---- (found ;Match, update date. (gnus-score-set 'touched '(t) alist) (setcar (nthcdr 2 kill) now)) ! ((< date expire) ;Old entry, remove. (gnus-score-set 'touched '(t) alist) (setcdr entries (cdr rest)) (setq rest entries))) *************** *** 1041,1047 **** (save-restriction (let* ((buffer-read-only nil) (articles gnus-scores-articles) ! (last (header-number (car (car gnus-scores-articles)))) (all-scores scores) (request-func (cond ((string= "head" (downcase header)) 'gnus-request-head) --- 1042,1048 ---- (save-restriction (let* ((buffer-read-only nil) (articles gnus-scores-articles) ! (last (mail-header-number (car (car gnus-scores-articles)))) (all-scores scores) (request-func (cond ((string= "head" (downcase header)) 'gnus-request-head) *************** *** 1060,1066 **** (setq ofunc request-func) (setq request-func 'gnus-request-article))) (while articles ! (setq article (header-number (car (car articles)))) (gnus-message 7 "Scoring on article %s of %s..." article last) (if (not (funcall request-func article gnus-newsgroup-name)) () --- 1061,1067 ---- (setq ofunc request-func) (setq request-func 'gnus-request-article))) (while articles ! (setq article (mail-header-number (car (car articles)))) (gnus-message 7 "Scoring on article %s of %s..." article last) (if (not (funcall request-func article gnus-newsgroup-name)) () *************** *** 1212,1218 **** (found ;Match, update date. (gnus-score-set 'touched '(t) alist) (setcar (nthcdr 2 kill) now)) ! ((< date expire) ;Old entry, remove. (gnus-score-set 'touched '(t) alist) (setcdr entries (cdr rest)) (setq rest entries))) --- 1213,1219 ---- (found ;Match, update date. (gnus-score-set 'touched '(t) alist) (setcar (nthcdr 2 kill) now)) ! ((< date expire) ;Old entry, remove. (gnus-score-set 'touched '(t) alist) (setcdr entries (cdr rest)) (setq rest entries))) *************** *** 1223,1229 **** (defun gnus-score-add-followups (header score scores) (save-excursion (set-buffer gnus-summary-buffer) ! (let* ((id (header-id header)) (scores (car scores)) entry dont) ;; Don't enter a score if there already is one. --- 1224,1230 ---- (defun gnus-score-add-followups (header score scores) (save-excursion (set-buffer gnus-summary-buffer) ! (let* ((id (mail-header-id header)) (scores (car scores)) entry dont) ;; Don't enter a score if there already is one. *************** *** 1326,1332 **** arts (cdr arts)) (setcdr art (+ score (cdr art))) (setq gnus-score-trace ! (cons (cons (header-number (car art)) kill) gnus-score-trace))) (while arts --- 1327,1333 ---- arts (cdr arts)) (setcdr art (+ score (cdr art))) (setq gnus-score-trace ! (cons (cons (mail-header-number (car art)) kill) gnus-score-trace))) (while arts *************** *** 1347,1353 **** arts (cdr arts)) (setcdr art (+ score (cdr art))) (setq gnus-score-trace ! (cons (cons (header-number (car art)) kill) gnus-score-trace))) (while arts (setq art (car arts) --- 1348,1354 ---- arts (cdr arts)) (setcdr art (+ score (cdr art))) (setq gnus-score-trace ! (cons (cons (mail-header-number (car art)) kill) gnus-score-trace))) (while arts (setq art (car arts) *************** *** 1408,1414 **** arts (cdr arts)) (setcdr art (+ score (cdr art))) (setq gnus-score-trace ! (cons (cons (header-number (car art)) kill) gnus-score-trace))) (while arts --- 1409,1415 ---- arts (cdr arts)) (setcdr art (+ score (cdr art))) (setq gnus-score-trace ! (cons (cons (mail-header-number (car art)) kill) gnus-score-trace))) (while arts *************** *** 1435,1441 **** (defun gnus-score-build-cons (article) ;; Build a `gnus-newsgroup-scored' type cons from ARTICLE. ! (cons (header-number (car article)) (cdr article))) (defconst gnus-header-index ;; Name to index alist. --- 1436,1442 ---- (defun gnus-score-build-cons (article) ;; Build a `gnus-newsgroup-scored' type cons from ARTICLE. ! (cons (mail-header-number (car article)) (cdr article))) (defconst gnus-header-index ;; Name to index alist. *************** *** 1620,1625 **** --- 1621,1627 ---- (or (setq trace gnus-score-trace) (error "No score rules apply to the current article.")) (pop-to-buffer "*Gnus Scores*") + (gnus-add-current-to-buffer-list) (erase-buffer) (while trace (insert (format "%S\n" (cdr (car trace)))) *** pub/dgnus/lisp/gnus-uu.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-uu.el Wed Aug 30 14:38:29 1995 *************** *** 518,524 **** (save-excursion (while marked (and (setq headers (gnus-get-header-by-number (car marked))) ! (setq subject (header-subject headers) articles (gnus-uu-find-articles-matching (gnus-uu-reginize-string subject)) total (nconc total articles))) --- 518,524 ---- (save-excursion (while marked (and (setq headers (gnus-get-header-by-number (car marked))) ! (setq subject (mail-header-subject headers) articles (gnus-uu-find-articles-matching (gnus-uu-reginize-string subject)) total (nconc total articles))) *************** *** 654,709 **** 'begin 'end)) ((eq in-state 'last) (list 'end)) (t (list 'middle))))) ! (t ! (let ((name (file-name-nondirectory gnus-uu-saved-article-name)) ! beg subj headers headline sorthead body end-string state) ! (if (or (eq in-state 'first) ! (eq in-state 'first-and-last)) ! (progn ! (setq state (list 'begin)) ! (save-excursion (set-buffer (get-buffer-create "*gnus-uu-body*")) ! (erase-buffer)) ! (save-excursion ! (set-buffer (get-buffer-create "*gnus-uu-pre*")) ! (erase-buffer) ! (insert (format ! "Date: %s\nFrom: %s\nSubject: %s Digest\n\nTopics:\n" ! (current-time-string) name name)))) ! (if (not (eq in-state 'end)) ! (setq state (list 'middle)))) ! (save-excursion ! (set-buffer (get-buffer "*gnus-uu-body*")) ! (goto-char (setq beg (point-max))) ! (save-excursion ! (save-restriction ! (set-buffer buffer) ! (goto-char (point-min)) ! (re-search-forward "\n\n") ! (setq body (buffer-substring (1- (point)) (point-max))) ! (narrow-to-region 1 (point)) ! (if (not (setq headers gnus-uu-digest-headers)) ! (setq sorthead (buffer-substring (point-min) (point-max))) ! (while headers ! (setq headline (car headers)) ! (setq headers (cdr headers)) ! (goto-char (point-min)) ! (if (re-search-forward headline nil t) ! (setq sorthead ! (concat sorthead ! (buffer-substring ! (match-beginning 0) ! (or (and (re-search-forward "^[^ \t]" nil t) ! (1- (point))) ! (progn (forward-line 1) (point))))))))) ! (widen))) ! (insert sorthead)(goto-char (point-max)) ! (insert body)(goto-char (point-max)) ! (insert (concat "\n" (make-string 30 ?-) "\n\n")) ! (goto-char beg) ! (if (re-search-forward "^Subject: \\(.*\\)$" nil t) ! (progn ! (setq subj (buffer-substring (match-beginning 1) (match-end 1))) ! (save-excursion (set-buffer (get-buffer "*gnus-uu-pre*")) (insert (format " %s\n" subj)))))) (if (or (eq in-state 'last) --- 654,709 ---- 'begin 'end)) ((eq in-state 'last) (list 'end)) (t (list 'middle))))) ! (t ! (let ((name (file-name-nondirectory gnus-uu-saved-article-name)) ! beg subj headers headline sorthead body end-string state) ! (if (or (eq in-state 'first) ! (eq in-state 'first-and-last)) ! (progn ! (setq state (list 'begin)) ! (save-excursion (set-buffer (get-buffer-create "*gnus-uu-body*")) ! (erase-buffer)) ! (save-excursion ! (set-buffer (get-buffer-create "*gnus-uu-pre*")) ! (erase-buffer) ! (insert (format ! "Date: %s\nFrom: %s\nSubject: %s Digest\n\nTopics:\n" ! (current-time-string) name name)))) ! (if (not (eq in-state 'end)) ! (setq state (list 'middle)))) ! (save-excursion ! (set-buffer (get-buffer "*gnus-uu-body*")) ! (goto-char (setq beg (point-max))) ! (save-excursion ! (save-restriction ! (set-buffer buffer) ! (goto-char (point-min)) ! (re-search-forward "\n\n") ! (setq body (buffer-substring (1- (point)) (point-max))) ! (narrow-to-region 1 (point)) ! (if (not (setq headers gnus-uu-digest-headers)) ! (setq sorthead (buffer-substring (point-min) (point-max))) ! (while headers ! (setq headline (car headers)) ! (setq headers (cdr headers)) ! (goto-char (point-min)) ! (if (re-search-forward headline nil t) ! (setq sorthead ! (concat sorthead ! (buffer-substring ! (match-beginning 0) ! (or (and (re-search-forward "^[^ \t]" nil t) ! (1- (point))) ! (progn (forward-line 1) (point))))))))) ! (widen))) ! (insert sorthead)(goto-char (point-max)) ! (insert body)(goto-char (point-max)) ! (insert (concat "\n" (make-string 30 ?-) "\n\n")) ! (goto-char beg) ! (if (re-search-forward "^Subject: \\(.*\\)$" nil t) ! (progn ! (setq subj (buffer-substring (match-beginning 1) (match-end 1))) ! (save-excursion (set-buffer (get-buffer "*gnus-uu-pre*")) (insert (format " %s\n" subj)))))) (if (or (eq in-state 'last) *************** *** 777,799 **** (let ((state (list 'ok)) start-char end-char file-name) (save-excursion ! (set-buffer process-buffer) ! (goto-char (point-min)) ! (if (not (re-search-forward gnus-uu-postscript-begin-string nil t)) ! (setq state (list 'wrong-type)) ! (beginning-of-line) ! (setq start-char (point)) ! (if (not (re-search-forward gnus-uu-postscript-end-string nil t)) ! (setq state (list 'wrong-type)) ! (setq end-char (point)) ! (set-buffer (get-buffer-create gnus-uu-output-buffer-name)) ! (insert-buffer-substring process-buffer start-char end-char) ! (setq file-name (concat gnus-uu-work-dir (cdr gnus-article-current) ".ps")) ! (write-region (point-min) (point-max) file-name) ! (setq state (list file-name'begin 'end)) ! )) ! ) state)) --- 777,799 ---- (let ((state (list 'ok)) start-char end-char file-name) (save-excursion ! (set-buffer process-buffer) ! (goto-char (point-min)) ! (if (not (re-search-forward gnus-uu-postscript-begin-string nil t)) ! (setq state (list 'wrong-type)) ! (beginning-of-line) ! (setq start-char (point)) ! (if (not (re-search-forward gnus-uu-postscript-end-string nil t)) ! (setq state (list 'wrong-type)) ! (setq end-char (point)) ! (set-buffer (get-buffer-create gnus-uu-output-buffer-name)) ! (insert-buffer-substring process-buffer start-char end-char) ! (setq file-name (concat gnus-uu-work-dir (cdr gnus-article-current) ".ps")) ! (write-region (point-min) (point-max) file-name) ! (setq state (list file-name'begin 'end)) ! )) ! ) state)) *************** *** 893,913 **** ;; Failing that, articles that have subjects that are part of the ;; same "series" as the current will be returned. (let (articles) ! (cond ! (n ! (let ((backward (< n 0)) ! (n (abs n))) ! (save-excursion ! (while (and (> n 0) ! (setq articles (cons (gnus-summary-article-number) ! articles)) ! (gnus-summary-search-forward nil nil backward)) ! (setq n (1- n)))) ! (nreverse articles))) ! (gnus-newsgroup-processable ! (reverse gnus-newsgroup-processable)) ! (t ! (gnus-uu-find-articles-matching))))) (defun gnus-uu-string< (l1 l2) (string< (car l1) (car l2))) --- 893,913 ---- ;; Failing that, articles that have subjects that are part of the ;; same "series" as the current will be returned. (let (articles) ! (cond ! (n ! (let ((backward (< n 0)) ! (n (abs n))) ! (save-excursion ! (while (and (> n 0) ! (setq articles (cons (gnus-summary-article-number) ! articles)) ! (gnus-summary-search-forward nil nil backward)) ! (setq n (1- n)))) ! (nreverse articles))) ! (gnus-newsgroup-processable ! (reverse gnus-newsgroup-processable)) ! (t ! (gnus-uu-find-articles-matching))))) (defun gnus-uu-string< (l1 l2) (string< (car l1) (car l2))) *************** *** 1103,1110 **** (if (and (or (eq state 'last) (eq state 'first-and-last)) (not (memq 'end process-state))) ! (if (and result-file (file-exists-p result-file)) ! (delete-file result-file))) (if (not (memq 'wrong-type process-state)) () --- 1103,1110 ---- (if (and (or (eq state 'last) (eq state 'first-and-last)) (not (memq 'end process-state))) ! (if (and result-file (file-exists-p result-file)) ! (delete-file result-file))) (if (not (memq 'wrong-type process-state)) () *************** *** 1152,1158 **** result-files)) (defun gnus-uu-part-number (article) ! (let ((subject (header-subject (gnus-get-header-by-number article)))) (if (string-match "[0-9]+ */[0-9]+\\|[0-9]+ * of *[0-9]+" subject) (substring subject (match-beginning 0) (match-end 0)) --- 1152,1158 ---- result-files)) (defun gnus-uu-part-number (article) ! (let ((subject (mail-header-subject (gnus-get-header-by-number article)))) (if (string-match "[0-9]+ */[0-9]+\\|[0-9]+ * of *[0-9]+" subject) (substring subject (match-beginning 0) (match-end 0)) *************** *** 1197,1203 **** (or (looking-at gnus-uu-body-line) (gnus-delete-line)) ! ; Replace any slashes and spaces in file names before decoding (goto-char name-beg) (while (re-search-forward "/" name-end t) (replace-match ",")) --- 1197,1203 ---- (or (looking-at gnus-uu-body-line) (gnus-delete-line)) ! ; Replace any slashes and spaces in file names before decoding (goto-char name-beg) (while (re-search-forward "/" name-end t) (replace-match ",")) *************** *** 1206,1212 **** (replace-match "_")) (goto-char name-beg) (if (re-search-forward "_*$" name-end t) ! (replace-match "")) (setq gnus-uu-file-name (buffer-substring name-beg name-end)) (and gnus-uu-uudecode-process --- 1206,1212 ---- (replace-match "_")) (goto-char name-beg) (if (re-search-forward "_*$" name-end t) ! (replace-match "")) (setq gnus-uu-file-name (buffer-substring name-beg name-end)) (and gnus-uu-uudecode-process *************** *** 1263,1269 **** (progn (delete-process gnus-uu-uudecode-process) (message "gnus-uu: Couldn't uudecode") ! ; (sleep-for 2) (setq state (list 'wrong-type))))) (if (memq 'end state) --- 1263,1269 ---- (progn (delete-process gnus-uu-uudecode-process) (message "gnus-uu: Couldn't uudecode") ! ; (sleep-for 2) (setq state (list 'wrong-type))))) (if (memq 'end state) *************** *** 1282,1297 **** (let ((state (list 'ok)) start-char) (save-excursion ! (set-buffer process-buffer) ! (goto-char (point-min)) ! (if (not (re-search-forward gnus-uu-shar-begin-string nil t)) ! (setq state (list 'wrong-type)) ! (beginning-of-line) ! (setq start-char (point)) ! (call-process-region ! start-char (point-max) "sh" nil ! (get-buffer-create gnus-uu-output-buffer-name) nil ! "-c" (concat "cd " gnus-uu-work-dir " ; sh")))) state)) ;; Returns the name of what the shar file is going to unpack. --- 1282,1297 ---- (let ((state (list 'ok)) start-char) (save-excursion ! (set-buffer process-buffer) ! (goto-char (point-min)) ! (if (not (re-search-forward gnus-uu-shar-begin-string nil t)) ! (setq state (list 'wrong-type)) ! (beginning-of-line) ! (setq start-char (point)) ! (call-process-region ! start-char (point-max) "sh" nil ! (get-buffer-create gnus-uu-output-buffer-name) nil ! "-c" (concat "cd " gnus-uu-work-dir " ; sh")))) state)) ;; Returns the name of what the shar file is going to unpack. *** pub/dgnus/lisp/gnus-vis.el Tue Aug 29 09:03:22 1995 --- dgnus/lisp/gnus-vis.el Wed Aug 30 14:38:27 1995 *************** *** 488,600 **** (and nil '(("Default header" ! ["Ask" (gnus-score-set-default 'gnus-score-default-header nil) ! :style radio ! :selected (null gnus-score-default-header)] ! ["From" (gnus-score-set-default 'gnus-score-default-header 'a) ! :style radio ! :selected (eq gnus-score-default-header 'a )] ! ["Subject" (gnus-score-set-default 'gnus-score-default-header 's) ! :style radio ! :selected (eq gnus-score-default-header 's )] ! ["Article body" ! (gnus-score-set-default 'gnus-score-default-header 'b) ! :style radio ! :selected (eq gnus-score-default-header 'b )] ! ["All headers" ! (gnus-score-set-default 'gnus-score-default-header 'h) ! :style radio ! :selected (eq gnus-score-default-header 'h )] ! ["Message-Id" (gnus-score-set-default 'gnus-score-default-header 'i) ! :style radio ! :selected (eq gnus-score-default-header 'i )] ! ["Thread" (gnus-score-set-default 'gnus-score-default-header 't) ! :style radio ! :selected (eq gnus-score-default-header 't )] ! ["Crossposting" ! (gnus-score-set-default 'gnus-score-default-header 'x) ! :style radio ! :selected (eq gnus-score-default-header 'x )] ! ["Lines" (gnus-score-set-default 'gnus-score-default-header 'l) ! :style radio ! :selected (eq gnus-score-default-header 'l )] ! ["Date" (gnus-score-set-default 'gnus-score-default-header 'd) ! :style radio ! :selected (eq gnus-score-default-header 'd )] ! ["Followups to author" ! (gnus-score-set-default 'gnus-score-default-header 'f) ! :style radio ! :selected (eq gnus-score-default-header 'f )]) ! ("Default type" ! ["Ask" (gnus-score-set-default 'gnus-score-default-type nil) ! :style radio ! :selected (null gnus-score-default-type)] ! ;; The `:active' key is commented out in the following, ! ;; because the GNU Emacs hack to support radio buttons use ! ;; active to indicate which button is selected. ! ["Substring" (gnus-score-set-default 'gnus-score-default-type 's) ! :style radio ! ;; :active (not (memq gnus-score-default-header '(l d))) ! :selected (eq gnus-score-default-type 's)] ! ["Regexp" (gnus-score-set-default 'gnus-score-default-type 'r) ! :style radio ! ;; :active (not (memq gnus-score-default-header '(l d))) ! :selected (eq gnus-score-default-type 'r)] ! ["Exact" (gnus-score-set-default 'gnus-score-default-type 'e) ! :style radio ! ;; :active (not (memq gnus-score-default-header '(l d))) ! :selected (eq gnus-score-default-type 'e)] ! ["Fuzzy" (gnus-score-set-default 'gnus-score-default-type 'f) ! :style radio ! ;; :active (not (memq gnus-score-default-header '(l d))) ! :selected (eq gnus-score-default-type 'f)] ! ["Before date" (gnus-score-set-default 'gnus-score-default-type 'b) ! :style radio ! ;; :active (eq (gnus-score-default-header 'd)) ! :selected (eq gnus-score-default-type 'b)] ! ["At date" (gnus-score-set-default 'gnus-score-default-type 'n) ! :style radio ! ;; :active (eq (gnus-score-default-header 'd)) ! :selected (eq gnus-score-default-type 'n)] ! ["After date" (gnus-score-set-default 'gnus-score-default-type 'a) ! :style radio ! ;; :active (eq (gnus-score-default-header 'd)) ! :selected (eq gnus-score-default-type 'a)] ! ["Less than number" ! (gnus-score-set-default 'gnus-score-default-type '<) ! :style radio ! ;; :active (eq (gnus-score-default-header 'l)) ! :selected (eq gnus-score-default-type '<)] ! ["Equal to number" ! (gnus-score-set-default 'gnus-score-default-type '=) ! :style radio ! ;; :active (eq (gnus-score-default-header 'l)) ! :selected (eq gnus-score-default-type '=)] ! ["Greater than number" ! (gnus-score-set-default 'gnus-score-default-type '>) ! :style radio ! ;; :active (eq (gnus-score-default-header 'l)) ! :selected (eq gnus-score-default-type '>)]) ! ["Default fold" gnus-score-default-fold-toggle ! :style toggle ! :selected gnus-score-default-fold] ! ("Default duration" ! ["Ask" (gnus-score-set-default 'gnus-score-default-duration nil) ! :style radio ! :selected (null gnus-score-default-duration)] ! ["Permanent" ! (gnus-score-set-default 'gnus-score-default-duration 'p) ! :style radio ! :selected (eq gnus-score-default-duration 'p)] ! ["Temporary" ! (gnus-score-set-default 'gnus-score-default-duration 't) ! :style radio ! :selected (eq gnus-score-default-duration 't)] ! ["Immediate" ! (gnus-score-set-default 'gnus-score-default-duration 'i) ! :style radio ! :selected (eq gnus-score-default-duration 'i)]) ! )) (easy-menu-define gnus-summary-article-menu --- 488,600 ---- (and nil '(("Default header" ! ["Ask" (gnus-score-set-default 'gnus-score-default-header nil) ! :style radio ! :selected (null gnus-score-default-header)] ! ["From" (gnus-score-set-default 'gnus-score-default-header 'a) ! :style radio ! :selected (eq gnus-score-default-header 'a )] ! ["Subject" (gnus-score-set-default 'gnus-score-default-header 's) ! :style radio ! :selected (eq gnus-score-default-header 's )] ! ["Article body" ! (gnus-score-set-default 'gnus-score-default-header 'b) ! :style radio ! :selected (eq gnus-score-default-header 'b )] ! ["All headers" ! (gnus-score-set-default 'gnus-score-default-header 'h) ! :style radio ! :selected (eq gnus-score-default-header 'h )] ! ["Message-Id" (gnus-score-set-default 'gnus-score-default-header 'i) ! :style radio ! :selected (eq gnus-score-default-header 'i )] ! ["Thread" (gnus-score-set-default 'gnus-score-default-header 't) ! :style radio ! :selected (eq gnus-score-default-header 't )] ! ["Crossposting" ! (gnus-score-set-default 'gnus-score-default-header 'x) ! :style radio ! :selected (eq gnus-score-default-header 'x )] ! ["Lines" (gnus-score-set-default 'gnus-score-default-header 'l) ! :style radio ! :selected (eq gnus-score-default-header 'l )] ! ["Date" (gnus-score-set-default 'gnus-score-default-header 'd) ! :style radio ! :selected (eq gnus-score-default-header 'd )] ! ["Followups to author" ! (gnus-score-set-default 'gnus-score-default-header 'f) ! :style radio ! :selected (eq gnus-score-default-header 'f )]) ! ("Default type" ! ["Ask" (gnus-score-set-default 'gnus-score-default-type nil) ! :style radio ! :selected (null gnus-score-default-type)] ! ;; The `:active' key is commented out in the following, ! ;; because the GNU Emacs hack to support radio buttons use ! ;; active to indicate which button is selected. ! ["Substring" (gnus-score-set-default 'gnus-score-default-type 's) ! :style radio ! ;; :active (not (memq gnus-score-default-header '(l d))) ! :selected (eq gnus-score-default-type 's)] ! ["Regexp" (gnus-score-set-default 'gnus-score-default-type 'r) ! :style radio ! ;; :active (not (memq gnus-score-default-header '(l d))) ! :selected (eq gnus-score-default-type 'r)] ! ["Exact" (gnus-score-set-default 'gnus-score-default-type 'e) ! :style radio ! ;; :active (not (memq gnus-score-default-header '(l d))) ! :selected (eq gnus-score-default-type 'e)] ! ["Fuzzy" (gnus-score-set-default 'gnus-score-default-type 'f) ! :style radio ! ;; :active (not (memq gnus-score-default-header '(l d))) ! :selected (eq gnus-score-default-type 'f)] ! ["Before date" (gnus-score-set-default 'gnus-score-default-type 'b) ! :style radio ! ;; :active (eq (gnus-score-default-header 'd)) ! :selected (eq gnus-score-default-type 'b)] ! ["At date" (gnus-score-set-default 'gnus-score-default-type 'n) ! :style radio ! ;; :active (eq (gnus-score-default-header 'd)) ! :selected (eq gnus-score-default-type 'n)] ! ["After date" (gnus-score-set-default 'gnus-score-default-type 'a) ! :style radio ! ;; :active (eq (gnus-score-default-header 'd)) ! :selected (eq gnus-score-default-type 'a)] ! ["Less than number" ! (gnus-score-set-default 'gnus-score-default-type '<) ! :style radio ! ;; :active (eq (gnus-score-default-header 'l)) ! :selected (eq gnus-score-default-type '<)] ! ["Equal to number" ! (gnus-score-set-default 'gnus-score-default-type '=) ! :style radio ! ;; :active (eq (gnus-score-default-header 'l)) ! :selected (eq gnus-score-default-type '=)] ! ["Greater than number" ! (gnus-score-set-default 'gnus-score-default-type '>) ! :style radio ! ;; :active (eq (gnus-score-default-header 'l)) ! :selected (eq gnus-score-default-type '>)]) ! ["Default fold" gnus-score-default-fold-toggle ! :style toggle ! :selected gnus-score-default-fold] ! ("Default duration" ! ["Ask" (gnus-score-set-default 'gnus-score-default-duration nil) ! :style radio ! :selected (null gnus-score-default-duration)] ! ["Permanent" ! (gnus-score-set-default 'gnus-score-default-duration 'p) ! :style radio ! :selected (eq gnus-score-default-duration 'p)] ! ["Temporary" ! (gnus-score-set-default 'gnus-score-default-duration 't) ! :style radio ! :selected (eq gnus-score-default-duration 't)] ! ["Immediate" ! (gnus-score-set-default 'gnus-score-default-duration 'i) ! :style radio ! :selected (eq gnus-score-default-duration 'i)]) ! )) (easy-menu-define gnus-summary-article-menu *************** *** 1127,1133 **** (let* ((pos (posn-point (event-start event))) (data (get-text-property pos 'gnus-data)) (fun (get-text-property pos 'gnus-callback))) ! (if fun (funcall fun data)))) (defun gnus-article-press-button () "Check text at point for a callback function. --- 1127,1133 ---- (let* ((pos (posn-point (event-start event))) (data (get-text-property pos 'gnus-data)) (fun (get-text-property pos 'gnus-callback))) ! (if fun (funcall fun data)))) (defun gnus-article-press-button () "Check text at point for a callback function. *************** *** 1136,1142 **** (interactive) (let* ((data (get-text-property (point) 'gnus-data)) (fun (get-text-property (point) 'gnus-callback))) ! (if fun (funcall fun data)))) ;; Suggested by Arne Elofsson (defun gnus-article-next-button () --- 1136,1142 ---- (interactive) (let* ((data (get-text-property (point) 'gnus-data)) (fun (get-text-property (point) 'gnus-callback))) ! (if fun (funcall fun data)))) ;; Suggested by Arne Elofsson (defun gnus-article-next-button () *************** *** 1144,1150 **** (interactive) (if (get-text-property (point) 'gnus-callback) (goto-char (next-single-property-change (point) 'gnus-callback ! nil (point-max)))) (let ((pos (next-single-property-change (point) 'gnus-callback))) (if pos (goto-char pos) --- 1144,1150 ---- (interactive) (if (get-text-property (point) 'gnus-callback) (goto-char (next-single-property-change (point) 'gnus-callback ! nil (point-max)))) (let ((pos (next-single-property-change (point) 'gnus-callback))) (if pos (goto-char pos) *************** *** 1363,1370 **** (let ((string (buffer-substring (match-beginning group) (match-end group)))) ! (set-text-properties 0 (length string) nil string) ! string)) (nthcdr 4 entry)))) (cond ((fboundp fun) (apply fun args)) --- 1363,1370 ---- (let ((string (buffer-substring (match-beginning group) (match-end group)))) ! (set-text-properties 0 (length string) nil string) ! string)) (nthcdr 4 entry)))) (cond ((fboundp fun) (apply fun args)) *** pub/dgnus/lisp/gnus.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/gnus.el Wed Aug 30 18:07:46 1995 *************** *** 1147,1156 **** (list (lambda () (mapcar (lambda (header) ! (header-set-subject header (gnus-simplify-subject ! (header-subject header) 're-only))) gnus-newsgroup-headers))))") (defvar gnus-select-article-hook --- 1147,1156 ---- (list (lambda () (mapcar (lambda (header) ! (mail-header-set-subject header (gnus-simplify-subject ! (mail-header-subject header) 're-only))) gnus-newsgroup-headers))))") (defvar gnus-select-article-hook *************** *** 1287,1298 **** (list ?a '(or (car (funcall gnus-extract-address-components from)) from) ?s) (list ?F 'from ?s) ! (list ?x (macroexpand '(header-xref header)) ?s) ! (list ?D (macroexpand '(header-date header)) ?s) ! (list ?d '(gnus-dd-mmm (header-date header)) ?s) ! (list ?M (macroexpand '(header-id header)) ?s) ! (list ?r (macroexpand '(header-references header)) ?s) ! (list ?c '(or (header-chars header) 0) ?d) (list ?L 'lines ?d) (list ?I 'indentation ?s) (list ?T '(if (= level 0) "" (make-string (frame-width) ? )) ?s) --- 1287,1298 ---- (list ?a '(or (car (funcall gnus-extract-address-components from)) from) ?s) (list ?F 'from ?s) ! (list ?x (macroexpand '(mail-header-xref header)) ?s) ! (list ?D (macroexpand '(mail-header-date header)) ?s) ! (list ?d '(gnus-dd-mmm (mail-header-date header)) ?s) ! (list ?M (macroexpand '(mail-header-id header)) ?s) ! (list ?r (macroexpand '(mail-header-references header)) ?s) ! (list ?c '(or (mail-header-chars header) 0) ?d) (list ?L 'lines ?d) (list ?I 'indentation ?s) (list ?T '(if (= level 0) "" (make-string (frame-width) ? )) ?s) *************** *** 1343,1349 **** "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "(ding) Gnus v0.99.27" "Version number for this version of Gnus.") (defvar gnus-info-nodes --- 1343,1349 ---- "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)" "The mail address of the Gnus maintainers.") ! (defconst gnus-version "(ding) Gnus v0.99.28" "Version number for this version of Gnus.") (defvar gnus-info-nodes *************** *** 1836,1842 **** (load gnus-init-file nil t)))) ;;; Load the user startup file. ! (gnus-read-init-file 'inhibit) ;;; Load the compatability functions. --- 1836,1842 ---- (load gnus-init-file nil t)))) ;;; Load the user startup file. ! (eval '(gnus-read-init-file 'inhibit)) ;;; Load the compatability functions. *************** *** 2077,2083 **** (concat (if (gnus-use-long-file-name 'not-save) (gnus-capitalize-newsgroup newsgroup) (gnus-newsgroup-directory-form newsgroup)) ! "/" (int-to-string (header-number headers))) (or gnus-article-save-directory "~/News")))) (if (and last-file (string-equal (file-name-directory default) --- 2077,2083 ---- (concat (if (gnus-use-long-file-name 'not-save) (gnus-capitalize-newsgroup newsgroup) (gnus-newsgroup-directory-form newsgroup)) ! "/" (int-to-string (mail-header-number headers))) (or gnus-article-save-directory "~/News")))) (if (and last-file (string-equal (file-name-directory default) *************** *** 2095,2101 **** (concat (if (gnus-use-long-file-name 'not-save) newsgroup (gnus-newsgroup-directory-form newsgroup)) ! "/" (int-to-string (header-number headers))) (or gnus-article-save-directory "~/News")))) (if (and last-file (string-equal (file-name-directory default) --- 2095,2101 ---- (concat (if (gnus-use-long-file-name 'not-save) newsgroup (gnus-newsgroup-directory-form newsgroup)) ! "/" (int-to-string (mail-header-number headers))) (or gnus-article-save-directory "~/News")))) (if (and last-file (string-equal (file-name-directory default) *************** *** 2276,2282 **** "Make DIRECTORY recursively." ;; Why don't we use `(make-directory dir 'parents)'? That's just one ;; of the many mysteries of the universe. ! (let* ((dir (expand-file-name dir default-directory)) dirs err) (if (string-match "/$" dir) (setq dir (substring dir 0 (match-beginning 0)))) --- 2276,2282 ---- "Make DIRECTORY recursively." ;; Why don't we use `(make-directory dir 'parents)'? That's just one ;; of the many mysteries of the universe. ! (let* ((dir (expand-file-name dir default-directory)) dirs err) (if (string-match "/$" dir) (setq dir (substring dir 0 (match-beginning 0)))) *************** *** 2361,2394 **** ;; Functions are more convenient than macros in some cases. (defun gnus-header-number (header) ! (header-number header)) (defun gnus-header-subject (header) ! (header-subject header)) (defun gnus-header-from (header) ! (header-from header)) (defun gnus-header-xref (header) ! (header-xref header)) (defun gnus-header-lines (header) ! (header-lines header)) (defun gnus-header-date (header) ! (header-date header)) (defun gnus-header-id (header) ! (header-id header)) (defun gnus-header-message-id (header) ! (header-id header)) (defun gnus-header-chars (header) ! (header-chars header)) (defun gnus-header-references (header) ! (header-references header)) ;;; General various misc type functions. --- 2361,2394 ---- ;; Functions are more convenient than macros in some cases. (defun gnus-header-number (header) ! (mail-header-number header)) (defun gnus-header-subject (header) ! (mail-header-subject header)) (defun gnus-header-from (header) ! (mail-header-from header)) (defun gnus-header-xref (header) ! (mail-header-xref header)) (defun gnus-header-lines (header) ! (mail-header-lines header)) (defun gnus-header-date (header) ! (mail-header-date header)) (defun gnus-header-id (header) ! (mail-header-id header)) (defun gnus-header-message-id (header) ! (mail-header-id header)) (defun gnus-header-chars (header) ! (mail-header-chars header)) (defun gnus-header-references (header) ! (mail-header-references header)) ;;; General various misc type functions. *************** *** 2639,2652 **** (lambda (win) (let ((buf (window-buffer win))) (if (string-match "^\\*Summary" (buffer-name buf)) ! (progn ! (setq bufs (cons buf bufs)) ! (pop-to-buffer buf) ! (if (or (not lowest) ! (< (gnus-window-top-edge) lowest)) ! (progn ! (setq lowest-buf buf) ! (setq lowest (gnus-window-top-edge)))))))))) (and lowest-buf (progn (pop-to-buffer lowest-buf) --- 2639,2652 ---- (lambda (win) (let ((buf (window-buffer win))) (if (string-match "^\\*Summary" (buffer-name buf)) ! (progn ! (setq bufs (cons buf bufs)) ! (pop-to-buffer buf) ! (if (or (not lowest) ! (< (gnus-window-top-edge) lowest)) ! (progn ! (setq lowest-buf buf) ! (setq lowest (gnus-window-top-edge)))))))))) (and lowest-buf (progn (pop-to-buffer lowest-buf) *************** *** 2889,2906 **** ;; This function modifies LIST1. (let* ((top (cons nil list1)) (prev top)) ! (while (and list1 list2) ! (cond ((= (car list1) (car list2)) ! (setq prev list1 ! list1 (cdr list1) ! list2 (cdr list2))) ! ((< (car list1) (car list2)) ! (setcdr prev (cdr list1)) ! (setq list1 (cdr list1))) ! (t ! (setq list2 (cdr list2))))) ! (setcdr prev nil) ! (cdr top))) (defun gnus-compress-sequence (numbers &optional always-list) "Convert list of numbers to a list of ranges or a single range. --- 2889,2906 ---- ;; This function modifies LIST1. (let* ((top (cons nil list1)) (prev top)) ! (while (and list1 list2) ! (cond ((= (car list1) (car list2)) ! (setq prev list1 ! list1 (cdr list1) ! list2 (cdr list2))) ! ((< (car list1) (car list2)) ! (setcdr prev (cdr list1)) ! (setq list1 (cdr list1))) ! (t ! (setq list2 (cdr list2))))) ! (setcdr prev nil) ! (cdr top))) (defun gnus-compress-sequence (numbers &optional always-list) "Convert list of numbers to a list of ranges or a single range. *************** *** 3399,3405 **** (setq level (car gnus-group-list-mode) unread (cdr gnus-group-list-mode))) (setq level (gnus-group-default-level level)) ! (gnus-group-setup-buffer) ;May call from out of group buffer (let ((case-fold-search nil) (group (gnus-group-group-name))) (funcall gnus-group-prepare-function level unread nil) --- 3399,3405 ---- (setq level (car gnus-group-list-mode) unread (cdr gnus-group-list-mode))) (setq level (gnus-group-default-level level)) ! (gnus-group-setup-buffer) ;May call from out of group buffer (let ((case-fold-search nil) (group (gnus-group-group-name))) (funcall gnus-group-prepare-function level unread nil) *************** *** 3446,3459 **** group (car info) newsrc (cdr newsrc) unread (car (gnus-gethash group gnus-newsrc-hashtb))) ! (and unread ; This group might be bogus (or (not regexp) (string-match regexp group)) (<= (setq clevel (car (cdr info))) level) (>= clevel lowest) ! (or all ; We list all groups? ! (eq unread t) ; We list unactivated groups ! (> unread 0) ; We list groups with unread articles (cdr (assq 'tick (nth 3 info)))) ; And groups with tickeds (gnus-group-insert-group-line nil group (car (cdr info)) (nth 3 info) unread (nth 4 info))))) --- 3446,3459 ---- group (car info) newsrc (cdr newsrc) unread (car (gnus-gethash group gnus-newsrc-hashtb))) ! (and unread ; This group might be bogus (or (not regexp) (string-match regexp group)) (<= (setq clevel (car (cdr info))) level) (>= clevel lowest) ! (or all ; We list all groups? ! (eq unread t) ; We list unactivated groups ! (> unread 0) ; We list groups with unread articles (cdr (assq 'tick (nth 3 info)))) ; And groups with tickeds (gnus-group-insert-group-line nil group (car (cdr info)) (nth 3 info) unread (nth 4 info))))) *************** *** 3672,3678 **** (process-marked (if (member group gnus-group-marked) gnus-process-mark ? )) (buffer-read-only nil) ! header ; passed as parameter to user-funcs. b) (beginning-of-line) (setq b (point)) --- 3672,3678 ---- (process-marked (if (member group gnus-group-marked) gnus-process-mark ? )) (buffer-read-only nil) ! header ; passed as parameter to user-funcs. b) (beginning-of-line) (setq b (point)) *************** *** 4068,4078 **** unread) (goto-char (point-min)) (if (or (eq (setq unread (gnus-group-group-unread)) t) ; Not active. ! (not (zerop unread)) ; Has unread articles. (zerop (gnus-group-next-unread-group 1))) ; Next unread group. ! (point) ; Success. (goto-char opoint) ! nil)) ; Not success. (gnus-group-position-cursor))) (defun gnus-group-enter-server-mode () --- 4068,4078 ---- unread) (goto-char (point-min)) (if (or (eq (setq unread (gnus-group-group-unread)) t) ; Not active. ! (not (zerop unread)) ; Has unread articles. (zerop (gnus-group-next-unread-group 1))) ; Next unread group. ! (point) ; Success. (goto-char opoint) ! nil)) ; Not success. (gnus-group-position-cursor))) (defun gnus-group-enter-server-mode () *************** *** 4870,4877 **** (setq gnus-current-kill-article article) (gnus-kill-file-edit-file group) (gnus-message 6 ! (substitute-command-keys ! "Editing a global kill file (Type \\[gnus-kill-file-exit] to exit)"))) (defun gnus-group-edit-local-kill (article group) "Edit a local kill file." --- 4870,4877 ---- (setq gnus-current-kill-article article) (gnus-kill-file-edit-file group) (gnus-message 6 ! (substitute-command-keys ! "Editing a global kill file (Type \\[gnus-kill-file-exit] to exit)"))) (defun gnus-group-edit-local-kill (article group) "Edit a local kill file." *************** *** 5219,5225 **** "Give a one line description of the group mode commands." (interactive) (gnus-message 6 ! (substitute-command-keys "\\\\[gnus-group-next-group]:Forward \\[gnus-group-prev-group]:Backward \\[gnus-browse-exit]:Exit \\[gnus-info-find-node]:Run Info \\[gnus-browse-describe-briefly]:This help"))) ;;; --- 5219,5225 ---- "Give a one line description of the group mode commands." (interactive) (gnus-message 6 ! (substitute-command-keys "\\\\[gnus-group-next-group]:Forward \\[gnus-group-prev-group]:Backward \\[gnus-browse-exit]:Exit \\[gnus-info-find-node]:Run Info \\[gnus-browse-describe-briefly]:This help"))) ;;; *************** *** 5689,5695 **** (and article (setq header (gnus-get-header-by-num article)) (vectorp header) ! (header-subject header)))) ;; Various summary mode internalish functions. --- 5689,5695 ---- (and article (setq header (gnus-get-header-by-num article)) (vectorp header) ! (mail-header-subject header)))) ;; Various summary mode internalish functions. *************** *** 5765,5771 **** &optional dummy score) (or sformat (setq sformat gnus-summary-line-format-spec)) (let* ((indentation (aref gnus-thread-indent-array level)) ! (lines (header-lines header)) (score (or score gnus-summary-default-score 0)) (score-char (if (or (null gnus-summary-default-score) --- 5765,5771 ---- &optional dummy score) (or sformat (setq sformat gnus-summary-line-format-spec)) (let* ((indentation (aref gnus-thread-indent-array level)) ! (lines (mail-header-lines header)) (score (or score gnus-summary-default-score 0)) (score-char (if (or (null gnus-summary-default-score) *************** *** 5774,5780 **** (if (< score gnus-summary-default-score) gnus-score-below-mark gnus-score-over-mark))) (replied (if replied gnus-replied-mark ? )) ! (from (header-from header)) (name (cond ((string-match "(.+)" from) (substring from (1+ (match-beginning 0)) (1- (match-end 0)))) --- 5774,5780 ---- (if (< score gnus-summary-default-score) gnus-score-below-mark gnus-score-over-mark))) (replied (if replied gnus-replied-mark ? )) ! (from (mail-header-from header)) (name (cond ((string-match "(.+)" from) (substring from (1+ (match-beginning 0)) (1- (match-end 0)))) *************** *** 5785,5792 **** (1- (match-end 0)))) (substring from 0 beg)))) (t from))) ! (subject (header-subject header)) ! (number (header-number header)) (opening-bracket (if dummy ?\< ?\[)) (closing-bracket (if dummy ?\> ?\])) (buffer-read-only nil) --- 5785,5792 ---- (1- (match-end 0)))) (substring from 0 beg)))) (t from))) ! (subject (mail-header-subject header)) ! (number (mail-header-number header)) (opening-bracket (if dummy ?\< ?\[)) (closing-bracket (if dummy ?\> ?\])) (buffer-read-only nil) *************** *** 5883,5889 **** ((not new-group) (gnus-set-global-variables) (gnus-kill-buffer kill-buffer) ! (gnus-configure-windows 'summary) (gnus-set-mode-line 'summary) (gnus-summary-position-cursor) (message "") --- 5883,5889 ---- ((not new-group) (gnus-set-global-variables) (gnus-kill-buffer kill-buffer) ! (gnus-configure-windows 'summary 'force) (gnus-set-mode-line 'summary) (gnus-summary-position-cursor) (message "") *************** *** 5937,5944 **** (gnus-update-format-specifications) ;; Generate the summary buffer. (gnus-summary-prepare) - ;; Create the header hashtb. - (gnus-make-headers-hashtable-by-number) (if (zerop (buffer-size)) (cond (gnus-newsgroup-dormant (gnus-summary-show-all-dormant)) --- 5937,5942 ---- *************** *** 5969,5975 **** gnus-auto-select-first (gnus-summary-first-unread-article)) () ! (gnus-configure-windows 'summary)) (gnus-set-mode-line 'summary) (gnus-summary-position-cursor) ;; If in async mode, we send some info to the backend. --- 5967,5973 ---- gnus-auto-select-first (gnus-summary-first-unread-article)) () ! (gnus-configure-windows 'summary 'force)) (gnus-set-mode-line 'summary) (gnus-summary-position-cursor) ;; If in async mode, we send some info to the backend. *************** *** 6009,6017 **** gnus-newsgroup-headers) 'cull) (gnus-summary-update-lines) ! ;; Remove the final newline. ! ;;(goto-char (point-max)) ! ;;(delete-char -1) ;; Call hooks for modifying summary buffer. ;; Suggested by sven@tde.LTH.Se (Sven Mattisson). (goto-char (point-min)) --- 6007,6014 ---- gnus-newsgroup-headers) 'cull) (gnus-summary-update-lines) ! ;; Create the header hashtb. ! (gnus-make-headers-hashtable-by-number) ;; Call hooks for modifying summary buffer. ;; Suggested by sven@tde.LTH.Se (Sven Mattisson). (goto-char (point-min)) *************** *** 6027,6033 **** subject hthread whole-subject) (while threads (setq whole-subject ! (setq subject (header-subject (car (car threads))))) (if gnus-summary-gather-subject-limit (or (and (numberp gnus-summary-gather-subject-limit) (> (length subject) gnus-summary-gather-subject-limit) --- 6024,6030 ---- subject hthread whole-subject) (while threads (setq whole-subject ! (setq subject (mail-header-subject (car (car threads))))) (if gnus-summary-gather-subject-limit (or (and (numberp gnus-summary-gather-subject-limit) (> (length subject) gnus-summary-gather-subject-limit) *************** *** 6073,6084 **** (or gnus-thread-ignore-subject (let* ((prev (symbol-value refs)) (subject (gnus-simplify-subject-re ! (header-subject (car prev)))) (headers (cdr prev))) (while headers (if (not (string= subject (gnus-simplify-subject-re ! (header-subject (car headers))))) (progn (setq new-roots (cons (car headers) new-roots)) (setcdr prev (cdr headers))) --- 6070,6081 ---- (or gnus-thread-ignore-subject (let* ((prev (symbol-value refs)) (subject (gnus-simplify-subject-re ! (mail-header-subject (car prev)))) (headers (cdr prev))) (while headers (if (not (string= subject (gnus-simplify-subject-re ! (mail-header-subject (car headers))))) (progn (setq new-roots (cons (car headers) new-roots)) (setcdr prev (cdr headers))) *************** *** 6091,6097 **** ;; possible. (let ((r new-roots)) (while r ! (gnus-sethash (concat (header-id (car r)) ".boo") (list nil (car r)) gnus-newsgroup-dependencies) (setq r (cdr r)))) --- 6088,6094 ---- ;; possible. (let ((r new-roots)) (while r ! (gnus-sethash (concat (mail-header-id (car r)) ".boo") (list nil (car r)) gnus-newsgroup-dependencies) (setq r (cdr r)))) *************** *** 6125,6141 **** (let ((headers (cdr (symbol-value refs)))) ;; We weed out the low-scored articles. (while headers ! (if (not (< (or (cdr (assq (header-number (car headers)) gnus-newsgroup-scored)) default) below)) ;; It is over. (setq roots (cons (car headers) roots)) ;; It is below, so we mark it as read. (setq gnus-newsgroup-unreads ! (delq (header-number (car headers)) gnus-newsgroup-unreads)) (setq gnus-newsgroup-reads ! (cons (cons (header-number (car headers)) gnus-low-score-mark) gnus-newsgroup-reads))) (setq headers (cdr headers)))) --- 6122,6138 ---- (let ((headers (cdr (symbol-value refs)))) ;; We weed out the low-scored articles. (while headers ! (if (not (< (or (cdr (assq (mail-header-number (car headers)) gnus-newsgroup-scored)) default) below)) ;; It is over. (setq roots (cons (car headers) roots)) ;; It is below, so we mark it as read. (setq gnus-newsgroup-unreads ! (delq (mail-header-number (car headers)) gnus-newsgroup-unreads)) (setq gnus-newsgroup-reads ! (cons (cons (mail-header-number (car headers)) gnus-low-score-mark) gnus-newsgroup-reads))) (setq headers (cdr headers)))) *************** *** 6147,6168 **** (or gnus-thread-ignore-subject (let* ((prev (symbol-value refs)) (subject (gnus-simplify-subject-re ! (header-subject (car prev)))) (headers (cdr prev))) (while headers (if (not (string= subject (gnus-simplify-subject-re ! (header-subject (car headers))))) (progn ! (if (not (< (or (cdr (assq (header-number (car headers)) gnus-newsgroup-scored)) default) below)) (setq new-roots (cons (car headers) new-roots)) (setq gnus-newsgroup-unreads ! (delq (header-number (car headers)) gnus-newsgroup-unreads)) (setq gnus-newsgroup-reads ! (cons (cons (header-number (car headers)) gnus-low-score-mark) gnus-newsgroup-reads))) (setcdr prev (cdr headers))) --- 6144,6165 ---- (or gnus-thread-ignore-subject (let* ((prev (symbol-value refs)) (subject (gnus-simplify-subject-re ! (mail-header-subject (car prev)))) (headers (cdr prev))) (while headers (if (not (string= subject (gnus-simplify-subject-re ! (mail-header-subject (car headers))))) (progn ! (if (not (< (or (cdr (assq (mail-header-number (car headers)) gnus-newsgroup-scored)) default) below)) (setq new-roots (cons (car headers) new-roots)) (setq gnus-newsgroup-unreads ! (delq (mail-header-number (car headers)) gnus-newsgroup-unreads)) (setq gnus-newsgroup-reads ! (cons (cons (mail-header-number (car headers)) gnus-low-score-mark) gnus-newsgroup-reads))) (setcdr prev (cdr headers))) *************** *** 6170,6182 **** (setq headers (cdr headers))))) ;; If this article is expunged, some of the children might be ;; roots. ! (if (< (or (cdr (assq (header-number (car (symbol-value refs))) gnus-newsgroup-scored)) default) below) (let* ((prev (symbol-value refs)) (headers (cdr prev))) (while headers ! (setq article (header-number (car headers))) (if (not (< (or (cdr (assq article gnus-newsgroup-scored)) default) below)) (progn (setq new-roots (cons (car headers) new-roots)) --- 6167,6179 ---- (setq headers (cdr headers))))) ;; If this article is expunged, some of the children might be ;; roots. ! (if (< (or (cdr (assq (mail-header-number (car (symbol-value refs))) gnus-newsgroup-scored)) default) below) (let* ((prev (symbol-value refs)) (headers (cdr prev))) (while headers ! (setq article (mail-header-number (car headers))) (if (not (< (or (cdr (assq article gnus-newsgroup-scored)) default) below)) (progn (setq new-roots (cons (car headers) new-roots)) *************** *** 6193,6199 **** (headers (cdr prev)) article) (while headers ! (setq article (header-number (car headers))) (if (not (< (or (cdr (assq article gnus-newsgroup-scored)) default) below)) (setq prev headers) --- 6190,6196 ---- (headers (cdr prev)) article) (while headers ! (setq article (mail-header-number (car headers))) (if (not (< (or (cdr (assq article gnus-newsgroup-scored)) default) below)) (setq prev headers) *************** *** 6211,6217 **** ;; possible. (let ((r new-roots)) (while r ! (gnus-sethash (concat (header-id (car r)) ".boo") (list nil (car r)) gnus-newsgroup-dependencies) (setq r (cdr r)))) --- 6208,6214 ---- ;; possible. (let ((r new-roots)) (while r ! (gnus-sethash (concat (mail-header-id (car r)) ".boo") (list nil (car r)) gnus-newsgroup-dependencies) (setq r (cdr r)))) *************** *** 6230,6236 **** (let ((head (car thread)) (tail (apply 'append (mapcar 'gnus-cut-thread (cdr thread))))) (if (and (null tail) ! (let ((number (header-number head))) (or (memq number gnus-newsgroup-ancient) (memq number gnus-newsgroup-dormant) (and gnus-summary-expunge-below --- 6227,6233 ---- (let ((head (car thread)) (tail (apply 'append (mapcar 'gnus-cut-thread (cdr thread))))) (if (and (null tail) ! (let ((number (mail-header-number head))) (or (memq number gnus-newsgroup-ancient) (memq number gnus-newsgroup-dormant) (and gnus-summary-expunge-below *************** *** 6251,6264 **** (defun gnus-trim-thread (thread) ;; Remove root ancient articles with only one child from THREAD. (if (and (eq gnus-fetch-old-headers 'some) ! (memq (header-number (car thread)) gnus-newsgroup-ancient) (= (length thread) 2)) (gnus-trim-thread (nth 1 thread)) thread)) (defun gnus-make-sub-thread (root) ;; This function makes a sub-tree for a node in the tree. ! (let ((children (reverse (cdr (gnus-gethash (downcase (header-id root)) gnus-newsgroup-dependencies))))) (cons root (mapcar 'gnus-make-sub-thread children)))) --- 6248,6261 ---- (defun gnus-trim-thread (thread) ;; Remove root ancient articles with only one child from THREAD. (if (and (eq gnus-fetch-old-headers 'some) ! (memq (mail-header-number (car thread)) gnus-newsgroup-ancient) (= (length thread) 2)) (gnus-trim-thread (nth 1 thread)) thread)) (defun gnus-make-sub-thread (root) ;; This function makes a sub-tree for a node in the tree. ! (let ((children (reverse (cdr (gnus-gethash (downcase (mail-header-id root)) gnus-newsgroup-dependencies))))) (cons root (mapcar 'gnus-make-sub-thread children)))) *************** *** 6274,6280 **** (progn (setq heads (cdr (symbol-value refs))) (while heads ! (if (not (memq (header-number (car heads)) gnus-newsgroup-dormant)) (progn (setq id (symbol-name refs)) --- 6271,6277 ---- (progn (setq heads (cdr (symbol-value refs))) (while heads ! (if (not (memq (mail-header-number (car heads)) gnus-newsgroup-dormant)) (progn (setq id (symbol-name refs)) *************** *** 6307,6318 **** (and (setq header (gnus-nov-parse-line (read (current-buffer)) deps)) ! (setq ref (header-references header)) (string-match "\\(<[^>]+>\\) *$" ref) (substring ref (match-beginning 1) (match-end 1)))))) (and header (setq gnus-newsgroup-headers (cons header gnus-newsgroup-headers) ! gnus-newsgroup-ancient (cons (header-number header) gnus-newsgroup-ancient)))))) ;; Re-build the thread containing ID. --- 6304,6315 ---- (and (setq header (gnus-nov-parse-line (read (current-buffer)) deps)) ! (setq ref (mail-header-references header)) (string-match "\\(<[^>]+>\\) *$" ref) (substring ref (match-beginning 1) (match-end 1)))))) (and header (setq gnus-newsgroup-headers (cons header gnus-newsgroup-headers) ! gnus-newsgroup-ancient (cons (mail-header-number header) gnus-newsgroup-ancient)))))) ;; Re-build the thread containing ID. *************** *** 6323,6329 **** (while (and id (setq headers (car (setq art (gnus-gethash (downcase id) dep))))) (setq parent art) ! (setq id (and (setq refs (header-references headers)) (string-match "\\(<[^>]+>\\) *$" refs) (substring refs (match-beginning 1) (match-end 1))))) (setq thread (gnus-make-sub-thread (car parent))) --- 6320,6326 ---- (while (and id (setq headers (car (setq art (gnus-gethash (downcase id) dep))))) (setq parent art) ! (setq id (and (setq refs (mail-header-references headers)) (string-match "\\(<[^>]+>\\) *$" refs) (substring refs (match-beginning 1) (match-end 1))))) (setq thread (gnus-make-sub-thread (car parent))) *************** *** 6335,6341 **** ;; Delete all lines in the summary buffer that correspond to articles ;; in this thread. (defun gnus-rebuild-remove-articles (thread) ! (and (gnus-summary-goto-subject (header-number (car thread))) (gnus-delete-line)) (mapcar (lambda (th) (gnus-rebuild-remove-articles th)) (cdr thread))) --- 6332,6338 ---- ;; Delete all lines in the summary buffer that correspond to articles ;; in this thread. (defun gnus-rebuild-remove-articles (thread) ! (and (gnus-summary-goto-subject (mail-header-number (car thread))) (gnus-delete-line)) (mapcar (lambda (th) (gnus-rebuild-remove-articles th)) (cdr thread))) *************** *** 6359,6400 **** (defun gnus-thread-sort-by-number (h1 h2) "Sort threads by root article number." ! (< (header-number (gnus-thread-header h1)) ! (header-number (gnus-thread-header h2)))) (defun gnus-thread-sort-by-author (h1 h2) "Sort threads by root author." (string-lessp (let ((extract (funcall gnus-extract-address-components ! (header-from (gnus-thread-header h1))))) (or (car extract) (cdr extract))) (let ((extract (funcall gnus-extract-address-components ! (header-from (gnus-thread-header h2))))) (or (car extract) (cdr extract))))) (defun gnus-thread-sort-by-subject (h1 h2) "Sort threads by root subject." (string-lessp (downcase (gnus-simplify-subject ! (header-subject (gnus-thread-header h1)))) (downcase (gnus-simplify-subject ! (header-subject (gnus-thread-header h2)))))) (defun gnus-thread-sort-by-date (h1 h2) "Sort threads by root article date." (string-lessp ! (gnus-sortable-date (header-date (gnus-thread-header h1))) ! (gnus-sortable-date (header-date (gnus-thread-header h2))))) (defun gnus-thread-sort-by-score (h1 h2) "Sort threads by root article score. Unscored articles will be counted as having a score of zero." ! (> (or (cdr (assq (header-number (gnus-thread-header h1)) gnus-newsgroup-scored)) gnus-summary-default-score 0) ! (or (cdr (assq (header-number (gnus-thread-header h2)) gnus-newsgroup-scored)) gnus-summary-default-score 0))) --- 6356,6397 ---- (defun gnus-thread-sort-by-number (h1 h2) "Sort threads by root article number." ! (< (mail-header-number (gnus-thread-header h1)) ! (mail-header-number (gnus-thread-header h2)))) (defun gnus-thread-sort-by-author (h1 h2) "Sort threads by root author." (string-lessp (let ((extract (funcall gnus-extract-address-components ! (mail-header-from (gnus-thread-header h1))))) (or (car extract) (cdr extract))) (let ((extract (funcall gnus-extract-address-components ! (mail-header-from (gnus-thread-header h2))))) (or (car extract) (cdr extract))))) (defun gnus-thread-sort-by-subject (h1 h2) "Sort threads by root subject." (string-lessp (downcase (gnus-simplify-subject ! (mail-header-subject (gnus-thread-header h1)))) (downcase (gnus-simplify-subject ! (mail-header-subject (gnus-thread-header h2)))))) (defun gnus-thread-sort-by-date (h1 h2) "Sort threads by root article date." (string-lessp ! (gnus-sortable-date (mail-header-date (gnus-thread-header h1))) ! (gnus-sortable-date (mail-header-date (gnus-thread-header h2))))) (defun gnus-thread-sort-by-score (h1 h2) "Sort threads by root article score. Unscored articles will be counted as having a score of zero." ! (> (or (cdr (assq (mail-header-number (gnus-thread-header h1)) gnus-newsgroup-scored)) gnus-summary-default-score 0) ! (or (cdr (assq (mail-header-number (gnus-thread-header h2)) gnus-newsgroup-scored)) gnus-summary-default-score 0))) *************** *** 6416,6425 **** ;; This function find the total score of the thread below ROOT. (setq root (car root)) (apply gnus-thread-score-function ! (or (cdr (assq (header-number root) gnus-newsgroup-scored)) gnus-summary-default-score 0) (mapcar 'gnus-thread-total-score ! (cdr (gnus-gethash (downcase (header-id root)) gnus-newsgroup-dependencies))))) ;; Added by Per Abrahamsen . --- 6413,6422 ---- ;; This function find the total score of the thread below ROOT. (setq root (car root)) (apply gnus-thread-score-function ! (or (cdr (assq (mail-header-number root) gnus-newsgroup-scored)) gnus-summary-default-score 0) (mapcar 'gnus-thread-total-score ! (cdr (gnus-gethash (downcase (mail-header-id root)) gnus-newsgroup-dependencies))))) ;; Added by Per Abrahamsen . *************** *** 6467,6473 **** (setcdr th (cdr (cdr (car thread)))) (setq gnus-tmp-gathered (nconc (mapcar ! (lambda (h) (header-number (car h))) (cdr (cdr (car thread)))) gnus-tmp-gathered)) (setcdr (cdr (car thread)) nil)) --- 6464,6470 ---- (setcdr th (cdr (cdr (car thread)))) (setq gnus-tmp-gathered (nconc (mapcar ! (lambda (h) (mail-header-number (car h))) (cdr (cdr (car thread)))) gnus-tmp-gathered)) (setcdr (cdr (car thread)) nil)) *************** *** 6476,6507 **** ;; We print adopted articles with empty subject fields. (setq gnus-tmp-gathered (nconc (mapcar ! (lambda (h) (header-number (car h))) (cdr (cdr (car thread)))) gnus-tmp-gathered)) (setq level -1)) ((eq gnus-summary-make-false-root 'dummy) ;; We output a dummy root. (gnus-summary-insert-dummy-line ! nil header (header-number (car (car (cdr (car thread))))))) (t ;; We do not make a root for the gathered ;; sub-threads at all. (setq level -1)))) ! (setq number (header-number header) ! subject (header-subject header)) ;; Do the async thing. (and gnus-newsgroup-async (setq gnus-newsgroup-threads ! (cons (cons number (header-lines header)) gnus-newsgroup-threads))) ;; We may have to root out some bad articles... (and cull (= level 0) ! (cond ((and (memq (setq number (header-number header)) gnus-newsgroup-dormant) (null thread)) (setq header nil)) --- 6473,6504 ---- ;; We print adopted articles with empty subject fields. (setq gnus-tmp-gathered (nconc (mapcar ! (lambda (h) (mail-header-number (car h))) (cdr (cdr (car thread)))) gnus-tmp-gathered)) (setq level -1)) ((eq gnus-summary-make-false-root 'dummy) ;; We output a dummy root. (gnus-summary-insert-dummy-line ! nil header (mail-header-number (car (car (cdr (car thread))))))) (t ;; We do not make a root for the gathered ;; sub-threads at all. (setq level -1)))) ! (setq number (mail-header-number header) ! subject (mail-header-subject header)) ;; Do the async thing. (and gnus-newsgroup-async (setq gnus-newsgroup-threads ! (cons (cons number (mail-header-lines header)) gnus-newsgroup-threads))) ;; We may have to root out some bad articles... (and cull (= level 0) ! (cond ((and (memq (setq number (mail-header-number header)) gnus-newsgroup-dormant) (null thread)) (setq header nil)) *************** *** 6563,6580 **** ;; Do the async thing, if that is required. (if gnus-newsgroup-async (setq gnus-newsgroup-threads ! (mapcar (lambda (h) (cons (header-number h) (header-lines h))) headers))) (while headers (setq header (car headers) headers (cdr headers) ! number (header-number header)) ;; We may have to root out some bad articles... (cond ((and cull ! (memq (setq number (header-number header)) gnus-newsgroup-dormant))) ((and cull gnus-summary-expunge-below (< (or (cdr (assq number gnus-newsgroup-scored)) --- 6560,6577 ---- ;; Do the async thing, if that is required. (if gnus-newsgroup-async (setq gnus-newsgroup-threads ! (mapcar (lambda (h) (cons (mail-header-number h) (mail-header-lines h))) headers))) (while headers (setq header (car headers) headers (cdr headers) ! number (mail-header-number header)) ;; We may have to root out some bad articles... (cond ((and cull ! (memq (setq number (mail-header-number header)) gnus-newsgroup-dormant))) ((and cull gnus-summary-expunge-below (< (or (cdr (assq number gnus-newsgroup-scored)) *************** *** 6596,6602 **** gnus-ancient-mark))) (memq number gnus-newsgroup-replied) (memq number gnus-newsgroup-expirable) ! (header-subject header) nil (cdr (assq number gnus-newsgroup-scored)))))))) (defun gnus-select-newsgroup (group &optional read-all) --- 6593,6599 ---- gnus-ancient-mark))) (memq number gnus-newsgroup-replied) (memq number gnus-newsgroup-expirable) ! (mail-header-subject header) nil (cdr (assq number gnus-newsgroup-scored)))))))) (defun gnus-select-newsgroup (group &optional read-all) *************** *** 6682,6688 **** (setq gnus-newsgroup-unreads (gnus-set-sorted-intersection gnus-newsgroup-unreads ! (mapcar (lambda (headers) (header-number headers)) gnus-newsgroup-headers))) ;; Adjust and set lists of article marks. (and info --- 6679,6685 ---- (setq gnus-newsgroup-unreads (gnus-set-sorted-intersection gnus-newsgroup-unreads ! (mapcar (lambda (headers) (mail-header-number headers)) gnus-newsgroup-headers))) ;; Adjust and set lists of article marks. (and info *************** *** 6712,6720 **** ;; First and last article in this newsgroup. (and gnus-newsgroup-headers (setq gnus-newsgroup-begin ! (header-number (car gnus-newsgroup-headers))) (setq gnus-newsgroup-end ! (header-number (gnus-last-element gnus-newsgroup-headers)))) (setq gnus-reffed-article-number -1) ;; GROUP is successfully selected. (or gnus-newsgroup-headers t))))) --- 6709,6717 ---- ;; First and last article in this newsgroup. (and gnus-newsgroup-headers (setq gnus-newsgroup-begin ! (mail-header-number (car gnus-newsgroup-headers))) (setq gnus-newsgroup-end ! (mail-header-number (gnus-last-element gnus-newsgroup-headers)))) (setq gnus-reffed-article-number -1) ;; GROUP is successfully selected. (or gnus-newsgroup-headers t))))) *************** *** 6930,6939 **** unread-and-unticked unselected)))) (subject (if gnus-current-headers ! (header-subject gnus-current-headers) "")) (max-len (and gnus-mode-non-string-length (- (frame-width) gnus-mode-non-string-length))) ! header) ;; passed as argument to any user-format-funcs (setq mode-string (eval mformat)) (or (numberp max-len) (setq max-len (length mode-string))) --- 6927,6936 ---- unread-and-unticked unselected)))) (subject (if gnus-current-headers ! (mail-header-subject gnus-current-headers) "")) (max-len (and gnus-mode-non-string-length (- (frame-width) gnus-mode-non-string-length))) ! header);; passed as argument to any user-format-funcs (setq mode-string (eval mformat)) (or (numberp max-len) (setq max-len (length mode-string))) *************** *** 6964,6971 **** start group entry number xrefs header) (while headers (setq header (car headers)) ! (if (and (setq xrefs (header-xref header)) ! (not (memq (header-number header) unreads))) (progn (setq start 0) (while (string-match "\\([^ ]+\\):\\([0-9]+\\)" xrefs start) --- 6961,6968 ---- start group entry number xrefs header) (while headers (setq header (car headers)) ! (if (and (setq xrefs (mail-header-xref header)) ! (not (memq (mail-header-number header) unreads))) (progn (setq start 0) (while (string-match "\\([^ ]+\\):\\([0-9]+\\)" xrefs start) *************** *** 7116,7122 **** in-reply-to) (setq id nil ref nil) ! (header-set-number header (read cur)) ;; This implementation of this function, with nine ;; search-forwards instead of the one re-search-forward and ;; a case (which basically was the old function) is actually --- 7113,7119 ---- in-reply-to) (setq id nil ref nil) ! (mail-header-set-number header (read cur)) ;; This implementation of this function, with nine ;; search-forwards instead of the one re-search-forward and ;; a case (which basically was the old function) is actually *************** *** 7128,7155 **** (search-forward "\n.\n" nil t)) (point))) (if (search-forward "\nfrom: " nil t) ! (header-set-from header (gnus-header-value)) ! (header-set-from header "(nobody)")) (goto-char p) (if (search-forward "\nsubject: " nil t) ! (header-set-subject header (gnus-header-value)) ! (header-set-subject header "(none)")) (goto-char p) (and (search-forward "\nxref: " nil t) ! (header-set-xref header (gnus-header-value))) (goto-char p) (or (numberp (and (search-forward "\nlines: " nil t) ! (header-set-lines header (read cur)))) ! (header-set-lines header 0)) (goto-char p) (and (search-forward "\ndate: " nil t) ! (header-set-date header (gnus-header-value))) (goto-char p) (if (search-forward "\nmessage-id: " nil t) ! (header-set-id header (setq id (gnus-header-value))) ;; If there was no message-id, we just fake one to make ;; subsequent routines simpler. ! (header-set-id header (setq id (concat "none+" (int-to-string --- 7125,7152 ---- (search-forward "\n.\n" nil t)) (point))) (if (search-forward "\nfrom: " nil t) ! (mail-header-set-from header (gnus-header-value)) ! (mail-header-set-from header "(nobody)")) (goto-char p) (if (search-forward "\nsubject: " nil t) ! (mail-header-set-subject header (gnus-header-value)) ! (mail-header-set-subject header "(none)")) (goto-char p) (and (search-forward "\nxref: " nil t) ! (mail-header-set-xref header (gnus-header-value))) (goto-char p) (or (numberp (and (search-forward "\nlines: " nil t) ! (mail-header-set-lines header (read cur)))) ! (mail-header-set-lines header 0)) (goto-char p) (and (search-forward "\ndate: " nil t) ! (mail-header-set-date header (gnus-header-value))) (goto-char p) (if (search-forward "\nmessage-id: " nil t) ! (mail-header-set-id header (setq id (gnus-header-value))) ;; If there was no message-id, we just fake one to make ;; subsequent routines simpler. ! (mail-header-set-id header (setq id (concat "none+" (int-to-string *************** *** 7158,7164 **** (goto-char p) (if (search-forward "\nreferences: " nil t) (progn ! (header-set-references header (gnus-header-value)) (setq end (match-end 0)) (save-excursion (setq ref --- 7155,7161 ---- (goto-char p) (if (search-forward "\nreferences: " nil t) (progn ! (mail-header-set-references header (gnus-header-value)) (setq end (match-end 0)) (save-excursion (setq ref *************** *** 7178,7184 **** (setq in-reply-to (gnus-header-value)) (string-match "<[^>]+>" in-reply-to)) (progn ! (header-set-references header (setq ref (substring in-reply-to (match-beginning 0) (match-end 0)))) --- 7175,7181 ---- (setq in-reply-to (gnus-header-value)) (string-match "<[^>]+>" in-reply-to)) (progn ! (mail-header-set-references header (setq ref (substring in-reply-to (match-beginning 0) (match-end 0)))) *************** *** 7196,7205 **** ;; any additional Xrefs (in case the two articles ;; came from different servers. (progn ! (header-set-xref (car (symbol-value dep)) ! (concat (or (header-xref (car (symbol-value dep))) "") ! (or (header-xref header) ""))) (setq header nil)) (setcar (symbol-value dep) header)) (set dep (list header))) --- 7193,7202 ---- ;; any additional Xrefs (in case the two articles ;; came from different servers. (progn ! (mail-header-set-xref (car (symbol-value dep)) ! (concat (or (mail-header-xref (car (symbol-value dep))) "") ! (or (mail-header-xref header) ""))) (setq header nil)) (setcar (symbol-value dep) header)) (set dep (list header))) *************** *** 7318,7327 **** ;; Xrefs (in case the two articles came from different ;; servers. (progn ! (header-set-xref (car (symbol-value dep)) ! (concat (or (header-xref (car (symbol-value dep))) "") ! (or (header-xref header) ""))) (setq header nil)) (setcar (symbol-value dep) header)) (set dep (list header)))) --- 7315,7324 ---- ;; Xrefs (in case the two articles came from different ;; servers. (progn ! (mail-header-set-xref (car (symbol-value dep)) ! (concat (or (mail-header-xref (car (symbol-value dep))) "") ! (or (mail-header-xref header) ""))) (setq header nil)) (setcar (symbol-value dep) header)) (set dep (list header)))) *************** *** 7341,7348 **** gnus-current-headers))) (or (not gnus-use-cross-reference) (not headers) ! (and (header-xref headers) ! (not (string= (header-xref headers) ""))) (let ((case-fold-search t) xref) (save-restriction --- 7338,7345 ---- gnus-current-headers))) (or (not gnus-use-cross-reference) (not headers) ! (and (mail-header-xref headers) ! (not (string= (mail-header-xref headers) ""))) (let ((case-fold-search t) xref) (save-restriction *************** *** 7355,7361 **** (goto-char (1+ (match-end 0))) (setq xref (buffer-substring (point) (progn (end-of-line) (point)))) ! (header-set-xref headers xref)))))))) (defalias 'gnus-find-header-by-number 'gnus-get-header-by-number) (make-obsolete 'gnus-find-header-by-number 'gnus-get-header-by-number) --- 7352,7358 ---- (goto-char (1+ (match-end 0))) (setq xref (buffer-substring (point) (progn (end-of-line) (point)))) ! (mail-header-set-xref headers xref)))))))) (defalias 'gnus-find-header-by-number 'gnus-get-header-by-number) (make-obsolete 'gnus-find-header-by-number 'gnus-get-header-by-number) *************** *** 7370,7376 **** (gnus-make-hashtable (length headers))) (while headers (setq header (car headers)) ! (gnus-sethash (int-to-string (header-number header)) header gnus-newsgroup-headers-hashtb-by-number) (setq headers (cdr headers)))))) --- 7367,7373 ---- (gnus-make-hashtable (length headers))) (while headers (setq header (car headers)) ! (gnus-sethash (int-to-string (mail-header-number header)) header gnus-newsgroup-headers-hashtb-by-number) (setq headers (cdr headers)))))) *************** *** 7403,7409 **** "Extend newsgroup selection with HEADER. Optional argument BACKWARD means extend toward backward." (if header ! (let ((artnum (header-number header))) (setq gnus-newsgroup-headers (if backward (cons header gnus-newsgroup-headers) --- 7400,7406 ---- "Extend newsgroup selection with HEADER. Optional argument BACKWARD means extend toward backward." (if header ! (let ((artnum (mail-header-number header))) (setq gnus-newsgroup-headers (if backward (cons header gnus-newsgroup-headers) *************** *** 7490,7497 **** (eq (get-text-property (point) 'gnus-mark) gnus-unread-mark)) (or (not subject) ! (and (setq psubject (inline (gnus-summary-subject-string))) ! (inline (gnus-subject-equal subject psubject))))))) (if backward (if (bobp) nil (forward-char -1) t) (if (eobp) nil (forward-char 1) t))))) (if did --- 7487,7496 ---- (eq (get-text-property (point) 'gnus-mark) gnus-unread-mark)) (or (not subject) ! (and (setq psubject ! (inline (gnus-summary-subject-string))) ! (inline ! (gnus-subject-equal subject psubject))))))) (if backward (if (bobp) nil (forward-char -1) t) (if (eobp) nil (forward-char 1) t))))) (if did *************** *** 7726,7732 **** (mode major-mode) (buf (current-buffer))) (run-hooks 'gnus-summary-prepare-exit-hook) ! (gnus-summary-update-info) ; Make all changes in this group permanent. (set-buffer buf) (and gnus-use-cache (gnus-cache-possibly-remove-articles)) ;; Make sure where I was, and go to next newsgroup. --- 7725,7731 ---- (mode major-mode) (buf (current-buffer))) (run-hooks 'gnus-summary-prepare-exit-hook) ! (gnus-summary-update-info) ; Make all changes in this group permanent. (set-buffer buf) (and gnus-use-cache (gnus-cache-possibly-remove-articles)) ;; Make sure where I was, and go to next newsgroup. *************** *** 7817,7823 **** "Describe summary mode commands briefly." (interactive) (gnus-message 6 ! (substitute-command-keys "\\\\[gnus-summary-next-page]:Select \\[gnus-summary-next-unread-article]:Forward \\[gnus-summary-prev-unread-article]:Backward \\[gnus-summary-exit]:Exit \\[gnus-info-find-node]:Run Info \\[gnus-summary-describe-briefly]:This help"))) ;; Walking around group mode buffer from summary mode. --- 7816,7822 ---- "Describe summary mode commands briefly." (interactive) (gnus-message 6 ! (substitute-command-keys "\\\\[gnus-summary-next-page]:Select \\[gnus-summary-next-unread-article]:Forward \\[gnus-summary-prev-unread-article]:Backward \\[gnus-summary-exit]:Exit \\[gnus-info-find-node]:Run Info \\[gnus-summary-describe-briefly]:This help"))) ;; Walking around group mode buffer from summary mode. *************** *** 7969,7975 **** (progn (gnus-summary-recenter) (gnus-summary-position-cursor))) ! n)) (defun gnus-summary-next-unread-subject (n) "Go to next N'th unread summary line." --- 7968,7974 ---- (progn (gnus-summary-recenter) (gnus-summary-position-cursor))) ! n)) (defun gnus-summary-next-unread-subject (n) "Go to next N'th unread summary line." *************** *** 7996,8002 **** (mapcar (lambda (headers) (list ! (int-to-string (header-number headers)))) gnus-newsgroup-headers) nil 'require-match)))) (or article (error "No article number")) --- 7995,8001 ---- (mapcar (lambda (headers) (list ! (int-to-string (mail-header-number headers)))) gnus-newsgroup-headers) nil 'require-match)))) (or article (error "No article number")) *************** *** 8092,8100 **** (let (header) (cond ;; Is there such an article? ! ((or (gnus-summary-display-article ! (gnus-summary-search-forward unread subject backward)) ! (eq (gnus-summary-article-mark) gnus-canceled-mark)) (gnus-summary-position-cursor)) ;; If not, we try the first unread, if that is wanted. ((and subject --- 8091,8099 ---- (let (header) (cond ;; Is there such an article? ! ((and (gnus-summary-search-forward unread subject backward) ! (or (gnus-summary-display-article (gnus-summary-article-number)) ! (eq (gnus-summary-article-mark) gnus-canceled-mark))) (gnus-summary-position-cursor)) ;; If not, we try the first unread, if that is wanted. ((and subject *************** *** 8126,8132 **** ;; it back. (select-window (get-buffer-window (current-buffer))) ;; Keep just the event type of CMD. ! ;(and (listp cmd) (setq cmd (car cmd))) ;; Select next unread newsgroup automagically. (cond ((not gnus-auto-select-next) --- 8125,8131 ---- ;; it back. (select-window (get-buffer-window (current-buffer))) ;; Keep just the event type of CMD. ! ;(and (listp cmd) (setq cmd (car cmd))) ;; Select next unread newsgroup automagically. (cond ((not gnus-auto-select-next) *************** *** 8242,8248 **** (gnus-summary-display-article article) (gnus-summary-recenter) (gnus-eval-in-buffer-window gnus-article-buffer ! (gnus-article-prev-page lines)))) (gnus-summary-position-cursor)) (defun gnus-summary-scroll-up (lines) --- 8241,8247 ---- (gnus-summary-display-article article) (gnus-summary-recenter) (gnus-eval-in-buffer-window gnus-article-buffer ! (gnus-article-prev-page lines)))) (gnus-summary-position-cursor)) (defun gnus-summary-scroll-up (lines) *************** *** 8353,8359 **** (string-to-int (completing-read "Article number: " ! (mapcar (lambda (headers) (list (int-to-string (header-number headers)))) gnus-newsgroup-headers) nil 'require-match)))) (prog1 --- 8352,8358 ---- (string-to-int (completing-read "Article number: " ! (mapcar (lambda (headers) (list (int-to-string (mail-header-number headers)))) gnus-newsgroup-headers) nil 'require-match)))) (prog1 *************** *** 8391,8398 **** (while (and (> n 0) ! (let ((ref (header-references (gnus-get-header-by-num ! (gnus-summary-article-number))))) (if (and ref (not (equal ref "")) (string-match "<[^<>]*>[ \t]*$" ref)) (gnus-summary-refer-article --- 8390,8397 ---- (while (and (> n 0) ! (let ((ref (mail-header-references (gnus-get-header-by-num ! (gnus-summary-article-number))))) (if (and ref (not (equal ref "")) (string-match "<[^<>]*>[ \t]*$" ref)) (gnus-summary-refer-article *************** *** 8420,8434 **** (let ((header (car (gnus-gethash (downcase message-id) gnus-newsgroup-dependencies)))) (if header ! (or (gnus-summary-goto-article (header-number header)) ;; The header has been read, but the article had been ;; expunged, so we insert it again. (progn (gnus-summary-insert-line nil header 0 nil gnus-read-mark nil nil ! (header-subject header)) (forward-line -1) ! (header-number header))) (let ((gnus-override-method gnus-refer-article-method) (gnus-ancient-mark gnus-read-mark) (tmp-point (window-start --- 8419,8433 ---- (let ((header (car (gnus-gethash (downcase message-id) gnus-newsgroup-dependencies)))) (if header ! (or (gnus-summary-goto-article (mail-header-number header)) ;; The header has been read, but the article had been ;; expunged, so we insert it again. (progn (gnus-summary-insert-line nil header 0 nil gnus-read-mark nil nil ! (mail-header-subject header)) (forward-line -1) ! (mail-header-number header))) (let ((gnus-override-method gnus-refer-article-method) (gnus-ancient-mark gnus-read-mark) (tmp-point (window-start *************** *** 8445,8451 **** (if (gnus-article-prepare message-id nil (gnus-read-header message-id)) (progn ! (setq number (header-number gnus-current-headers)) (gnus-rebuild-thread message-id) (gnus-summary-goto-subject number) (if (null gnus-use-full-window) --- 8444,8450 ---- (if (gnus-article-prepare message-id nil (gnus-read-header message-id)) (progn ! (setq number (mail-header-number gnus-current-headers)) (gnus-rebuild-thread message-id) (gnus-summary-goto-subject number) (if (null gnus-use-full-window) *************** *** 8550,8569 **** (gnus-message 9 "Searching article: %d..." gnus-current-article) (setq last gnus-current-article) (gnus-eval-in-buffer-window gnus-article-buffer ! (save-restriction ! (widen) ! ;; Begin search from current point. ! (setq found (funcall re-search regexp nil t)))) ;; Then search next articles. (while (and (not found) (gnus-summary-display-article (gnus-summary-search-subject backward nil nil))) (gnus-message 9 "Searching article: %d..." gnus-current-article) (gnus-eval-in-buffer-window gnus-article-buffer ! (save-restriction ! (widen) ! (goto-char (if backward (point-max) (point-min))) ! (setq found (funcall re-search regexp nil t))))) (message "") ;; Adjust article pointer. (or (eq last gnus-current-article) --- 8549,8568 ---- (gnus-message 9 "Searching article: %d..." gnus-current-article) (setq last gnus-current-article) (gnus-eval-in-buffer-window gnus-article-buffer ! (save-restriction ! (widen) ! ;; Begin search from current point. ! (setq found (funcall re-search regexp nil t)))) ;; Then search next articles. (while (and (not found) (gnus-summary-display-article (gnus-summary-search-subject backward nil nil))) (gnus-message 9 "Searching article: %d..." gnus-current-article) (gnus-eval-in-buffer-window gnus-article-buffer ! (save-restriction ! (widen) ! (goto-char (if backward (point-max) (point-min))) ! (setq found (funcall re-search regexp nil t))))) (message "") ;; Adjust article pointer. (or (eq last gnus-current-article) *************** *** 8767,8782 **** (while articles (if (setq art-group (gnus-request-move-article ! (car articles) ; Article to move ! gnus-newsgroup-name ; From newsgrouo (nth 1 (gnus-find-method-for-group ! gnus-newsgroup-name)) ; Server (list 'gnus-request-accept-article (if select-method (list 'quote select-method) to-newsgroup) ! (not (cdr articles))) ; Accept form ! (not (cdr articles)))) ; Only save nov last time (let* ((buffer-read-only nil) (entry (or --- 8766,8781 ---- (while articles (if (setq art-group (gnus-request-move-article ! (car articles) ; Article to move ! gnus-newsgroup-name ; From newsgrouo (nth 1 (gnus-find-method-for-group ! gnus-newsgroup-name)) ; Server (list 'gnus-request-accept-article (if select-method (list 'quote select-method) to-newsgroup) ! (not (cdr articles))) ; Accept form ! (not (cdr articles)))) ; Only save nov last time (let* ((buffer-read-only nil) (entry (or *************** *** 8993,8999 **** (or total (setq gnus-newsgroup-expirable es)) ;; We go through the old list of expirable, and mark all ;; really expired articles as non-existant. ! (or (eq es expirable) ; If nothing was expired, we don't mark. (let ((gnus-use-cache nil)) (while expirable (or (memq (car expirable) es) --- 8992,8998 ---- (or total (setq gnus-newsgroup-expirable es)) ;; We go through the old list of expirable, and mark all ;; really expired articles as non-existant. ! (or (eq es expirable) ; If nothing was expired, we don't mark. (let ((gnus-use-cache nil)) (while expirable (or (memq (car expirable) es) *************** *** 9085,9091 **** (setq buffer-read-only t) (buffer-disable-undo (current-buffer)) (gnus-configure-windows 'summary)) ! (and gnus-visual (run-hooks 'gnus-visual-mark-article-hook)))) (defun gnus-summary-edit-article-postpone () "Postpone changes to the current article." --- 9084,9090 ---- (setq buffer-read-only t) (buffer-disable-undo (current-buffer)) (gnus-configure-windows 'summary)) ! (and gnus-visual (run-hooks 'gnus-visual-mark-article-hook)))) (defun gnus-summary-edit-article-postpone () "Postpone changes to the current article." *************** *** 9277,9293 **** (interactive "p") (let ((backward (< n 0)) (n (abs n))) ! (while (and ! (> n 0) ! (if unmark ! (gnus-summary-remove-process-mark (gnus-summary-article-number)) ! (gnus-summary-set-process-mark (gnus-summary-article-number))) ! (zerop (gnus-summary-next-subject (if backward -1 1) nil t))) ! (setq n (1- n))) ! (if (/= 0 n) (gnus-message 7 "No more articles")) ! (gnus-summary-recenter) ! (gnus-summary-position-cursor) ! n)) (defun gnus-summary-unmark-as-processable (n) "Remove the process mark from the next N articles. --- 9276,9292 ---- (interactive "p") (let ((backward (< n 0)) (n (abs n))) ! (while (and ! (> n 0) ! (if unmark ! (gnus-summary-remove-process-mark (gnus-summary-article-number)) ! (gnus-summary-set-process-mark (gnus-summary-article-number))) ! (zerop (gnus-summary-next-subject (if backward -1 1) nil t))) ! (setq n (1- n))) ! (if (/= 0 n) (gnus-message 7 "No more articles")) ! (gnus-summary-recenter) ! (gnus-summary-position-cursor) ! n)) (defun gnus-summary-unmark-as-processable (n) "Remove the process mark from the next N articles. *************** *** 9411,9426 **** gnus-ticked-mark gnus-dormant-mark))))) (n (abs n)) (mark (or mark gnus-del-mark))) ! (while (and (> n 0) ! (gnus-summary-mark-article nil mark no-expire) ! (zerop (gnus-summary-next-subject ! (if backward -1 1) gnus-summary-goto-unread t))) ! (setq n (1- n))) ! (if (/= 0 n) (gnus-message 7 "No more %sarticles" (if mark "" "unread "))) ! (gnus-summary-recenter) ! (gnus-summary-position-cursor) ! (gnus-set-mode-line 'summary) ! n)) (defun gnus-summary-mark-article-as-read (mark) "Mark the current article quickly as read with MARK." --- 9410,9425 ---- gnus-ticked-mark gnus-dormant-mark))))) (n (abs n)) (mark (or mark gnus-del-mark))) ! (while (and (> n 0) ! (gnus-summary-mark-article nil mark no-expire) ! (zerop (gnus-summary-next-subject ! (if backward -1 1) gnus-summary-goto-unread t))) ! (setq n (1- n))) ! (if (/= 0 n) (gnus-message 7 "No more %sarticles" (if mark "" "unread "))) ! (gnus-summary-recenter) ! (gnus-summary-position-cursor) ! (gnus-set-mode-line 'summary) ! n)) (defun gnus-summary-mark-article-as-read (mark) "Mark the current article quickly as read with MARK." *************** *** 9680,9688 **** (concat (mapconcat (lambda (char) (char-to-string (symbol-value char))) '(gnus-del-mark gnus-read-mark gnus-ancient-mark ! gnus-killed-mark gnus-kill-file-mark ! gnus-low-score-mark gnus-expirable-mark ! gnus-canceled-mark gnus-catchup-mark) "")))) (defalias 'gnus-summary-delete-marked-with --- 9679,9687 ---- (concat (mapconcat (lambda (char) (char-to-string (symbol-value char))) '(gnus-del-mark gnus-read-mark gnus-ancient-mark ! gnus-killed-mark gnus-kill-file-mark ! gnus-low-score-mark gnus-expirable-mark ! gnus-canceled-mark gnus-catchup-mark) "")))) (defalias 'gnus-summary-delete-marked-with *************** *** 10044,10055 **** (gnus-set-global-variables) (let ((backward (< n 0)) (n (abs n))) ! (while (and (> n 0) ! (gnus-summary-go-to-next-thread backward)) ! (setq n (1- n))) ! (gnus-summary-position-cursor) ! (if (/= 0 n) (gnus-message 7 "No more threads")) ! n)) (defun gnus-summary-prev-thread (n) "Go to the same level previous N'th thread. --- 10043,10054 ---- (gnus-set-global-variables) (let ((backward (< n 0)) (n (abs n))) ! (while (and (> n 0) ! (gnus-summary-go-to-next-thread backward)) ! (setq n (1- n))) ! (gnus-summary-position-cursor) ! (if (/= 0 n) (gnus-message 7 "No more threads")) ! n)) (defun gnus-summary-prev-thread (n) "Go to the same level previous N'th thread. *************** *** 10091,10103 **** (gnus-set-global-variables) (let ((up (< n 0)) (n (abs n))) ! (while (and (> n 0) ! (if up (gnus-summary-go-up-thread) ! (gnus-summary-go-down-thread))) ! (setq n (1- n))) ! (gnus-summary-position-cursor) ! (if (/= 0 n) (gnus-message 7 "Can't go further")) ! n)) (defun gnus-summary-up-thread (n) "Go up thread N steps. --- 10090,10102 ---- (gnus-set-global-variables) (let ((up (< n 0)) (n (abs n))) ! (while (and (> n 0) ! (if up (gnus-summary-go-up-thread) ! (gnus-summary-go-down-thread))) ! (setq n (1- n))) ! (gnus-summary-position-cursor) ! (if (/= 0 n) (gnus-message 7 "Can't go further")) ! n)) (defun gnus-summary-up-thread (n) "Go up thread N steps. *************** *** 10122,10128 **** (while killing ;; Mark the article... (cond ((null unmark) (gnus-summary-mark-article-as-read ! gnus-killed-mark)) ((> unmark 0) (gnus-summary-mark-article-as-unread gnus-unread-mark)) (t (gnus-summary-mark-article-as-unread gnus-ticked-mark))) --- 10121,10127 ---- (while killing ;; Mark the article... (cond ((null unmark) (gnus-summary-mark-article-as-read ! gnus-killed-mark)) ((> unmark 0) (gnus-summary-mark-article-as-unread gnus-unread-mark)) (t (gnus-summary-mark-article-as-unread gnus-ticked-mark))) *************** *** 10166,10174 **** (let* ((header (gnus-get-header-by-num (gnus-summary-article-number))) (extract (funcall gnus-extract-address-components ! (header-from header)))) (concat (or (car extract) (cdr extract)) ! "\r" (header-subject header)))) 'gnus-thread-sort-by-author) reverse)) --- 10165,10173 ---- (let* ((header (gnus-get-header-by-num (gnus-summary-article-number))) (extract (funcall gnus-extract-address-components ! (mail-header-from header)))) (concat (or (car extract) (cdr extract)) ! "\r" (mail-header-subject header)))) 'gnus-thread-sort-by-author) reverse)) *************** *** 10184,10190 **** (let* ((header (gnus-get-header-by-num (gnus-summary-article-number))) (extract (funcall gnus-extract-address-components ! (header-from header)))) (concat (downcase (gnus-simplify-subject (gnus-summary-subject-string))) "\r" (or (car extract) (cdr extract))))) --- 10183,10189 ---- (let* ((header (gnus-get-header-by-num (gnus-summary-article-number))) (extract (funcall gnus-extract-address-components ! (mail-header-from header)))) (concat (downcase (gnus-simplify-subject (gnus-summary-subject-string))) "\r" (or (car extract) (cdr extract))))) *************** *** 10200,10206 **** (cons (lambda () (gnus-sortable-date ! (header-date (gnus-get-header-by-num (gnus-summary-article-number))))) 'gnus-thread-sort-by-date) reverse)) --- 10199,10205 ---- (cons (lambda () (gnus-sortable-date ! (mail-header-date (gnus-get-header-by-num (gnus-summary-article-number))))) 'gnus-thread-sort-by-date) reverse)) *************** *** 10759,10765 **** (if (< article 0) (if (vectorp header) ;; It's a real article. ! (setq article (header-id header)) ;; It is an extracted pseudo-article. (setq article 'pseudo) (gnus-request-pseudo-article header))) --- 10758,10764 ---- (if (< article 0) (if (vectorp header) ;; It's a real article. ! (setq article (mail-header-id header)) ;; It is an extracted pseudo-article. (setq article 'pseudo) (gnus-request-pseudo-article header))) *************** *** 10768,10774 **** (if (not (eq (car method) 'nneething)) () (let ((dir (concat (file-name-as-directory (nth 1 method)) ! (header-subject header)))) (if (file-directory-p dir) (progn (setq article 'nneething) --- 10767,10773 ---- (if (not (eq (car method) 'nneething)) () (let ((dir (concat (file-name-as-directory (nth 1 method)) ! (mail-header-subject header)))) (if (file-directory-p dir) (progn (setq article 'nneething) *************** *** 10799,10807 **** (gnus-get-newsgroup-headers))))) nil (if (stringp id) ! (header-set-number header gnus-reffed-article-number)) (setq gnus-newsgroup-headers (cons header gnus-newsgroup-headers)) ! (gnus-sethash (int-to-string (header-number header)) header gnus-newsgroup-headers-hashtb-by-number) (if (stringp id) (setq gnus-reffed-article-number (1- gnus-reffed-article-number))) --- 10798,10806 ---- (gnus-get-newsgroup-headers))))) nil (if (stringp id) ! (mail-header-set-number header gnus-reffed-article-number)) (setq gnus-newsgroup-headers (cons header gnus-newsgroup-headers)) ! (gnus-sethash (int-to-string (mail-header-number header)) header gnus-newsgroup-headers-hashtb-by-number) (if (stringp id) (setq gnus-reffed-article-number (1- gnus-reffed-article-number))) *************** *** 10824,10830 **** (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name)) (gnus-request-group gnus-newsgroup-name t))) ! (let* ((article (if header (header-number header) article)) (summary-buffer (current-buffer)) (internal-hook gnus-article-internal-prepare-hook) (group gnus-newsgroup-name) --- 10823,10829 ---- (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name)) (gnus-request-group gnus-newsgroup-name t))) ! (let* ((article (if header (mail-header-number header) article)) (summary-buffer (current-buffer)) (internal-hook gnus-article-internal-prepare-hook) (group gnus-newsgroup-name) *************** *** 11138,11146 **** If TYPE is `local', convert to local time; if it is `lapsed', output how much time has lapsed since DATE." (interactive (list 'ut)) ! (let ((date (header-date (or gnus-current-headers ! (gnus-get-header-by-number ! (gnus-summary-article-number))""))) (date-regexp "^Date: \\|^X-Sent: ")) (if (or (not date) (string= date "")) --- 11137,11145 ---- If TYPE is `local', convert to local time; if it is `lapsed', output how much time has lapsed since DATE." (interactive (list 'ut)) ! (let ((date (mail-header-date (or gnus-current-headers ! (gnus-get-header-by-number ! (gnus-summary-article-number))""))) (date-regexp "^Date: \\|^X-Sent: ")) (if (or (not date) (string= date "")) *************** *** 11299,11305 **** (goto-char (point-min)) (insert "\^L\n0, unseen,,\n*** EOOH ***\n") (while (search-forward "\n\^_" nil t) ;single char ! (replace-match "\n^_" t t)) ;2 chars: "^" and "_" (goto-char (point-max)) (insert "\^_"))) --- 11298,11304 ---- (goto-char (point-min)) (insert "\^L\n0, unseen,,\n*** EOOH ***\n") (while (search-forward "\n\^_" nil t) ;single char ! (replace-match "\n^_" t t)) ;2 chars: "^" and "_" (goto-char (point-max)) (insert "\^_"))) *************** *** 11395,11401 **** (bobp) (not (save-restriction (widen) (bobp)))) ;Real beginning-of-buffer? (progn ! (gnus-narrow-to-page -1) ;Go to previous page. (goto-char (point-max)) (recenter -1)) (scroll-down lines))) --- 11394,11400 ---- (bobp) (not (save-restriction (widen) (bobp)))) ;Real beginning-of-buffer? (progn ! (gnus-narrow-to-page -1) ;Go to previous page. (goto-char (point-max)) (recenter -1)) (scroll-down lines))) *************** *** 11403,11409 **** (defun gnus-article-refer-article () "Read article specified by message-id around point." (interactive) ! (search-forward ">" nil t) ;Move point to end of "<....>". (if (re-search-backward "\\(<[^<> \t\n]+>\\)" nil t) (let ((message-id (buffer-substring (match-beginning 1) (match-end 1)))) --- 11402,11408 ---- (defun gnus-article-refer-article () "Read article specified by message-id around point." (interactive) ! (search-forward ">" nil t) ;Move point to end of "<....>". (if (re-search-backward "\\(<[^<> \t\n]+>\\)" nil t) (let ((message-id (buffer-substring (match-beginning 1) (match-end 1)))) *************** *** 11421,11427 **** "Describe article mode commands briefly." (interactive) (gnus-message 6 ! (substitute-command-keys "\\\\[gnus-article-next-page]:Next page \\[gnus-article-prev-page]:Prev page \\[gnus-article-show-summary]:Show summary \\[gnus-info-find-node]:Run Info \\[gnus-article-describe-briefly]:This help"))) (defun gnus-article-summary-command () "Execute the last keystroke in the summary buffer." --- 11420,11426 ---- "Describe article mode commands briefly." (interactive) (gnus-message 6 ! (substitute-command-keys "\\\\[gnus-article-next-page]:Next page \\[gnus-article-prev-page]:Prev page \\[gnus-article-show-summary]:Show summary \\[gnus-info-find-node]:Run Info \\[gnus-article-describe-briefly]:This help"))) (defun gnus-article-summary-command () "Execute the last keystroke in the summary buffer." *************** *** 11873,11879 **** (defun gnus-request-group (group &optional dont-check) (let ((method (gnus-find-method-for-group group))) ! ; (and t (message "%s GROUP %s" (car method) group)) (funcall (gnus-get-function method 'request-group) (gnus-group-real-name group) (nth 1 method) dont-check))) --- 11872,11878 ---- (defun gnus-request-group (group &optional dont-check) (let ((method (gnus-find-method-for-group group))) ! ; (and t (message "%s GROUP %s" (car method) group)) (funcall (gnus-get-function method 'request-group) (gnus-group-real-name group) (nth 1 method) dont-check))) *************** *** 11924,11947 **** ;; Fix by Sudish Joseph . (defun gnus-request-post-buffer (post group subject header artbuf info follow-to respect-poster) ! (let* ((info (or info (and group (nth 2 (gnus-gethash ! group gnus-newsrc-hashtb))))) ! (method ! (if (and gnus-post-method ! ;; Fix by Sudish Joseph . ! (memq 'post (assoc ! (format "%s" (car (gnus-find-method-for-group ! gnus-newsgroup-name))) ! gnus-valid-select-methods))) ! gnus-post-method ! (gnus-find-method-for-group gnus-newsgroup-name)))) ! (or (gnus-check-server method) ! (error "Can't open server %s:%s" (car method) (nth 1 method))) ! (let ((mail-self-blind nil) ! (mail-archive-file-name nil)) ! (funcall (gnus-get-function method 'request-post-buffer) ! post group subject header artbuf info follow-to ! respect-poster)))) (defun gnus-request-post (method &optional force) (and (stringp method) --- 11923,11946 ---- ;; Fix by Sudish Joseph . (defun gnus-request-post-buffer (post group subject header artbuf info follow-to respect-poster) ! (let* ((info (or info (and group (nth 2 (gnus-gethash ! group gnus-newsrc-hashtb))))) ! (method ! (if (and gnus-post-method ! ;; Fix by Sudish Joseph . ! (memq 'post (assoc ! (format "%s" (car (gnus-find-method-for-group ! gnus-newsgroup-name))) ! gnus-valid-select-methods))) ! gnus-post-method ! (gnus-find-method-for-group gnus-newsgroup-name)))) ! (or (gnus-check-server method) ! (error "Can't open server %s:%s" (car method) (nth 1 method))) ! (let ((mail-self-blind nil) ! (mail-archive-file-name nil)) ! (funcall (gnus-get-function method 'request-post-buffer) ! post group subject header artbuf info follow-to ! respect-poster)))) (defun gnus-request-post (method &optional force) (and (stringp method) *************** *** 12017,12023 **** (defun gnus-check-backend-function (func group) (let ((method (if (stringp group) (car (gnus-find-method-for-group group)) ! group))) (fboundp (intern (format "%s-%s" method func))))) (defun gnus-methods-using (method) --- 12016,12022 ---- (defun gnus-check-backend-function (func group) (let ((method (if (stringp group) (car (gnus-find-method-for-group group)) ! group))) (fboundp (intern (format "%s-%s" method func))))) (defun gnus-methods-using (method) *************** *** 12323,12329 **** (gnus-gethash group gnus-newsrc-hashtb)) ;; We are trying to subscribe a group that is already ;; subscribed. ! () ; Do nothing. (gnus-dribble-enter (format "(gnus-group-change-level %S %S %S %S %S)" --- 12322,12328 ---- (gnus-gethash group gnus-newsrc-hashtb)) ;; We are trying to subscribe a group that is already ;; subscribed. ! () ; Do nothing. (gnus-dribble-enter (format "(gnus-group-change-level %S %S %S %S %S)" *************** *** 13081,13087 **** (cdr (cdr group)))) gnus-newsrc-alist))) (if (setq m (assoc (car group) marked)) ! (setcdr (cdr (cdr info)) (cons (list (cons 'tick (cdr m))) nil)))) (setq newsrc (cdr newsrc))) (setq newsrc killed) (while newsrc --- 13080,13086 ---- (cdr (cdr group)))) gnus-newsrc-alist))) (if (setq m (assoc (car group) marked)) ! (setcdr (cdr (cdr info)) (cons (list (cons 'tick (cdr m))) nil)))) (setq newsrc (cdr newsrc))) (setq newsrc killed) (while newsrc *************** *** 13246,13252 **** (t ;; Not numbers and not eol, so this might be a buggy ;; line... ! (or (eobp) ; If it was eob instead of ?\n, we allow it. (progn ;; The line was buggy. (setq group nil) --- 13245,13251 ---- (t ;; Not numbers and not eol, so this might be a buggy ;; line... ! (or (eobp) ; If it was eob instead of ?\n, we allow it. (progn ;; The line was buggy. (setq group nil) *************** *** 13308,13314 **** (prev gnus-newsrc-alist) entry mentry) (while rc ! (or (null (nth 4 (car rc))) ; It's a native group. (assoc (car (car rc)) newsrc) ; It's already in the alist. (if (setq entry (assoc (car (car prev)) newsrc)) (setcdr (setq mentry (memq entry newsrc)) --- 13307,13313 ---- (prev gnus-newsrc-alist) entry mentry) (while rc ! (or (null (nth 4 (car rc))) ; It's a native group. (assoc (car (car rc)) newsrc) ; It's already in the alist. (if (setq entry (assoc (car (car prev)) newsrc)) (setcdr (setq mentry (memq entry newsrc)) *************** *** 13634,13640 **** (setcar (nthcdr 3 mode-line-format) "")) (setq major-mode 'gnus-server-mode) (setq mode-name "Server") ! ; (gnus-group-set-mode-line) (setq mode-line-process nil) (use-local-map gnus-server-mode-map) (buffer-disable-undo (current-buffer)) --- 13633,13639 ---- (setcar (nthcdr 3 mode-line-format) "")) (setq major-mode 'gnus-server-mode) (setq mode-name "Server") ! ; (gnus-group-set-mode-line) (setq mode-line-process nil) (use-local-map gnus-server-mode-map) (buffer-disable-undo (current-buffer)) *************** *** 13727,13733 **** (let ((entry (gnus-copy-sequence (if (equal (car method) "native") gnus-select-method ! (cdr (assoc (car method) gnus-server-alist)))))) (setcar (cdr entry) (concat (nth 1 entry) "+" group)) (nconc entry (cdr method)))) --- 13726,13732 ---- (let ((entry (gnus-copy-sequence (if (equal (car method) "native") gnus-select-method ! (cdr (assoc (car method) gnus-server-alist)))))) (setcar (cdr entry) (concat (nth 1 entry) "+" group)) (nconc entry (cdr method)))) *************** *** 13935,13946 **** (not (car gnus-score-file-list)) (gnus-file-newer-than gnus-kill-files-directory (car gnus-score-file-list))) ! (setq gnus-score-file-list ! (cons (nth 5 (file-attributes gnus-kill-files-directory)) ! (nreverse ! (directory-files ! gnus-kill-files-directory t ! (gnus-score-file-regexp)))))) ;; We do not use long file names, so we have to do some ;; directory traversing. (let ((mdir (length (expand-file-name gnus-kill-files-directory))) --- 13934,13945 ---- (not (car gnus-score-file-list)) (gnus-file-newer-than gnus-kill-files-directory (car gnus-score-file-list))) ! (setq gnus-score-file-list ! (cons (nth 5 (file-attributes gnus-kill-files-directory)) ! (nreverse ! (directory-files ! gnus-kill-files-directory t ! (gnus-score-file-regexp)))))) ;; We do not use long file names, so we have to do some ;; directory traversing. (let ((mdir (length (expand-file-name gnus-kill-files-directory))) *************** *** 14069,14075 **** score-files) ;; if this group has been seen before, return the cached entry (if (setq score-files (assoc group gnus-score-file-alist-cache)) ! (cdr score-files) ; ensures caching of groups with no matches ;; handle the multiple match alist (while alist (and (string-match (car (car alist)) group) --- 14068,14074 ---- score-files) ;; if this group has been seen before, return the cached entry (if (setq score-files (assoc group gnus-score-file-alist-cache)) ! (cdr score-files) ; ensures caching of groups with no matches ;; handle the multiple match alist (while alist (and (string-match (car (car alist)) group) *** pub/dgnus/lisp/nnbabyl.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnbabyl.el Wed Aug 30 13:49:00 1995 *************** *** 475,490 **** () (save-excursion (let ((delim (concat "^" nnbabyl-mail-delimiter)) - (buf (or (get-buffer (file-name-nondirectory nnbabyl-mbox-file)) - (create-file-buffer nnbabyl-mbox-file))) start end) ! (set-buffer (setq nnbabyl-mbox-buffer buf)) (buffer-disable-undo (current-buffer)) ! ! (insert-file-contents nnbabyl-mbox-file) ! (setq buffer-file-name nnbabyl-mbox-file) ! (set-buffer-modified-p nil) ! (goto-char (point-min)) (re-search-forward delim nil t) (setq start (match-end 0)) --- 475,486 ---- () (save-excursion (let ((delim (concat "^" nnbabyl-mail-delimiter)) start end) ! (set-buffer (setq nnbabyl-mbox-buffer ! (nnheader-find-file-noselect ! nnbabyl-mbox-file nil 'raw))) (buffer-disable-undo (current-buffer)) ! (goto-char (point-min)) (re-search-forward delim nil t) (setq start (match-end 0)) *** pub/dgnus/lisp/nndoc.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nndoc.el Wed Aug 30 14:42:34 1995 *************** *** 206,214 **** ;; headers. Aargh! (goto-char (point-min)) (if (search-forward "\n\n" nil t) ! () ; We let this one pass. (if (re-search-forward "^[ \t]+$" nil t) ! (replace-match "" t t) ; We nix out a line of blanks. (while (and (looking-at "[^ ]+:") (zerop (forward-line 1)))) ;; We just insert a couple of lines. If you read digests --- 206,214 ---- ;; headers. Aargh! (goto-char (point-min)) (if (search-forward "\n\n" nil t) ! () ; We let this one pass. (if (re-search-forward "^[ \t]+$" nil t) ! (replace-match "" t t) ; We nix out a line of blanks. (while (and (looking-at "[^ ]+:") (zerop (forward-line 1)))) ;; We just insert a couple of lines. If you read digests *************** *** 300,306 **** (defun nndoc-set-header-dependent-regexps () (if (not (eq nndoc-article-type 'digest)) () ! (let ((case-fold-search t) ; We match a bit too much, keep it simple. (boundary-id) (b-delimiter)) (save-excursion (set-buffer nndoc-current-buffer) --- 300,306 ---- (defun nndoc-set-header-dependent-regexps () (if (not (eq nndoc-article-type 'digest)) () ! (let ((case-fold-search t) ; We match a bit too much, keep it simple. (boundary-id) (b-delimiter)) (save-excursion (set-buffer nndoc-current-buffer) *************** *** 340,354 **** (let ((num 0)) (if (re-search-forward (or nndoc-first-article nndoc-article-begin) nil t) ! (progn ! (setq num 1) ! (while (and (re-search-forward nndoc-article-begin nil t) ! (or (not nndoc-end-of-file) ! (not (looking-at nndoc-end-of-file))) ! (or (not nndoc-head-begin) ! (re-search-forward nndoc-head-begin nil t)) ! (re-search-forward nndoc-head-end nil t)) ! (setq num (1+ num))))) num))) (defun nndoc-narrow-to-article (article) --- 340,354 ---- (let ((num 0)) (if (re-search-forward (or nndoc-first-article nndoc-article-begin) nil t) ! (progn ! (setq num 1) ! (while (and (re-search-forward nndoc-article-begin nil t) ! (or (not nndoc-end-of-file) ! (not (looking-at nndoc-end-of-file))) ! (or (not nndoc-head-begin) ! (re-search-forward nndoc-head-begin nil t)) ! (re-search-forward nndoc-head-end nil t)) ! (setq num (1+ num))))) num))) (defun nndoc-narrow-to-article (article) *** pub/dgnus/lisp/nnfolder.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnfolder.el Wed Aug 30 14:42:31 1995 *************** *** 607,614 **** (while (and (search-forward marker nil t) (re-search-forward number nil t)) (let ((newnum (string-to-number (buffer-substring ! (match-beginning 0) ! (match-end 0))))) (setq activenumber (max activenumber newnum)) (setq activemin (min activemin newnum)))) (setcar active (min activemin activenumber)) --- 607,614 ---- (while (and (search-forward marker nil t) (re-search-forward number nil t)) (let ((newnum (string-to-number (buffer-substring ! (match-beginning 0) ! (match-end 0))))) (setq activenumber (max activenumber newnum)) (setq activemin (min activemin newnum)))) (setcar active (min activemin activenumber)) *** pub/dgnus/lisp/nnheader.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnheader.el Wed Aug 30 14:42:13 1995 *************** *** 36,128 **** ;;; Code: ! (defalias 'nntp-header-number 'header-number) ! (defmacro header-number (header) "Return article number in HEADER." (` (aref (, header) 0))) ! (defalias 'nntp-set-header-number 'header-set-number) ! (defmacro header-set-number (header number) "Set article number of HEADER to NUMBER." (` (aset (, header) 0 (, number)))) ! (defalias 'nntp-header-subject 'header-subject) ! (defmacro header-subject (header) "Return subject string in HEADER." (` (aref (, header) 1))) ! (defalias 'nntp-set-header-subject 'header-set-subject) ! (defmacro header-set-subject (header subject) "Set article subject of HEADER to SUBJECT." (` (aset (, header) 1 (, subject)))) ! (defalias 'nntp-header-from 'header-from) ! (defmacro header-from (header) "Return author string in HEADER." (` (aref (, header) 2))) ! (defalias 'nntp-set-header-from 'header-set-from) ! (defmacro header-set-from (header from) "Set article author of HEADER to FROM." (` (aset (, header) 2 (, from)))) ! (defalias 'nntp-header-xref 'header-xref) ! (defmacro header-xref (header) "Return xref string in HEADER." (` (aref (, header) 8))) ! (defalias 'nntp-set-header-xref 'header-set-xref) ! (defmacro header-set-xref (header xref) "Set article xref of HEADER to xref." (` (aset (, header) 8 (, xref)))) ! (defalias 'nntp-header-lines 'header-lines) ! (defmacro header-lines (header) "Return lines in HEADER." (` (aref (, header) 7))) ! (defalias 'nntp-set-header-lines 'header-set-lines) ! (defmacro header-set-lines (header lines) "Set article lines of HEADER to LINES." (` (aset (, header) 7 (, lines)))) ! (defalias 'nntp-header-date 'header-date) ! (defmacro header-date (header) "Return date in HEADER." (` (aref (, header) 3))) ! (defalias 'nntp-set-header-date 'header-set-date) ! (defmacro header-set-date (header date) "Set article date of HEADER to DATE." (` (aset (, header) 3 (, date)))) ! (defalias 'nntp-header-id 'header-id) ! (defmacro header-id (header) "Return Id in HEADER." (` (aref (, header) 4))) ! (defalias 'nntp-set-header-id 'header-set-id) ! (defmacro header-set-id (header id) "Set article Id of HEADER to ID." (` (aset (, header) 4 (, id)))) ! (defalias 'nntp-header-references 'header-references) ! (defmacro header-references (header) "Return references in HEADER." (` (aref (, header) 5))) ! (defalias 'nntp-set-header-references 'header-set-references) ! (defmacro header-set-references (header ref) "Set article references of HEADER to REF." (` (aset (, header) 5 (, ref)))) ! (defalias 'nntp-header-chars 'header-chars) ! (defmacro header-chars (header) "Return number of chars of article in HEADER." (` (aref (, header) 6))) ! (defalias 'nntp-set-header-chars 'header-set-chars) ! (defmacro header-set-chars (header chars) "Set number of chars in article of HEADER to CHARS." (` (aset (, header) 6 (, chars)))) --- 36,128 ---- ;;; Code: ! (defalias 'nntp-header-number 'mail-header-number) ! (defmacro mail-header-number (header) "Return article number in HEADER." (` (aref (, header) 0))) ! (defalias 'nntp-set-header-number 'mail-header-set-number) ! (defmacro mail-header-set-number (header number) "Set article number of HEADER to NUMBER." (` (aset (, header) 0 (, number)))) ! (defalias 'nntp-header-subject 'mail-header-subject) ! (defmacro mail-header-subject (header) "Return subject string in HEADER." (` (aref (, header) 1))) ! (defalias 'nntp-set-header-subject 'mail-header-set-subject) ! (defmacro mail-header-set-subject (header subject) "Set article subject of HEADER to SUBJECT." (` (aset (, header) 1 (, subject)))) ! (defalias 'nntp-header-from 'mail-header-from) ! (defmacro mail-header-from (header) "Return author string in HEADER." (` (aref (, header) 2))) ! (defalias 'nntp-set-header-from 'mail-header-set-from) ! (defmacro mail-header-set-from (header from) "Set article author of HEADER to FROM." (` (aset (, header) 2 (, from)))) ! (defalias 'nntp-header-xref 'mail-header-xref) ! (defmacro mail-header-xref (header) "Return xref string in HEADER." (` (aref (, header) 8))) ! (defalias 'nntp-set-header-xref 'mail-header-set-xref) ! (defmacro mail-header-set-xref (header xref) "Set article xref of HEADER to xref." (` (aset (, header) 8 (, xref)))) ! (defalias 'nntp-header-lines 'mail-header-lines) ! (defmacro mail-header-lines (header) "Return lines in HEADER." (` (aref (, header) 7))) ! (defalias 'nntp-set-header-lines 'mail-header-set-lines) ! (defmacro mail-header-set-lines (header lines) "Set article lines of HEADER to LINES." (` (aset (, header) 7 (, lines)))) ! (defalias 'nntp-header-date 'mail-header-date) ! (defmacro mail-header-date (header) "Return date in HEADER." (` (aref (, header) 3))) ! (defalias 'nntp-set-header-date 'mail-header-set-date) ! (defmacro mail-header-set-date (header date) "Set article date of HEADER to DATE." (` (aset (, header) 3 (, date)))) ! (defalias 'nntp-header-id 'mail-header-id) ! (defmacro mail-header-id (header) "Return Id in HEADER." (` (aref (, header) 4))) ! (defalias 'nntp-set-header-id 'mail-header-set-id) ! (defmacro mail-header-set-id (header id) "Set article Id of HEADER to ID." (` (aset (, header) 4 (, id)))) ! (defalias 'nntp-header-references 'mail-header-references) ! (defmacro mail-header-references (header) "Return references in HEADER." (` (aref (, header) 5))) ! (defalias 'nntp-set-header-references 'mail-header-set-references) ! (defmacro mail-header-set-references (header ref) "Set article references of HEADER to REF." (` (aset (, header) 5 (, ref)))) ! (defalias 'nntp-header-chars 'mail-header-chars) ! (defmacro mail-header-chars (header) "Return number of chars of article in HEADER." (` (aref (, header) 6))) ! (defalias 'nntp-set-header-chars 'mail-header-set-chars) ! (defmacro mail-header-set-chars (header chars) "Set number of chars in article of HEADER to CHARS." (` (aset (, header) 6 (, chars)))) *************** *** 213,219 **** to advanced Emacs features, such as file-name-handlers, format decoding, find-file-hooks, etc. This function ensures that none of these modifications will take place." ! (let (; (file-name-handler-alist nil) (format-alist nil) (after-insert-file-functions nil) (find-buffer-file-type-function --- 213,219 ---- to advanced Emacs features, such as file-name-handlers, format decoding, find-file-hooks, etc. This function ensures that none of these modifications will take place." ! (let ( ; (file-name-handler-alist nil) (format-alist nil) (after-insert-file-functions nil) (find-buffer-file-type-function *************** *** 271,283 **** (buffer-name buf)) (format (if (buffer-modified-p buf) ! "File %s changed on disk. Discard your edits? " ! "File %s changed on disk. Reread from disk? ") (file-name-nondirectory filename)) (format (if (buffer-modified-p buf) ! "File %s changed on disk. Discard your edits in %s? " ! "File %s changed on disk. Reread from disk into %s? ") (file-name-nondirectory filename) (buffer-name buf)))) (save-excursion --- 271,283 ---- (buffer-name buf)) (format (if (buffer-modified-p buf) ! "File %s changed on disk. Discard your edits? " ! "File %s changed on disk. Reread from disk? ") (file-name-nondirectory filename)) (format (if (buffer-modified-p buf) ! "File %s changed on disk. Discard your edits in %s? " ! "File %s changed on disk. Reread from disk into %s? ") (file-name-nondirectory filename) (buffer-name buf)))) (save-excursion *************** *** 292,298 **** ;;; (message "Symbolic link to file in buffer %s" ;;; (buffer-name linked-buf)))) (setq buf (create-file-buffer filename)) ! ;; (set-buffer-major-mode buf) (set-buffer buf) (erase-buffer) (if rawfile --- 292,298 ---- ;;; (message "Symbolic link to file in buffer %s" ;;; (buffer-name linked-buf)))) (setq buf (create-file-buffer filename)) ! ;; (set-buffer-major-mode buf) (set-buffer buf) (erase-buffer) (if rawfile *************** *** 305,311 **** (insert-file-contents filename t) (file-error ;; Run find-file-not-found-hooks until one returns non-nil. ! (or t; (run-hook-with-args-until-success 'find-file-not-found-hooks) ;; If they fail too, set error. (setq error t))))) ;; Find the file's truename, and maybe use that as visited name. --- 305,311 ---- (insert-file-contents filename t) (file-error ;; Run find-file-not-found-hooks until one returns non-nil. ! (or t ; (run-hook-with-args-until-success 'find-file-not-found-hooks) ;; If they fail too, set error. (setq error t))))) ;; Find the file's truename, and maybe use that as visited name. *** pub/dgnus/lisp/nnkiboze.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnkiboze.el Wed Aug 30 14:42:29 1995 *************** *** 106,112 **** ;; article fetching by message-id at all. (nntp-request-article article newsgroup gnus-nntp-server buffer) (let* ((header (gnus-get-header-by-number article)) ! (xref (header-xref header)) igroup iarticle) (or xref (error "nnkiboze: No xref")) (or (string-match " \\([^ ]+\\):\\([0-9]+\\)" xref) --- 106,112 ---- ;; article fetching by message-id at all. (nntp-request-article article newsgroup gnus-nntp-server buffer) (let* ((header (gnus-get-header-by-number article)) ! (xref (mail-header-xref header)) igroup iarticle) (or xref (error "nnkiboze: No xref")) (or (string-match " \\([^ ]+\\):\\([0-9]+\\)" xref) *************** *** 296,302 **** (save-excursion (set-buffer buffer) (goto-char (point-max)) ! (let ((xref (header-xref header)) (prefix (gnus-group-real-prefix group)) (first t) article) --- 296,302 ---- (save-excursion (set-buffer buffer) (goto-char (point-max)) ! (let ((xref (mail-header-xref header)) (prefix (gnus-group-real-prefix group)) (first t) article) *************** *** 306,323 **** (forward-line 1)) (setq article 1)) (insert (int-to-string article) "\t" ! (or (header-subject header) "") "\t" ! (or (header-from header) "") "\t" ! (or (header-date header) "") "\t" ! (or (header-id header) "") "\t" ! (or (header-references header) "") "\t" ! (int-to-string (or (header-chars header) 0)) "\t" ! (int-to-string (or (header-lines header) 0)) "\t") (if (or (not xref) (equal "" xref)) (insert "Xref: " (system-name) " " group ":" ! (int-to-string (header-number header)) "\t\n") ! (insert (header-xref header) "\t\n") (search-backward "\t" nil t) (search-backward "\t" nil t) (while (re-search-forward --- 306,323 ---- (forward-line 1)) (setq article 1)) (insert (int-to-string article) "\t" ! (or (mail-header-subject header) "") "\t" ! (or (mail-header-from header) "") "\t" ! (or (mail-header-date header) "") "\t" ! (or (mail-header-id header) "") "\t" ! (or (mail-header-references header) "") "\t" ! (int-to-string (or (mail-header-chars header) 0)) "\t" ! (int-to-string (or (mail-header-lines header) 0)) "\t") (if (or (not xref) (equal "" xref)) (insert "Xref: " (system-name) " " group ":" ! (int-to-string (mail-header-number header)) "\t\n") ! (insert (mail-header-xref header) "\t\n") (search-backward "\t" nil t) (search-backward "\t" nil t) (while (re-search-forward *************** *** 330,336 **** (save-excursion (goto-char (match-beginning 0)) (insert prefix group ":" ! (int-to-string (header-number header)) " ") (setq first nil))) (save-excursion (goto-char (match-beginning 0)) --- 330,336 ---- (save-excursion (goto-char (match-beginning 0)) (insert prefix group ":" ! (int-to-string (mail-header-number header)) " ") (setq first nil))) (save-excursion (goto-char (match-beginning 0)) *** pub/dgnus/lisp/nnmail.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnmail.el Wed Aug 30 14:42:27 1995 *************** *** 237,243 **** () (erase-buffer) (if post ! (mail-setup method-address subject nil nil nil nil) (save-excursion (set-buffer article-buffer) (goto-char (point-min)) --- 237,245 ---- () (erase-buffer) (if post ! (progn ! (mail-setup method-address subject nil nil nil nil) ! (auto-save-mode auto-save-default)) (save-excursion (set-buffer article-buffer) (goto-char (point-min)) *************** *** 245,252 **** (progn (search-forward "\n\n") (point))) (let ((buffer-read-only nil)) (set-text-properties (point-min) (point-max) nil)) ! (setq from (header-from header)) ! (setq date (header-date header)) (and from (let ((stop-pos (string-match " *at \\| *@ \\| *(\\| *<" from))) --- 247,254 ---- (progn (search-forward "\n\n") (point))) (let ((buffer-read-only nil)) (set-text-properties (point-min) (point-max) nil)) ! (setq from (mail-header-from header)) ! (setq date (mail-header-date header)) (and from (let ((stop-pos (string-match " *at \\| *@ \\| *(\\| *<" from))) *************** *** 256,267 **** (setq sender (mail-fetch-field "sender")) (setq cc (mail-fetch-field "cc")) (setq to (mail-fetch-field "to")) ! (setq subject (header-subject header)) (or (string-match "^[Rr][Ee]:" subject) (setq subject (concat "Re: " subject))) (setq reply-to (mail-fetch-field "reply-to")) ! (setq references (header-references header)) ! (setq message-id (header-id header)) (widen)) (setq news-reply-yank-from from) (setq news-reply-yank-message-id message-id) --- 258,269 ---- (setq sender (mail-fetch-field "sender")) (setq cc (mail-fetch-field "cc")) (setq to (mail-fetch-field "to")) ! (setq subject (mail-header-subject header)) (or (string-match "^[Rr][Ee]:" subject) (setq subject (concat "Re: " subject))) (setq reply-to (mail-fetch-field "reply-to")) ! (setq references (mail-header-references header)) ! (setq message-id (mail-header-id header)) (widen)) (setq news-reply-yank-from from) (setq news-reply-yank-message-id message-id) *************** *** 278,283 **** --- 280,286 ---- (if to (concat ", " to) "") (if cc (concat ", " cc) "")))) subject message-of nil article-buffer nil) + (auto-save-mode auto-save-default) ;; Note that "To" elements should already be in the message. (if (and follow-to (listp follow-to)) (progn *************** *** 442,456 **** (match-end 2))))) group-assoc)))) ! ;; ;; In addition, add all groups mentioned in `nnmail-split-methods'. ! ;; (let ((methods (and (not (symbolp nnmail-split-methods)) ! ;; nnmail-split-methods))) ! ;; (while methods ! ;; (if (not (assoc (car (car methods)) group-assoc)) ! ;; (setq group-assoc ! ;; (cons (list (car (car methods)) (cons 1 0)) ! ;; group-assoc))) ! ;; (setq methods (cdr methods))) group-assoc)) --- 445,459 ---- (match-end 2))))) group-assoc)))) ! ;; ;; In addition, add all groups mentioned in `nnmail-split-methods'. ! ;; (let ((methods (and (not (symbolp nnmail-split-methods)) ! ;; nnmail-split-methods))) ! ;; (while methods ! ;; (if (not (assoc (car (car methods)) group-assoc)) ! ;; (setq group-assoc ! ;; (cons (list (car (car methods)) (cons 1 0)) ! ;; group-assoc))) ! ;; (setq methods (cdr methods))) group-assoc)) *************** *** 702,708 **** (setq split (cdr split) done (nnmail-split-it (car split)))) done)) ((assq split nnmail-split-cache) ! ;; A compiled match expression. (goto-char (point-max)) (if (re-search-backward (cdr (assq split nnmail-split-cache)) nil t) (nnmail-split-it (nth 2 split)))) --- 705,711 ---- (setq split (cdr split) done (nnmail-split-it (car split)))) done)) ((assq split nnmail-split-cache) ! ;; A compiled match expression. (goto-char (point-max)) (if (re-search-backward (cdr (assq split nnmail-split-cache)) nil t) (nnmail-split-it (nth 2 split)))) *************** *** 711,726 **** (let* ((field (nth 0 split)) (value (nth 1 split)) (regexp (concat "^\\(" ! (if (symbolp field) ! (cdr (assq field ! nnmail-split-abbrev-alist)) ! field) ! "\\):.*\\<\\(" ! (if (symbolp value) ! (cdr (assq value ! nnmail-split-abbrev-alist)) ! value) ! "\\>\\)"))) (setq nnmail-split-cache (cons (cons split regexp) nnmail-split-cache)) (goto-char (point-max)) --- 714,729 ---- (let* ((field (nth 0 split)) (value (nth 1 split)) (regexp (concat "^\\(" ! (if (symbolp field) ! (cdr (assq field ! nnmail-split-abbrev-alist)) ! field) ! "\\):.*\\<\\(" ! (if (symbolp value) ! (cdr (assq value ! nnmail-split-abbrev-alist)) ! value) ! "\\>\\)"))) (setq nnmail-split-cache (cons (cons split regexp) nnmail-split-cache)) (goto-char (point-max)) *************** *** 824,830 **** (if (or (not nnmail-delete-duplicates) (and nnmail-cache-buffer (buffer-name nnmail-cache-buffer))) ! () ; The buffer is open. (save-excursion (set-buffer (setq nnmail-cache-buffer --- 827,833 ---- (if (or (not nnmail-delete-duplicates) (and nnmail-cache-buffer (buffer-name nnmail-cache-buffer))) ! () ; The buffer is open. (save-excursion (set-buffer (setq nnmail-cache-buffer *************** *** 839,845 **** (not nnmail-delete-duplicates) (not (buffer-name nnmail-cache-buffer)) (not (buffer-modified-p nnmail-cache-buffer))) ! () ; The buffer is closed. (save-excursion (set-buffer nnmail-cache-buffer) ;; Weed out the excess number of Message-IDs. --- 842,848 ---- (not nnmail-delete-duplicates) (not (buffer-name nnmail-cache-buffer)) (not (buffer-modified-p nnmail-cache-buffer))) ! () ; The buffer is closed. (save-excursion (set-buffer nnmail-cache-buffer) ;; Weed out the excess number of Message-IDs. *** pub/dgnus/lisp/nnmbox.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnmbox.el Wed Aug 30 14:42:25 1995 *************** *** 417,423 **** ;; This might be a bit naughty... creating groups on the drop of ;; a hat, but I don't know... (setq nnmbox-group-alist (cons (list group (setq active (cons 1 1))) ! nnmbox-group-alist))) (cdr active))) (defun nnmbox-read-mbox () --- 417,423 ---- ;; This might be a bit naughty... creating groups on the drop of ;; a hat, but I don't know... (setq nnmbox-group-alist (cons (list group (setq active (cons 1 1))) ! nnmbox-group-alist))) (cdr active))) (defun nnmbox-read-mbox () *** pub/dgnus/lisp/nnmh.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnmh.el Wed Aug 30 14:42:23 1995 *************** *** 303,309 **** (delete-file (concat nnmh-current-directory (int-to-string article))) (file-error nil))) ! result)) (defun nnmh-request-accept-article (group &optional last) (if (stringp group) --- 303,309 ---- (delete-file (concat nnmh-current-directory (int-to-string article))) (file-error nil))) ! result)) (defun nnmh-request-accept-article (group &optional last) (if (stringp group) *** pub/dgnus/lisp/nnml.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnml.el Wed Aug 30 14:42:21 1995 *************** *** 671,677 **** (setq chars (- (point-max) (point))) (point))) ! (if (not (= 0 chars)) ; none of them empty files... (progn (setq nov-line (nnml-make-nov-line chars)) (save-excursion --- 671,677 ---- (setq chars (- (point-max) (point))) (point))) ! (if (not (= 0 chars)) ; none of them empty files... (progn (setq nov-line (nnml-make-nov-line chars)) (save-excursion *** pub/dgnus/lisp/nnspool.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnspool.el Wed Aug 30 14:42:19 1995 *************** *** 342,348 **** (subst-char-in-region (point-min) (point-max) ?\n ?\\ 'noundo) (setq nnspool-status-string (buffer-string)) (message "nnspool: %s" nnspool-status-string) ! ;(kill-buffer (current-buffer)) ))) (defalias 'nnspool-request-post-buffer 'nntp-request-post-buffer) --- 342,348 ---- (subst-char-in-region (point-min) (point-max) ?\n ?\\ 'noundo) (setq nnspool-status-string (buffer-string)) (message "nnspool: %s" nnspool-status-string) ! ;(kill-buffer (current-buffer)) ))) (defalias 'nnspool-request-post-buffer 'nntp-request-post-buffer) *************** *** 419,425 **** (erase-buffer) (call-process "grep" nil t nil id nnspool-history-file) (goto-char (point-min)) ! (if (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ \t\n]*\\)") (concat nnspool-spool-directory (nnspool-replace-chars-in-string (buffer-substring (match-beginning 1) (match-end 1)) --- 419,425 ---- (erase-buffer) (call-process "grep" nil t nil id nnspool-history-file) (goto-char (point-min)) ! (if (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ \t\n]*\\)") (concat nnspool-spool-directory (nnspool-replace-chars-in-string (buffer-substring (match-beginning 1) (match-end 1)) *** pub/dgnus/lisp/nntp.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nntp.el Wed Aug 30 14:42:17 1995 *************** *** 283,333 **** (last-point (point-min)) (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP"))) ! (while groups ! (nntp-send-strings-to-server command (car groups)) ! (setq groups (cdr groups)) ! (setq count (1+ count)) ! ;; Every 400 requests we have to read the stream in ! ;; order to avoid deadlocks. ! (if (or (null groups) ;All requests have been sent. ! (zerop (% count nntp-maximum-request))) ! (progn ! (nntp-accept-response) (while (progn ! (goto-char last-point) ! ;; Count replies. ! (while (re-search-forward "^[0-9]" nil t) ! (setq received (1+ received))) ! (setq last-point (point)) ! (< received count)) (nntp-accept-response))))) ! ;; Wait for the reply from the final command. ! (if nntp-server-list-active-group ! (progn ! (goto-char (point-max)) ! (re-search-backward "^[0-9]" nil t) ! (if (looking-at "^[23]") ! (while (progn ! (goto-char (- (point-max) 3)) ! (not (looking-at "^\\.\r?\n"))) ! (nntp-accept-response))))) ! ! ;; Now all replies are received. We remove CRs. ! (goto-char (point-min)) ! (while (search-forward "\r" nil t) ! (replace-match "" t t)) ! (if nntp-server-list-active-group ! (progn ! ;; We have read active entries, so we just delete the ! ;; superfluos gunk. ! (goto-char (point-min)) ! (while (re-search-forward "^[.2-5]" nil t) ! (delete-region (match-beginning 0) ! (progn (forward-line 1) (point)))) ! 'active) ! 'group)))) (defun nntp-open-server (server &optional defs) (nnheader-init-server-buffer) --- 283,333 ---- (last-point (point-min)) (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP"))) ! (while groups ! (nntp-send-strings-to-server command (car groups)) ! (setq groups (cdr groups)) ! (setq count (1+ count)) ! ;; Every 400 requests we have to read the stream in ! ;; order to avoid deadlocks. ! (if (or (null groups) ;All requests have been sent. ! (zerop (% count nntp-maximum-request))) ! (progn ! (nntp-accept-response) ! (while (progn ! (goto-char last-point) ! ;; Count replies. ! (while (re-search-forward "^[0-9]" nil t) ! (setq received (1+ received))) ! (setq last-point (point)) ! (< received count)) ! (nntp-accept-response))))) ! ! ;; Wait for the reply from the final command. ! (if nntp-server-list-active-group ! (progn ! (goto-char (point-max)) ! (re-search-backward "^[0-9]" nil t) ! (if (looking-at "^[23]") (while (progn ! (goto-char (- (point-max) 3)) ! (not (looking-at "^\\.\r?\n"))) (nntp-accept-response))))) ! ;; Now all replies are received. We remove CRs. ! (goto-char (point-min)) ! (while (search-forward "\r" nil t) ! (replace-match "" t t)) ! (if nntp-server-list-active-group ! (progn ! ;; We have read active entries, so we just delete the ! ;; superfluos gunk. ! (goto-char (point-min)) ! (while (re-search-forward "^[.2-5]" nil t) ! (delete-region (match-beginning 0) ! (progn (forward-line 1) (point)))) ! 'active) ! 'group)))) (defun nntp-open-server (server &optional defs) (nnheader-init-server-buffer) *************** *** 624,631 **** (goto-char (point-min)) (narrow-to-region (point-min) (progn (search-forward "\n\n") (point))) ! (setq from (header-from header)) ! (setq date (header-date header)) (and from (let ((stop-pos (string-match " *at \\| *@ \\| *(\\| *<" from))) --- 624,631 ---- (goto-char (point-min)) (narrow-to-region (point-min) (progn (search-forward "\n\n") (point))) ! (setq from (mail-header-from header)) ! (setq date (mail-header-date header)) (and from (let ((stop-pos (string-match " *at \\| *@ \\| *(\\| *<" from))) *************** *** 633,639 **** message-of (concat (if stop-pos (substring from 0 stop-pos) from) "'s message of " date)))) ! (setq subject (or subject (header-subject header))) (or (string-match "^[Rr][Ee]:" subject) (setq subject (concat "Re: " subject))) (setq followup-to (mail-fetch-field "followup-to")) --- 633,639 ---- message-of (concat (if stop-pos (substring from 0 stop-pos) from) "'s message of " date)))) ! (setq subject (or subject (mail-header-subject header))) (or (string-match "^[Rr][Ee]:" subject) (setq subject (concat "Re: " subject))) (setq followup-to (mail-fetch-field "followup-to")) *************** *** 643,655 **** (setq followup-to nil)) (setq newsgroups (or follow-to followup-to (mail-fetch-field "newsgroups"))) ! (setq references (header-references header)) (setq distribution (mail-fetch-field "distribution")) ;; Remove bogus distribution. (and (stringp distribution) (string-match "world" distribution) (setq distribution nil)) ! (setq message-id (header-id header)) (widen)) (setq news-reply-yank-from from) (setq news-reply-yank-message-id message-id) --- 643,655 ---- (setq followup-to nil)) (setq newsgroups (or follow-to followup-to (mail-fetch-field "newsgroups"))) ! (setq references (mail-header-references header)) (setq distribution (mail-fetch-field "distribution")) ;; Remove bogus distribution. (and (stringp distribution) (string-match "world" distribution) (setq distribution nil)) ! (setq message-id (mail-header-id header)) (widen)) (setq news-reply-yank-from from) (setq news-reply-yank-message-id message-id) *************** *** 896,901 **** --- 896,902 ---- (let ((count 0) (received 0) (last-point (point-min)) + (buf (current-buffer)) first) ;; We have to check `nntp-server-xover'. If it gets set to nil, ;; that means that the server does not understand XOVER, but we *************** *** 908,932 **** (< (- (nth 1 sequence) (car sequence)) nntp-nov-gap)) (setq sequence (cdr sequence))) ! (if (not (nntp-send-xover-command first (car sequence))) ! () ! (setq sequence (cdr sequence) ! count (1+ count)) ! ! ;; Every 400 requests we have to read the stream in ! ;; order to avoid deadlocks. ! (if (or (null sequence) ;All requests have been sent. ! (zerop (% count nntp-maximum-request))) ! (progn (accept-process-output) ! (while (progn ! (goto-char last-point) ! ;; Count replies. ! (while (re-search-forward "^[0-9][0-9][0-9] " nil t) ! (setq received (1+ received))) ! (setq last-point (point)) ! (< received count)) ! (accept-process-output)))))) (if (not nntp-server-xover) () --- 909,939 ---- (< (- (nth 1 sequence) (car sequence)) nntp-nov-gap)) (setq sequence (cdr sequence))) ! (if (not (nntp-send-xover-command first (car sequence))) ! () ! (setq sequence (cdr sequence) ! count (1+ count)) ! ! ;; Every 400 requests we have to read the stream in ! ;; order to avoid deadlocks. ! (if (or (null sequence) ;All requests have been sent. ! (zerop (% count nntp-maximum-request))) ! (progn ! (accept-process-output) ! ;; On some Emacs versions the preceding function has ! ;; a tendency to change the buffer. Perhaps. It's ! ;; quite difficult to reporduce, because it only ! ;; seems to happen once in a blue moon. ! (set-buffer buf) ! (while (progn ! (goto-char last-point) ! ;; Count replies. ! (while (re-search-forward "^[0-9][0-9][0-9] " nil t) ! (setq received (1+ received))) ! (setq last-point (point)) ! (< received count)) (accept-process-output) ! (set-buffer buf)))))) (if (not nntp-server-xover) () *************** *** 1138,1162 **** ;; accept-process-output is called. ;; Suggested by Jason Venner . ;; This is a copy of `nntp-default-sentinel'. ! (if (or (not nntp-server-process) ! (not (memq (process-status nntp-server-process) '(open run)))) ! (error "nntp: Process connection closed; %s" (nntp-status-message)) ! (if nntp-buggy-select ! (progn ! ;; We cannot use `accept-process-output'. ! ;; Fujitsu UTS requires messages during sleep-for. I don't know why. ! (message "NNTP: Reading...") ! (sleep-for 1) ! (message "")) ! (condition-case errorcode ! (accept-process-output nntp-server-process) ! (error ! (cond ((string-equal "select error: Invalid argument" ! (nth 1 errorcode)) ! ;; Ignore select error. ! nil) ! (t ! (signal (car errorcode) (cdr errorcode))))))))) (defun nntp-last-element (list) "Return last element of LIST." --- 1145,1173 ---- ;; accept-process-output is called. ;; Suggested by Jason Venner . ;; This is a copy of `nntp-default-sentinel'. ! (let ((buf (current-buffer))) ! (prog1 ! (if (or (not nntp-server-process) ! (not (memq (process-status nntp-server-process) '(open run)))) ! (error "nntp: Process connection closed; %s" (nntp-status-message)) ! (if nntp-buggy-select ! (progn ! ;; We cannot use `accept-process-output'. ! ;; Fujitsu UTS requires messages during sleep-for. ! ;; I don't know why. ! (message "NNTP: Reading...") ! (sleep-for 1) ! (message "")) ! (condition-case errorcode ! (accept-process-output nntp-server-process) ! (error ! (cond ((string-equal "select error: Invalid argument" ! (nth 1 errorcode)) ! ;; Ignore select error. ! nil) ! (t ! (signal (car errorcode) (cdr errorcode)))))))) ! (set-buffer buf)))) (defun nntp-last-element (list) "Return last element of LIST." *** pub/dgnus/lisp/nnvirtual.el Tue Aug 29 09:03:23 1995 --- dgnus/lisp/nnvirtual.el Wed Aug 30 14:42:15 1995 *************** *** 257,272 **** (while headers (setq header (car headers) headers (cdr headers)) ! (insert (int-to-string (header-number header)) "\t" ! (or (header-subject header) "") "\t" ! (or (header-from header) "") "\t" ! (or (header-date header) "") "\t" ! (or (header-id header) "") "\t" ! (or (header-references header) "") "\t" ! (int-to-string (or (header-chars header) 0)) "\t" ! (int-to-string (or (header-lines header) 0)) "\t" ! (if (header-xref header) ! (concat "Xref: " (header-xref header) "\t") "") "\n"))))) (defun nnvirtual-possibly-change-newsgroups (group regexp &optional check) --- 257,272 ---- (while headers (setq header (car headers) headers (cdr headers)) ! (insert (int-to-string (mail-header-number header)) "\t" ! (or (mail-header-subject header) "") "\t" ! (or (mail-header-from header) "") "\t" ! (or (mail-header-date header) "") "\t" ! (or (mail-header-id header) "") "\t" ! (or (mail-header-references header) "") "\t" ! (int-to-string (or (mail-header-chars header) 0)) "\t" ! (int-to-string (or (mail-header-lines header) 0)) "\t" ! (if (mail-header-xref header) ! (concat "Xref: " (mail-header-xref header) "\t") "") "\n"))))) (defun nnvirtual-possibly-change-newsgroups (group regexp &optional check) *** pub/dgnus/lisp/ChangeLog Tue Aug 29 09:03:24 1995 --- dgnus/lisp/ChangeLog Wed Aug 30 18:03:25 1995 *************** *** 1,4 **** --- 1,50 ---- + Wed Aug 30 17:56:34 1995 Lars Magne Ingebrigtsen + + * custom.el ((string-match "XEmacs" emacs-version)): Would barf if + the menu-bar wasn't in use. + + Wed Aug 30 08:46:48 1995 Lars Magne Ingebrigtsen + + * gnus.el ('(gnus-read-init-file 'inhibit)): Don't load while + compiling. + (gnus-summary-next-article): Would not go to the next group when + all articles were canceled. + (gnus-summary-prepare): Create the hashtb before running the + prepare hook. + + * gnus.el: Renamed all `header-' macros `mail-header-'. Ran + `indent-sexp' on all functions in all files. + + * nnbabyl.el (nnbabyl-read-mbox): Would doubly insert RMAIL file + sometimes. + + * gnus-ems.el (appt-select-lowest-window): Not defined in XEmacs. + + * gnus-score.el (gnus-summary-header): Would bug out if there were + pseudo-articles in the buffer. + + Wed Aug 30 06:08:13 1995 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-score-find-trace): Didn't kill "*Gnus + Scores*" buffer on exit. + + Tue Aug 29 17:21:37 1995 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-mail-reply-using-mail): Set auto-save-mode if + that is wanted. + + * gnus-ems.el (gnus-rebuild-thread-xemacs): Bugged out near the + end of buffers. + + * gnus.el (gnus-summary-read-group): Force a summary config. + Tue Aug 29 05:55:19 1995 Lars Magne Ingebrigtsen + + * nntp.el: Do some pussy-footing around `accept-process-output'. + + Tue Aug 29 05:55:19 1995 Lars Magne Ingebrigtsen + + * gnus.el: 0.99.27 is released. * gnus-msg.el (gnus-delete-supersedes-headers): Delete Supersedes. *** pub/dgnus/texi/gnus.texi Tue Aug 29 09:03:24 1995 --- dgnus/texi/gnus.texi Wed Aug 30 13:00:08 1995 *************** *** 2001,2008 **** @code{nnmail-resplit-incoming} to @code{t}. @vindex nnmail-keep-last-article ! If you use @code{procmail}, you should set ! @code{nnmail-keep-last-article} to non-@code{nil}, to prevent Gnus from ever expiring the final article in a mail newsgroup. This is quite, quite important. --- 2001,2009 ---- @code{nnmail-resplit-incoming} to @code{t}. @vindex nnmail-keep-last-article ! If you use @code{procmail} to split things directory into an nnmh ! directory (which you shouldn't do), you should set ! @code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from ever expiring the final article in a mail newsgroup. This is quite, quite important. *************** *** 5661,5666 **** --- 5662,5672 ---- ((mark -100)) @end lisp You may also consider doing something similar with @code{expunge}. + + @item Negated charater classes + If you say stuff like @code{[^abcd]*}, you may get unexpected results. + That will match newlines, which might lead to, well, The Unknown. Say + @code{[^abcd\n]*} instead. @end table @node Reverse Scoring