+Sun May 18 07:35:43 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.4.53 is released.
+
+Sun May 18 06:20:57 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * message.el (message-set-auto-save-file-name): Create unique auto
+ save file names.
+
+ * gnus-topic.el (gnus-topic-tallied-groups): Removed.
+ (gnus-topic-prepare-topic): Output right number of articles in
+ each sub-topic.
+
+ * gnus-sum.el (gnus-summary-next-group): Don't pass on killed
+ buffers.
+
+ * nnmail.el (nnmail-article-group): When crossposted to `junk', do
+ `junk'.
+
+ * gnus-util.el (gnus-kill-all-overlays): Remove nil overlays from
+ list.
+
+ * gnus-art.el (gnus-article-treat-html): Don't kill buf.
+
+ * gnus-group.el (gnus-group-find-new-newsgroups): Newish function.
+
+Sun May 18 06:16:41 1997 Kim-Minh Kaplan <kimminh.kaplan@utopia.eunet.fr>
+
+ * gnus-picon.el (gnus-picons-has-modeline-p): new user variable.
+ (gnus-picons-set-buffer): new function.
+ (gnus-picons-prepare-for-annotations): use it.
+ (gnus-picons-network-display-internal): ditto.
+ (gnus-picons-make-annotation): new function.
+ (gnus-picons-display-x-face): use it.
+ (gnus-article-display-picons): ditto.
+ (gnus-picons-display-picon-or-name): ditto.
+ (gnus-picons-display-pairs): ditto. Remember the correct
+ order of insertion of annotations.
+ (gnus-picons-display-glyph): use gnus-picons-make-annotation.
+ (gnus-article-display-picons): move group annotations in article
+ buffer to the correct place if displaying in article buffer.
+ (gnus-picons-network-search-internal): don't display "@" if there
+ is no domain picon works again. Check that the picons still
+ need be displayed. Add the bar bar.xpm separator if
+ gnus-picons-display-as-address.
+ (gnus-picons-network-display-callback): check that the picon still
+ need be displayed.
+ (gnus-picons-lock): function deleted.
+ (gnus-picons-remove): don't use it. New way of locking.
+ (gnus-picons-next-job-internal): new way of locking. Handle
+ new tag 'bar.
+ (gnus-picons-next-job): new way of locking.
+ (gnus-picons-buffer): variable deleted.
+ (gnus-picons-remove-all): modified accordingly.
+ (gnus-group-annotations-lock): variable deleted.
+ (gnus-article-annotations-lock): variable deleted.
+ (gnus-x-face-annotations-lock): variable deleted.
+ (gnus-picons-news-directories): renamed, was
+ gnus-picons-news-directory.
+ (gnus-picons-url-retrieve): do not change url-show-status.
+ (gnus-picons-clear-cache): also clear gnus-picons-url-alist.
+
+Sun May 18 05:57:31 1997 Michael R. Cook <mcook@cognex.com>
+
+ * gnus-topic.el (gnus-topic-toggle-display-empty-topics): New
+ function.
+
+Sun May 18 05:52:59 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnfolder.el (nnfolder-request-create-group): Read folder.
+
+Sat May 17 22:45:07 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-sum.el (gnus-summary-search-article): Require gnus-asynch.
+
+ * nnweb.el (nnweb-dejanews-wash-article): Remove "More Headers".
+
+Sun May 11 20:07:21 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-art.el (article-hide-pgp): Run hook.
+ (gnus-article-hide-pgp-hook): New variable.
+
Sat May 10 00:37:32 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Gnus v5.4.52 is released.
:type 'hook
:group 'gnus-article-various)
+(defcustom gnus-article-hide-pgp-hook nil
+ "*A hook called after successfully hiding a PGP signature."
+ :type 'hook
+ :group 'gnus-article-various)
+
(defcustom gnus-article-button-face 'bold
"Face used for highlighting buttons in the article buffer.
(while (re-search-forward "^- " nil t)
(gnus-article-hide-text-type
(match-beginning 0) (match-end 0) 'pgp))
- (widen))))))
+ (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.
(setq buf (buffer-string))))
(when buf
(delete-region (point-min) (point-max))
- (insert buf)
- (kill-buffer buf))
+ (insert buf))
(widen)
(goto-char (point-min))
(set-window-start (get-buffer-window (current-buffer)) (point-min))
"r" gnus-group-read-init-file
"B" gnus-group-browse-foreign-server
"b" gnus-group-check-bogus-groups
- "F" gnus-find-new-newsgroups
+ "F" gnus-group-find-new-groups
"\C-c\C-d" gnus-group-describe-group
"\M-d" gnus-group-describe-all-groups
"\C-c\C-a" gnus-group-apropos
["First unread group" gnus-group-first-unread-group t]
["Best unread group" gnus-group-best-unread-group t])
["Delete bogus groups" gnus-group-check-bogus-groups t]
- ["Find new newsgroups" gnus-find-new-newsgroups t]
+ ["Find new newsgroups" gnus-group-find-new-groups t]
["Transpose" gnus-group-transpose-groups
(gnus-group-group-name)]
["Read a directory as a group..." gnus-group-enter-directory t]))
(gnus-check-bogus-newsgroups (and (not silent) (not gnus-expert-user)))
(gnus-group-list-groups))
+(defun gnus-group-find-new-groups (&optional arg)
+ "Search for new groups and add them.
+Each new group will be treated with `gnus-subscribe-newsgroup-method.'
+If ARG (the prefix), use the `ask-server' method to query
+the server for new groups."
+ (interactive "P")
+ (gnus-find-new-newsgroups arg)
+ (gnus-group-list-groups))
+
(defun gnus-group-edit-global-kill (&optional article group)
"Edit the global kill file.
If GROUP, edit that local kill file instead."
;;; Commentary:
-;;; TODO:
-;; See the comment in gnus-picons-remove
-
;;; Code:
(require 'gnus)
also add gnus-article-display-picons to gnus-article-display-hook."
:group 'gnus-visual)
-(defcustom gnus-picons-buffer "*Icon Buffer*"
- "Buffer name to display the icons in if gnus-picons-display-where is 'picons."
- :type 'string
- :group 'picons)
-
(defcustom gnus-picons-display-where 'picons
"Where to display the group and article icons.
Legal values are `article' and `picons'."
:type '(choice symbol string)
:group 'picons)
+(defcustom gnus-picons-has-modeline-p t
+ "Wether the picons window should have a modeline.
+This is only useful if `gnus-picons-display-where' is `picons'."
+ :type 'boolean
+ :group 'picons)
+
(defcustom gnus-picons-database "/usr/local/faces"
"Defines the location of the faces database.
For information on obtaining this database of pretty pictures, please
:type 'directory
:group 'picons)
-(defcustom gnus-picons-news-directory "news"
+(defcustom gnus-picons-news-directories '("news")
"Sub-directory of the faces database containing the icons for newsgroups."
- :type 'string
+ :type '(repeat string)
:group 'picons)
+(define-obsolete-variable-alias 'gnus-picons-news-directory
+ 'gnus-picons-news-directories)
(defcustom gnus-picons-user-directories '("local" "users" "usenix" "misc")
"List of directories to search for user faces."
(defvar gnus-group-annotations nil
"List of annotations added/removed when selecting/exiting a group")
-(defvar gnus-group-annotations-lock nil)
(defvar gnus-article-annotations nil
"List of annotations added/removed when selecting an article")
-(defvar gnus-article-annotations-lock nil)
(defvar gnus-x-face-annotations nil
"List of annotations added/removed when selecting an article with an
X-Face.")
-(defvar gnus-x-face-annotations-lock nil)
(defvar gnus-picons-jobs-alist nil
"List of jobs that still need be done.
;;; Functions:
-(defsubst gnus-picons-lock (symbol)
- (intern (concat (symbol-name symbol) "-lock")))
-
(defun gnus-picons-remove (symbol)
"Remove all annotations in variable named SYMBOL.
This function is careful to set it to nil before removing anything so that
asynchronous process don't get crazy."
- ;; clear the lock
- (set (gnus-picons-lock symbol) nil)
+ (setq gnus-picons-jobs-alist (remassq symbol gnus-picons-jobs-alist))
+ ;; notify running job that it may have been preempted
+ (if (eq (car gnus-picons-job-already-running) symbol)
+ (setq gnus-picons-job-already-running t))
;; clear all annotations
(mapc (function (lambda (item)
(if (annotationp item)
(delete-annotation item))))
(prog1 (symbol-value symbol)
- (set symbol nil)))
- ;; FIXME: there's a race condition here. If a job is already
- ;; running, it has already removed itself from this queue... But
- ;; will still display its picon.
- ;; TODO: push a request to clear an annotation. Then
- ;; gnus-picons-next-job will be able to clean up when it gets the
- ;; hand
- (setq gnus-picons-jobs-alist (remassq symbol gnus-picons-jobs-alist)))
+ (set symbol nil))))
(defun gnus-picons-remove-all ()
"Removes all picons from the Gnus display(s)."
(interactive)
(gnus-picons-remove 'gnus-article-annotations)
(gnus-picons-remove 'gnus-group-annotations)
- (gnus-picons-remove 'gnus-x-face-annotations)
- (when (bufferp gnus-picons-buffer)
- (kill-buffer gnus-picons-buffer)))
+ (gnus-picons-remove 'gnus-x-face-annotations))
(defun gnus-get-buffer-name (variable)
"Returns the buffer name associated with the contents of a variable."
((stringp newvar) newvar))))
((stringp variable) variable)))
+(defun gnus-picons-set-buffer ()
+ (set-buffer
+ (get-buffer-create (gnus-get-buffer-name gnus-picons-display-where)))
+ (gnus-add-current-to-buffer-list)
+ (goto-char (point-min))
+ (if (and (eq gnus-picons-display-where 'article)
+ gnus-picons-display-article-move-p)
+ (if (search-forward "\n\n" nil t)
+ (forward-line -1)
+ (goto-char (point-max)))
+ (setq buffer-read-only t)
+ (unless gnus-picons-has-modeline-p
+ (set-specifier has-modeline-p
+ (list (list (current-buffer)
+ (cons nil gnus-picons-has-modeline-p)))))))
+
(defun gnus-picons-prepare-for-annotations (annotations)
"Prepare picons buffer for puting annotations memorized in ANNOTATIONS.
ANNOTATIONS should be a symbol naming a variable wich contains a list of
;; let drawing catch up
(when gnus-picons-refresh-before-display
(sit-for 0))
- (set-buffer (get-buffer-create
- (gnus-get-buffer-name gnus-picons-display-where)))
- (gnus-add-current-to-buffer-list)
- (goto-char (point-min))
- (if (and (eq gnus-picons-display-where 'article)
- gnus-picons-display-article-move-p)
- (when (search-forward "\n\n" nil t)
- (forward-line -1))
- (make-local-variable 'inhibit-read-only)
- (setq buffer-read-only t
- inhibit-read-only nil))
+ (gnus-picons-set-buffer)
(gnus-picons-remove annotations))
+(defsubst gnus-picons-make-annotation (&rest args)
+ (let ((annot (apply 'make-annotation args)))
+ (set-extent-property annot 'duplicable nil)
+ annot))
+
(defun gnus-picons-article-display-x-face ()
"Display the x-face header bitmap in the 'gnus-picons-display-where buffer."
;; delete any old ones.
(save-excursion
(gnus-picons-prepare-for-annotations 'gnus-x-face-annotations)
(setq gnus-x-face-annotations
- (cons (make-annotation
+ (cons (gnus-picons-make-annotation
(vector 'xface
:data (concat "X-Face: "
(buffer-substring beg end buf)))
(annot (save-excursion
(gnus-picons-prepare-for-annotations
'gnus-x-face-annotations)
- (make-annotation nil nil 'text)))
+ (gnus-picons-make-annotation nil nil 'text)))
(process (start-process-shell-command "gnus-x-face" nil
gnus-picons-convert-x-face)))
(push annot gnus-x-face-annotations)
(message-tokenize-header (substring from (1+ at-idx))
"."))))
(gnus-picons-prepare-for-annotations 'gnus-article-annotations)
+ ;; if display in article buffer, the group annotations
+ ;; wrongly placed. Move them here
+ (if (eq gnus-picons-display-where 'article)
+ (dolist (ext gnus-group-annotations)
+ (set-extent-endpoints ext (point) (point))))
(if (null gnus-picons-piconsearch-url)
(setq gnus-article-annotations
(nconc gnus-article-annotations
(gnus-picons-display-pairs
(gnus-picons-lookup-pairs
addrs gnus-picons-domain-directories)
- (not (or gnus-picons-display-as-address
- gnus-article-annotations))
+ gnus-picons-display-as-address
"." t)
(if (and gnus-picons-display-as-address addrs)
- (list (make-annotation [string :data "@"] nil
- 'text nil nil nil t)))
+ (list (gnus-picons-make-annotation
+ [string :data "@"] nil
+ 'text nil nil nil t)))
(gnus-picons-display-picon-or-name
(gnus-picons-lookup-user username addrs)
username t)))
(gnus-picons-display-pairs
(gnus-picons-lookup-pairs (reverse (message-tokenize-header
gnus-newsgroup-name "."))
- gnus-picons-news-directory)
+ gnus-picons-news-directories)
t "."))
(push (list 'gnus-group-annotations 'search nil
(message-tokenize-header gnus-newsgroup-name ".")
- (if (listp gnus-picons-news-directory)
- gnus-picons-news-directory
- (list gnus-picons-news-directory))
+ (if (listp gnus-picons-news-directories)
+ gnus-picons-news-directories
+ (list gnus-picons-news-directories))
nil)
gnus-picons-jobs-alist)
(gnus-picons-next-job))
(defun gnus-picons-display-picon-or-name (picon name &optional right-p)
(cond (picon (gnus-picons-display-glyph picon name right-p))
- (gnus-picons-display-as-address (list (make-annotation
+ (gnus-picons-display-as-address (list (gnus-picons-make-annotation
(vector 'string :data name)
nil 'text
nil nil nil right-p)))))
(defun gnus-picons-display-pairs (pairs &optional bar-p dot-p right-p)
"Display picons in list PAIRS."
- (let ((bar (and bar-p (or gnus-picons-display-as-address
- (annotations-in-region (point)
- (min (point-max)
- (1+ (point)))
- (current-buffer)))))
- (domain-p (and gnus-picons-display-as-address dot-p))
+ (let ((domain-p (and gnus-picons-display-as-address dot-p))
pair picons)
+ (if (and bar-p domain-p right-p)
+ (setq picons (gnus-picons-display-glyph
+ (gnus-picons-try-face gnus-xmas-glyph-directory
+ "bar.")
+ nil right-p)))
(while pairs
(setq pair (pop pairs)
- picons (nconc (if (and domain-p picons (not right-p))
- (list (make-annotation
- (vector 'string :data dot-p)
- nil 'text nil nil nil right-p)))
+ picons (nconc picons
(gnus-picons-display-picon-or-name (car pair)
(cadr pair)
right-p)
- (if (and domain-p pairs right-p)
- (list (make-annotation
+ (if (and domain-p pairs)
+ (list (gnus-picons-make-annotation
(vector 'string :data dot-p)
- nil 'text nil nil nil right-p)))
- (when (and bar domain-p)
- (setq bar nil)
+ nil 'text nil nil nil right-p))))))
+ (if (and bar-p domain-p (not right-p))
+ (setq picons (nconc picons
(gnus-picons-display-glyph
(gnus-picons-try-face gnus-xmas-glyph-directory
"bar.")
- nil t))
- picons)))
+ nil right-p))))
picons))
(defun gnus-picons-try-face (dir &optional filebase)
glyph))
(defun gnus-picons-display-glyph (glyph &optional part rightp)
- (let ((new (make-annotation glyph (point) 'text nil nil nil rightp)))
+ (let ((new (gnus-picons-make-annotation glyph (point)
+ 'text nil nil nil rightp)))
(when (and part gnus-picons-display-as-address)
(set-annotation-data new (cons new
(make-glyph (vector 'string :data part))))
(if (and (eq major-mode 'gnus-article-mode)
(not gnus-picons-display-as-address)
(not part))
- (list (make-annotation [string :data " "]
- (point) 'text nil nil nil rightp))))))
+ (list (gnus-picons-make-annotation [string :data " "] (point)
+ 'text nil nil nil rightp))))))
(defun gnus-picons-action-toggle (data)
"Toggle annotation"
(defun gnus-picons-clear-cache ()
"Clear the picons cache"
(interactive)
- (setq gnus-picons-glyph-alist nil))
+ (setq gnus-picons-glyph-alist nil
+ gnus-picons-url-alist nil))
(gnus-add-shutdown 'gnus-picons-close 'gnus)
(defun gnus-picons-url-retrieve (url fn arg)
(let ((old-asynch (default-value 'url-be-asynchronous))
(url-working-buffer (generate-new-buffer " *picons*"))
- (url-request-method nil)
(url-package-name "Gnus")
- (url-package-version gnus-version-number))
+ (url-package-version gnus-version-number)
+ url-request-method)
(setq-default url-be-asynchronous t)
(save-excursion
(set-buffer url-working-buffer)
(setq url-be-asynchronous t
- url-show-status nil
url-current-callback-data arg
url-current-callback-func fn)
(url-retrieve url t))
;;; picon network display functions :
(defun gnus-picons-network-display-internal (sym-ann glyph part right-p)
- (set-buffer
- (get-buffer-create (gnus-get-buffer-name gnus-picons-display-where)))
+ (gnus-picons-set-buffer)
(set sym-ann (nconc (symbol-value sym-ann)
(gnus-picons-display-picon-or-name glyph part right-p)))
(gnus-picons-next-job-internal))
w3-image-mappings)))))
(kill-buffer (current-buffer))
(push (cons url glyph) gnus-picons-glyph-alist)
- (gnus-picons-network-display-internal sym-ann glyph part right-p)))
+ ;; only do the job if it has not been preempted.
+ (if (equal gnus-picons-job-already-running
+ (list sym-ann 'picon url part right-p))
+ (gnus-picons-network-display-internal sym-ann glyph part right-p)
+ (gnus-picons-next-job-internal))))
(defun gnus-picons-network-display (url part sym-ann right-p)
(let ((cache (assoc url gnus-picons-glyph-alist)))
(if (and gnus-picons-display-as-address new-jobs)
(push (list sym-ann "@" right-p) new-jobs))
(push (list sym-ann 'picon (cdr cache) user right-p) new-jobs))
- (setq gnus-picons-jobs-alist (nconc (nreverse new-jobs)
- gnus-picons-jobs-alist))
+ (if (and gnus-picons-display-as-address (not right-p))
+ (push (list sym-ann 'bar right-p) new-jobs))
+ ;; only put the jobs in the queue if this job has not been preempted.
+ (if (equal gnus-picons-job-already-running
+ (list sym-ann 'search user addrs dbs right-p))
+ (setq gnus-picons-jobs-alist
+ (nconc (if (and gnus-picons-display-as-address right-p)
+ (list (list sym-ann 'bar right-p)))
+ (nreverse new-jobs)
+ gnus-picons-jobs-alist)))
(gnus-picons-next-job-internal)))
(defun gnus-picons-network-search-callback (user addrs dbs sym-ann right-p)
(gnus-picons-network-search-internal user addrs dbs sym-ann right-p))))
;;; Main jobs dispatcher function
-;; Given that XEmacs is not really multi threaded, this locking should
-;; be sufficient
(defun gnus-picons-next-job-internal ()
- (if gnus-picons-jobs-alist
- (let* ((job (pop gnus-picons-jobs-alist))
+ (if (setq gnus-picons-job-already-running (pop gnus-picons-jobs-alist))
+ (let* ((job gnus-picons-job-already-running)
(sym-ann (pop job))
(tag (pop job)))
(if tag
(cond ((stringp tag);; (SYM-ANN "..." RIGHT-P)
(gnus-picons-network-display-internal sym-ann nil tag
(pop job)))
+ ((eq 'bar tag)
+ (gnus-picons-network-display-internal
+ sym-ann (gnus-picons-try-face gnus-xmas-glyph-directory
+ "bar.")
+ nil (pop job)))
((eq 'search tag);; (SYM-ANN 'search USER ADDRS DBS RIGHT-P)
(gnus-picons-network-search
(pop job) (pop job) (pop job) sym-ann (pop job)))
((eq 'picon tag);; (SYM-ANN 'picon URL PART RIGHT-P)
(gnus-picons-network-display
(pop job) (pop job) sym-ann (pop job)))
- (t (error "Unknown picon job tag %s" tag)))))
- (setq gnus-picons-job-already-running nil)))
+ (t (setq gnus-picons-job-already-running nil)
+ (error "Unknown picon job tag %s" tag)))))))
(defun gnus-picons-next-job ()
- "Start processing the job queue."
+ "Start processing the job queue if it is not in progress"
(unless gnus-picons-job-already-running
- (setq gnus-picons-job-already-running t)
(gnus-picons-next-job-internal)))
(provide 'gnus-picon)
(if (and (or (eq t unreads)
(and unreads (not (zerop unreads))))
(gnus-summary-read-group
- target-group nil no-article current-buffer))
+ target-group nil no-article
+ (and (buffer-name current-buffer) current-buffer)))
(setq entered t)
(setq current-group target-group
target-group nil)))))))
"Search for an article containing REGEXP.
Optional argument BACKWARD means do search for backward.
`gnus-select-article-hook' is not called during the search."
+ ;; We have to require this here to make sure that the following
+ ;; dynamic binding isn't shadowed by autoloading.
+ (require 'gnus-asynch)
(let ((gnus-select-article-hook nil) ;Disable hook.
(gnus-article-display-hook nil)
(gnus-mark-article-hook nil) ;Inhibit marking as read.
(defvar gnus-topic-killed-topics nil)
(defvar gnus-topic-inhibit-change-level nil)
-(defvar gnus-topic-tallied-groups nil)
(defconst gnus-topic-line-format-alist
`((?n name ?s)
(let ((buffer-read-only nil)
(lowest (or lowest 1)))
- (setq gnus-topic-tallied-groups nil)
-
(when (or (not gnus-topic-alist)
(not gnus-topology-checked-p))
(gnus-topic-check-topology))
(gnus-info-level info) (gnus-info-marks info)
(car entry) (gnus-info-method info)))))
(when (and (listp entry)
- (numberp (car entry))
- (not (member (gnus-info-group (setq info (nth 2 entry)))
- gnus-topic-tallied-groups)))
- (push (gnus-info-group info) gnus-topic-tallied-groups)
+ (numberp (car entry)))
(incf unread (car entry)))
(when (listp entry)
(setq tick t)))
(setq gnus-topic-active-topology nil
gnus-topic-active-alist nil
gnus-topic-killed-topics nil
- gnus-topic-tallied-groups nil
gnus-topology-checked-p nil))
(defun gnus-topic-check-topology ()
"\C-i" gnus-topic-indent
[tab] gnus-topic-indent
"r" gnus-topic-rename
- "\177" gnus-topic-delete)
+ "\177" gnus-topic-delete
+ "h" gnus-topic-toggle-display-empty-topics)
(gnus-define-keys (gnus-topic-sort-map "S" gnus-group-topic-map)
"s" gnus-topic-sort-groups
["Rename" gnus-topic-rename t]
["Create" gnus-topic-create-topic t]
["Mark" gnus-topic-mark-topic t]
- ["Indent" gnus-topic-indent t])
+ ["Indent" gnus-topic-indent t]
+ ["Toggle hide empty" gnus-topic-toggle-display-empty-topics t])
["List active" gnus-topic-list-active t]))))
(defun gnus-topic-mode (&optional arg redisplay)
gnus-killed-list gnus-zombie-list)
(gnus-group-list-groups 9 nil 1)))
+(defun gnus-topic-toggle-display-empty-topics ()
+ "Show/hide topics that have no unread articles."
+ (interactive)
+ (setq gnus-topic-display-empty-topics
+ (not gnus-topic-display-empty-topics))
+ (message "%s empty topics"
+ (if gnus-topic-display-empty-topics
+ "Showing" "Hiding")))
+
;;; Topic sorting functions
(defun gnus-topic-edit-parameters (group)
(unless gnus-xemacs
(let* ((overlayss (overlay-lists))
(buffer-read-only nil)
- (overlays (nconc (car overlayss) (cdr overlayss))))
+ (overlays (delq nil (nconc (car overlayss) (cdr overlayss)))))
(while overlays
(delete-overlay (pop overlays))))))
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "5.4.52"
+(defconst gnus-version-number "5.4.53"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
(let ((name (make-temp-name
(expand-file-name
(concat (file-name-as-directory message-autosave-directory)
- "msg.")))))
+ "msg." (buffer-name))))))
(setq buffer-auto-save-file-name
(save-excursion
(prog1
(when group
(unless (assoc group nnfolder-group-alist)
(push (list group (cons 1 0)) nnfolder-group-alist)
- (nnmail-save-active nnfolder-group-alist nnfolder-active-file)))
+ (nnmail-save-active nnfolder-group-alist nnfolder-active-file)
+ (nnfolder-read-folder group)))
t)
(deffoo nnfolder-request-list (&optional server)
;; See whether the split methods returned `junk'.
(if (equal group-art '(junk))
nil
- (nreverse (delq 'junk group-art)))))))
+ ;; The article may be "cross-posted" to `junk'. What
+ ;; to do? Just remove the `junk' spec. Don't really
+ ;; see anything else to do...
+ (nreverse (delq (assq 'junk group-art) group-art)))))))
(defun nnmail-insert-lines ()
"Insert how many lines there are in the body of the mail.
(replace-match "\\1 " t)
(forward-line 1))
(when (re-search-forward "\n\n+" nil t)
- (replace-match "\n" t t))))
+ (replace-match "\n" t t))
+ (goto-char (point-min))
+ (when (search-forward "[More Headers]" nil t)
+ (replace-match "" t t))))
(defun nnweb-dejanews-search (search)
(nnweb-fetch-form
+Sun May 18 05:59:24 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.texi (Topic Commands): Addition.
+
+Sun May 11 20:09:24 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.texi (Article Hiding): Change.
+
Thu May 8 23:48:36 1997 James Troup <J.J.Troup@comp.brad.ac.uk>
* gnus.texi (Saving Articles): Typo.
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Gnus 5.4.52 Manual
+@settitle Gnus 5.4.53 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Gnus 5.4.52 Manual
+@title Gnus 5.4.53 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Gnus 5.4.52.
+This manual corresponds to Gnus 5.4.53.
@end ifinfo
If the group parameter has an element that looks like
@code{(total-expire . t)}, all read articles will be put through the
expiry process, even if they are not marked as expirable. Use with
-caution.
+caution. Unread, ticked and dormant articles are not eligible for
+expiry.
@item expiry-wait
@cindex expiry-wait
@item F
@kindex F (Group)
-@findex gnus-find-new-newsgroups
-Find new groups and process them (@code{gnus-find-new-newsgroups}). If
-given a prefix, use the @code{ask-server} method to query the server for
-new groups.
+@findex gnus-group-find-new-groups
+Find new groups and process them (@code{gnus-group-find-new-groups}).
+If given a prefix, use the @code{ask-server} method to query the server
+for new groups.
@item C-c C-x
@kindex C-c C-x (Group)
Copy all groups that match some regular expression to a topic
(@code{gnus-topic-copy-matching}).
+@item T h
+@kindex T h (Topic)
+@findex gnus-topic-toggle-display-empty-topics
+Toggle hiding empty topics
+(@code{gnus-topic-toggle-display-empty-topics}).
+
@item T #
@kindex T # (Topic)
@findex gnus-topic-mark-topic
@item W W p
@kindex W W p (Summary)
@findex gnus-article-hide-pgp
-Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}).
+@vindex gnus-article-hide-pgp-hook
+Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). The
+@code{gnus-article-hide-pgp-hook} hook will be run after a @sc{pgp}
+signature has been hidden.
@item W W P
@kindex W W P (Summary)
@findex gnus-demon-add-handler
@lisp
-(gnus-demon-add-handler 'gnus-demon-close-connections nil 30)
+(gnus-demon-add-handler 'gnus-demon-close-connections 30 t)
@end lisp
@findex gnus-demon-add-nocem
@findex gnus-demon-add-scanmail
@findex gnus-demon-add-rescan
+@findex gnus-demon-add-scan-timestamps
@findex gnus-demon-add-disconnection
Some ready-made functions to do this has been created:
@code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection},
-@code{gnus-demon-add-rescan}, and @code{gnus-demon-add-scanmail}. Just
-put those functions in your @file{.gnus} if you want those abilities.
+@code{gnus-demon-add-scan-timestamps}, @code{gnus-demon-add-rescan}, and
+@code{gnus-demon-add-scanmail}. Just put those functions in your
+@file{.gnus} if you want those abilities.
@findex gnus-demon-init
@findex gnus-demon-cancel
Wes Hardaker---@file{gnus-picon.el} and the manual section on
@dfn{picons} (@pxref{Picons}).
+@item
+Kim-Minh Kaplan---further work on the picon code.
+
@item
Brad Miller---@file{gnus-gl.el} and the GroupLens manual section
(@pxref{GroupLens}).
Rajappa Iyer,
Randell Jesup,
Fred Johansen,
-Kim-Minh Kaplan,
Greg Klanderman,
Karl Kleinpaste,
Peter Skov Knudsen,
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 5.4.52 Manual
+@settitle Message 5.4.53 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Message 5.4.52 Manual
+@title Message 5.4.53 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 5.4.52. Message is distributed with
+This manual corresponds to Message 5.4.53. Message is distributed with
the Gnus distribution bearing the same version number as this manual
has.
* gnus-summary-save-in-pipe should concatenate the results from
the processes when doing a process marked pipe.
+
+* a new match type, like Followup, but which adds Thread matches on all
+articles that match a certain From header.
+
+* a function that can be read from kill-emacs-query-functions to offer
+saving living summary buffers.
+
+* a function for selecting a particular group which will contain
+the articles listed in a list of article numbers/id's.
\ No newline at end of file