From: Lars Magne Ingebrigtsen Date: Sun, 29 Jun 1997 19:36:17 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://cgit.sxemacs.org/?a=commitdiff_plain;h=4816a57b6b36eb161747f770bce4dad3c3cbb6fe;p=gnus *** empty log message *** --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f05cf12ec..5cfb4e18d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,59 @@ +Sun Jun 29 21:32:13 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.60 is released. + +Sun Jun 29 21:14:27 1997 Hrvoje Niksic + + * gnus-salt.el: Customized. + +1997-06-27 Hrvoje Niksic + + * gnus-salt.el (gnus-tree-show-summary): New function. + (gnus-tree-mode-map): Use it. + +Sun Jun 29 20:19:27 1997 Lars Magne Ingebrigtsen + + * gnus-salt.el (gnus-generate-horizontal-tree): Protect against + nil threads. + + * gnus-sum.el (gnus-adjust-marked-articles): Change. + +Sun Jun 29 20:19:03 1997 Scott Byer + + * gnus-sum.el (gnus-adjust-marked-articles): Improper lists. + +1997-06-24 Hrvoje Niksic + + * gnus-sum.el (gnus-summary-search-article): Inhibit updating tree + buffer. + +Sun Jun 29 19:36:48 1997 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-activate-group): Ignore zero returns. + + * gnus-salt.el (gnus-generate-vertical-tree): Use a safer + line-drawing algorithm. + + * nnml.el (nnml-generate-nov-file): Articles with null bodies are + legal. + +Sun Jun 22 15:44:02 1997 Lars Magne Ingebrigtsen + + * gnus-art.el (article-hide-pgp): Only run hook when hiding pgp. + + * nnfolder.el (nnfolder-save-buffer): Make sure the directory + exists. + + * gnus-uu.el (gnus-uu-post-news-inews): Didn't work when posting + threaded. + (gnus-uu-post-encoded): Include sequence numbers in threaded + posts. + +Sat Jun 21 00:17:16 1997 Lars Magne Ingebrigtsen + + * message.el (message-set-auto-save-file-name): Translate / in + buffer names. + Wed Jun 18 17:26:35 1997 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.4.59 is released. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 3999768d6..7600c43fa 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -981,8 +981,8 @@ always hide." (while (re-search-forward "^- " nil t) (gnus-article-hide-text-type (match-beginning 0) (match-end 0) 'pgp)) - (widen))) - (run-hooks 'gnus-article-hide-pgp-hook))))) + (widen)) + (run-hooks 'gnus-article-hide-pgp-hook)))))) (defun article-hide-pem (&optional arg) "Toggle hiding of any PEM headers and signatures in the current article. diff --git a/lisp/gnus-salt.el b/lisp/gnus-salt.el index 10bb67f2e..fd80bc273 100644 --- a/lisp/gnus-salt.el +++ b/lisp/gnus-salt.el @@ -34,22 +34,32 @@ (defvar gnus-pick-mode nil "Minor mode for providing a pick-and-read interface in Gnus summary buffers.") -(defvar gnus-pick-display-summary nil - "*Display summary while reading.") - -(defvar gnus-pick-mode-hook nil - "Hook run in summary pick mode buffers.") - -(defvar gnus-mark-unpicked-articles-as-read nil - "*If non-nil, mark all unpicked articles as read.") - -(defvar gnus-pick-elegant-flow t - "If non-nil, gnus-pick-start-reading will run gnus-summary-next-group when no articles have been picked.") - -(defvar gnus-summary-pick-line-format +(defcustom gnus-pick-display-summary nil + "*Display summary while reading." + :type 'boolean + :group 'gnus-summary-pick) + +(defcustom gnus-pick-mode-hook nil + "Hook run in summary pick mode buffers." + :type 'hook + :group 'gnus-summary-pick) + +(defcustom gnus-mark-unpicked-articles-as-read nil + "*If non-nil, mark all unpicked articles as read." + :type 'boolean + :group 'gnus-summary-pick) + +(defcustom gnus-pick-elegant-flow t + "If non-nil, gnus-pick-start-reading will run gnus-summary-next-group when no articles have been picked." + :type 'boolean + :group 'gnus-summary-pick) + +(defcustom gnus-summary-pick-line-format "%-5P %U\%R\%z\%I\%(%[%4L: %-20,20n%]%) %s\n" "*The format specification of the lines in pick buffers. -It accepts the same format specs that `gnus-summary-line-format' does.") +It accepts the same format specs that `gnus-summary-line-format' does." + :type 'string + :group 'gnus-summary-pick) ;;; Internal variables. @@ -350,16 +360,22 @@ This must be bound to a button-down mouse event." ;;; gnus-tree-mode ;;; -(defvar gnus-tree-line-format "%(%[%3,3n%]%)" - "Format of tree elements.") +(defcustom gnus-tree-line-format "%(%[%3,3n%]%)" + "Format of tree elements." + :type 'string + :group 'gnus-summary-tree) -(defvar gnus-tree-minimize-window t +(defcustom gnus-tree-minimize-window t "If non-nil, minimize the tree buffer window. If a number, never let the tree buffer grow taller than that number of -lines.") +lines." + :type 'boolean + :group 'gnus-summary-tree) -(defvar gnus-selected-tree-face 'modeline - "*Face used for highlighting selected articles in the thread tree.") +(defcustom gnus-selected-tree-face 'modeline + "*Face used for highlighting selected articles in the thread tree." + :type 'face + :group 'gnus-summary-tree) (defvar gnus-tree-brackets '((?\[ . ?\]) (?\( . ?\)) (?\{ . ?\}) (?< . ?>)) @@ -368,16 +384,24 @@ lines.") (defvar gnus-tree-parent-child-edges '(?- ?\\ ?|) "Characters used to connect parents with children.") -(defvar gnus-tree-mode-line-format "Gnus: %%b %S %Z" - "*The format specification for the tree mode line.") +(defcustom gnus-tree-mode-line-format "Gnus: %%b %S %Z" + "*The format specification for the tree mode line." + :type 'string + :group 'gnus-summary-tree) -(defvar gnus-generate-tree-function 'gnus-generate-vertical-tree +(defcustom gnus-generate-tree-function 'gnus-generate-vertical-tree "*Function for generating a thread tree. Two predefined functions are available: -`gnus-generate-horizontal-tree' and `gnus-generate-vertical-tree'.") +`gnus-generate-horizontal-tree' and `gnus-generate-vertical-tree'." + :type '(radio (function-item gnus-generate-vertical-tree) + (function-item gnus-generate-horizontal-tree) + (function :tag "Other" nil)) + :group 'gnus-summary-tree) -(defvar gnus-tree-mode-hook nil - "*Hook run in tree mode buffers.") +(defcustom gnus-tree-mode-hook nil + "*Hook run in tree mode buffers." + :type 'hook + :group 'gnus-summary-tree) ;;; Internal variables. @@ -410,6 +434,7 @@ Two predefined functions are available: "\r" gnus-tree-select-article gnus-mouse-2 gnus-tree-pick-article "\C-?" gnus-tree-read-summary-keys + "h" gnus-tree-show-summary "\C-c\C-i" gnus-info-find-node) @@ -460,6 +485,14 @@ Two predefined functions are available: (goto-char (or (gnus-overlay-end gnus-selected-tree-overlay) 1))) (gnus-tree-minimize)))) +(defun gnus-tree-show-summary () + "Reconfigure windows to show summary buffer." + (interactive) + (if (not (gnus-buffer-live-p gnus-summary-buffer)) + (error "There is no summary buffer for this tree buffer") + (gnus-configure-windows 'article) + (gnus-summary-goto-subject gnus-current-article))) + (defun gnus-tree-select-article (article) "Select the article under point, if any." (interactive (list (gnus-tree-article-number))) @@ -646,7 +679,9 @@ Two predefined functions are available: "Generate a horizontal tree." (let* ((dummy (stringp (car thread))) (do (or dummy - (memq (mail-header-number (car thread)) gnus-tmp-limit))) + (and (car thread) + (memq (mail-header-number (car thread)) + gnus-tmp-limit)))) col beg) (if (not do) ;; We don't want this article. @@ -718,13 +753,12 @@ Two predefined functions are available: (delete-char -1) (insert (cadr gnus-tree-parent-child-edges)) (setq beg (point)) + (forward-char -1) ;; Draw "-" lines leftwards. - (while (progn - (unless (bolp) - (forward-char -2)) - (= (following-char) ? )) - (delete-char 1) - (insert (car gnus-tree-parent-child-edges))) + (while (= (char-after (1- (point))) ? ) + (delete-char -1) + (insert (car gnus-tree-parent-child-edges)) + (forward-char -1)) (goto-char beg) (gnus-tree-forward-line 1))) (setq dummyp nil) diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index aca6c8aab..64c0272a4 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -1284,12 +1284,11 @@ newsgroup." "Alter the ACTIVE info for GROUP to reflect the articles in the cache." (when gnus-cache-active-hashtb (let ((cache-active (gnus-gethash group gnus-cache-active-hashtb))) - (and cache-active - (< (car cache-active) (car active)) - (setcar active (car cache-active))) - (and cache-active - (> (cdr cache-active) (cdr active)) - (setcdr active (cdr cache-active))))))) + (when cache-active + (when (< (car cache-active) (car active)) + (setcar active (car cache-active))) + (when (> (cdr cache-active) (cdr active)) + (setcdr active (cdr cache-active)))))))) (defun gnus-activate-group (group &optional scan dont-check method) ;; Check whether a group has been activated or not. @@ -1309,7 +1308,15 @@ newsgroup." (inline (gnus-request-group group dont-check method)) (error nil) (quit nil)) - (gnus-set-active group (setq active (gnus-parse-active))) + (setq active (gnus-parse-active)) + ;; If there are no articles in the group, the GROUP + ;; command may have responded with the `(0 . 0)'. We + ;; ignore this if we already have an active entry + ;; for the group. + (unless (and (zerop (car active)) + (zerop (cdr active)) + (gnus-active group)) + (gnus-set-active group active)) ;; Return the new active info. active))) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index fca59a5f4..27fbd28c4 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -3826,6 +3826,10 @@ If READ-ALL is non-nil, all articles in the group are selected." (set var (delq article (symbol-value var)))))) ;; Adjust assocs. ((memq mark uncompressed) + (when (not (listp (car (symbol-value var))))) + (set var (list (symbol-value var))) + (when (not (listp (cdr articles))) + (setq articles (list articles))) (while articles (when (or (not (consp (setq article (pop articles)))) (< (car article) min) @@ -6341,6 +6345,7 @@ Optional argument BACKWARD means do search for backward. (gnus-mark-article-hook nil) ;Inhibit marking as read. (gnus-use-article-prefetch nil) (gnus-xmas-force-redisplay nil) ;Inhibit XEmacs redisplay. + (gnus-use-trees nil) ;Inhibit updating tree buffer. (sum (current-buffer)) (found nil) point) diff --git a/lisp/gnus-uu.el b/lisp/gnus-uu.el index a002f6121..ee75ce87f 100644 --- a/lisp/gnus-uu.el +++ b/lisp/gnus-uu.el @@ -1206,7 +1206,6 @@ didn't work, and overwrite existing files. Otherwise, ask each time." (defun gnus-uu-grab-articles (articles process-function &optional sloppy limit no-errors) (let ((state 'first) - (gnus-asynchronous nil) has-been-begin article result-file result-files process-state gnus-summary-display-article-function gnus-article-display-hook gnus-article-prepare-hook @@ -1778,7 +1777,7 @@ post the entire file." This may not be smart, as no other decoder I have seen are able to follow threads when collecting uuencoded articles. (Well, I have seen one package that does that - gnus-uu, but somehow, I don't think that -counts...) Default is nil." +counts...) The default is nil." :group 'gnus-extract-post :type 'boolean) @@ -1877,28 +1876,7 @@ If no file has been included, the user will be asked for a file." (setq file-name gnus-uu-post-inserted-file-name) (setq file-name (gnus-uu-post-insert-binary))) - (if gnus-uu-post-threaded - (let ((message-required-news-headers - (if (memq 'Message-ID message-required-news-headers) - message-required-news-headers - (cons 'Message-ID message-required-news-headers))) - gnus-inews-article-hook) - - (setq gnus-inews-article-hook (if (listp gnus-inews-article-hook) - gnus-inews-article-hook - (list gnus-inews-article-hook))) - (push - '(lambda () - (save-excursion - (goto-char (point-min)) - (if (re-search-forward "^Message-ID: \\(.*\\)$" nil t) - (setq gnus-uu-post-message-id - (buffer-substring - (match-beginning 1) (match-end 1))) - (setq gnus-uu-post-message-id nil)))) - gnus-inews-article-hook) - (gnus-uu-post-encoded file-name t)) - (gnus-uu-post-encoded file-name nil))) + (gnus-uu-post-encoded file-name gnus-uu-post-threaded)) (setq gnus-uu-post-inserted-file-name nil) (when gnus-uu-winconf-post-news (set-window-configuration gnus-uu-winconf-post-news))) @@ -1965,12 +1943,12 @@ If no file has been included, the user will be asked for a file." (goto-char (point-min)) (setq length (count-lines 1 (point-max))) (setq parts (/ length gnus-uu-post-length)) - (when (not (< (% length gnus-uu-post-length) 4)) - (setq parts (1+ parts)))) + (unless (< (% length gnus-uu-post-length) 4) + (incf parts))) (when gnus-uu-post-separate-description (forward-line -1)) - (kill-region (point) (point-max)) + (delete-region (point) (point-max)) (goto-char (point-min)) (re-search-forward @@ -1979,12 +1957,13 @@ If no file has been included, the user will be asked for a file." (setq header (buffer-substring 1 (point))) (goto-char (point-min)) - (if (not gnus-uu-post-separate-description) - () - (when (and (not threaded) (re-search-forward "^Subject: " nil t)) + (when gnus-uu-post-separate-description + (when (re-search-forward "^Subject: " nil t) (end-of-line) (insert (format " (0/%d)" parts))) - (message-send)) + (save-excursion + (message-send)) + (setq gnus-uu-post-message-id (message-fetch-field "message-id"))) (save-excursion (setq i 1) @@ -1994,7 +1973,7 @@ If no file has been included, the user will be asked for a file." (erase-buffer) (insert header) (when (and threaded gnus-uu-post-message-id) - (insert (format "References: %s\n" gnus-uu-post-message-id))) + (insert "References: " gnus-uu-post-message-id "\n")) (insert separator) (setq whole-len (- 62 (length (format top-string "" file-name i parts "")))) @@ -2009,15 +1988,9 @@ If no file has been included, the user will be asked for a file." (if (= 0 (% whole-len 2)) (1- minlen) minlen) ?-))) (goto-char (point-min)) - (if (not (re-search-forward "^Subject: " nil t)) - () - (if (not threaded) - (progn - (end-of-line) - (insert (format " (%d/%d)" i parts))) - (when (or (and (= i 2) gnus-uu-post-separate-description) - (and (= i 1) (not gnus-uu-post-separate-description))) - (replace-match "Subject: Re: ")))) + (when (re-search-forward "^Subject: " nil t) + (end-of-line) + (insert (format " (%d/%d)" i parts))) (goto-char (point-max)) (save-excursion @@ -2030,10 +2003,9 @@ If no file has been included, the user will be asked for a file." (forward-line -4)) (setq end (point))) (insert-buffer-substring uubuf beg end) - (insert beg-line) - (insert "\n") + (insert beg-line "\n") (setq beg end) - (setq i (1+ i)) + (incf i) (goto-char (point-min)) (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$") nil t) @@ -2047,12 +2019,14 @@ If no file has been included, the user will be asked for a file." (insert beg-line) (insert "\n") (let (message-sent-message-via) - (message-send)))) + (save-excursion + (message-send)) + (setq gnus-uu-post-message-id + (concat (message-fetch-field "references") " " + (message-fetch-field "message-id")))))) - (when (setq buf (get-buffer send-buffer-name)) - (kill-buffer buf)) - (when (setq buf (get-buffer encoded-buffer-name)) - (kill-buffer buf)) + (gnus-kill-buffer send-buffer-name) + (gnus-kill-buffer encoded-buffer-name) (when (not gnus-uu-post-separate-description) (set-buffer-modified-p nil) diff --git a/lisp/gnus.el b/lisp/gnus.el index ed3ff876b..467b99a7d 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -143,6 +143,18 @@ :link '(custom-manual "(gnus)Various Summary Stuff") :group 'gnus-summary) +(defgroup gnus-summary-pick nil + "Pick mode in the summary buffer." + :link '(custom-manual "(gnus)Pick and Read") + :prefix "gnus-pick-" + :group 'gnus-summary) + +(defgroup gnus-summary-tree nil + "Tree display of threads in the summary buffer." + :link '(custom-manual "(gnus)Tree Display") + :prefix "gnus-tree-" + :group 'gnus-summary) + ;; Belongs to gnus-uu.el (defgroup gnus-extract-view nil "Viewing extracted files." @@ -226,7 +238,7 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "5.4.59" +(defconst gnus-version-number "5.4.60" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) diff --git a/lisp/message.el b/lisp/message.el index 87a1657da..eb27e36b4 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -2972,7 +2972,9 @@ Headers already prepared in the buffer are not modified." (concat (file-name-as-directory message-autosave-directory) "msg." (nnheader-replace-chars-in-string - (buffer-name) ?* ?.)))))) + (nnheader-replace-chars-in-string + (buffer-name) ?* ?.) + ?/ ?-)))))) (setq buffer-auto-save-file-name (save-excursion (prog1 diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index 8c12e6474..f46c13459 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -763,6 +763,7 @@ time saver for large mailboxes.") "Save the buffer." (when (buffer-modified-p) (run-hooks 'nnfolder-save-buffer-hook) + (gnus-make-directory (file-name-directory (buffer-file-name))) (save-buffer))) (provide 'nnfolder) diff --git a/lisp/nnml.el b/lisp/nnml.el index 043912e2e..ea6f95df6 100644 --- a/lisp/nnml.el +++ b/lisp/nnml.el @@ -759,8 +759,7 @@ all. This may very well take some time.") (search-forward "\n\n" nil t) (setq chars (- (point-max) (point))) (max 1 (1- (point))))) - (when (and (not (= 0 chars)) ; none of them empty files... - (not (= (point-min) (point-max)))) + (unless (zerop (buffer-size)) (goto-char (point-min)) (setq headers (nnml-parse-head chars (caar files))) (save-excursion diff --git a/texi/gnus.texi b/texi/gnus.texi index 055e1623d..90b6c2a3f 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Gnus 5.4.59 Manual +@settitle Gnus 5.4.60 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -309,7 +309,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Gnus 5.4.59 Manual +@title Gnus 5.4.60 Manual @author by Lars Magne Ingebrigtsen @page @@ -345,7 +345,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local spool or your mbox file. All at the same time, if you want to push your luck. -This manual corresponds to Gnus 5.4.59. +This manual corresponds to Gnus 5.4.60. @end ifinfo @@ -6754,6 +6754,25 @@ Here's the same thread displayed in a vertical tree buffer: [Paa] @end example +If you're using horizontal trees, it might be nice to display the trees +side-by-side with the summary buffer. You could add something like the +following to your @file{.gnus.el} file: + +@lisp +(setq gnus-use-trees t + gnus-generate-tree-function 'gnus-generate-horizontal-tree + gnus-tree-minimize-window nil) +(gnus-add-configuration + '(article + (vertical 1.0 + (horizontal 0.25 + (summary 0.75 point) + (tree 1.0)) + (article 1.0)))) +@end lisp + +@xref{Windows Configuration}. + @node Mail Group Commands @section Mail Group Commands @@ -12835,7 +12854,9 @@ frame will be created where picons will be shown. As you can see, instead of the normal @code{1.0} top-level spec, each additional split should have a frame parameter alist as the size spec. @xref{Frame Parameters, , Frame Parameters, elisp, The GNU Emacs Lisp -Reference Manual}. +Reference Manual}. Under XEmacs, a frame property list will be +accepted, too---for instance, @code{(height 5 width 15 left -1 top 1)} +is such a plist. Here's a list of all possible keys for @code{gnus-buffer-configuration}: diff --git a/texi/message.texi b/texi/message.texi index 4e98066a2..55307195b 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 5.4.59 Manual +@settitle Message 5.4.60 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -39,7 +39,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 5.4.59 Manual +@title Message 5.4.60 Manual @author by Lars Magne Ingebrigtsen @page @@ -79,7 +79,7 @@ buffers. * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 5.4.59. Message is distributed with +This manual corresponds to Message 5.4.60. Message is distributed with the Gnus distribution bearing the same version number as this manual has.