*** pub/rgnus/lisp/gnus-art.el Sat May 10 00:45:56 1997 --- rgnus/lisp/gnus-art.el Sun May 18 07:37:33 1997 *************** *** 395,400 **** --- 395,405 ---- :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. *************** *** 964,970 **** (while (re-search-forward "^- " nil t) (gnus-article-hide-text-type (match-beginning 0) (match-end 0) 'pgp)) ! (widen)))))) (defun article-hide-pem (&optional arg) "Toggle hiding of any PEM headers and signatures in the current article. --- 969,976 ---- (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)))) (defun article-hide-pem (&optional arg) "Toggle hiding of any PEM headers and signatures in the current article. *************** *** 1130,1137 **** (setq buf (buffer-string)))) (when buf (delete-region (point-min) (point-max)) ! (insert buf) ! (kill-buffer buf)) (widen) (goto-char (point-min)) (set-window-start (get-buffer-window (current-buffer)) (point-min)) --- 1136,1142 ---- (setq buf (buffer-string)))) (when buf (delete-region (point-min) (point-max)) ! (insert buf)) (widen) (goto-char (point-min)) (set-window-start (get-buffer-window (current-buffer)) (point-min)) *** pub/rgnus/lisp/gnus-group.el Sat Apr 19 06:12:50 1997 --- rgnus/lisp/gnus-group.el Sun May 18 07:37:34 1997 *************** *** 444,450 **** "r" gnus-group-read-init-file "B" gnus-group-browse-foreign-server "b" gnus-group-check-bogus-groups ! "F" gnus-find-new-newsgroups "\C-c\C-d" gnus-group-describe-group "\M-d" gnus-group-describe-all-groups "\C-c\C-a" gnus-group-apropos --- 444,450 ---- "r" gnus-group-read-init-file "B" gnus-group-browse-foreign-server "b" gnus-group-check-bogus-groups ! "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 *************** *** 689,695 **** ["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] ["Transpose" gnus-group-transpose-groups (gnus-group-group-name)] ["Read a directory as a group..." gnus-group-enter-directory t])) --- 689,695 ---- ["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-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])) *************** *** 3088,3093 **** --- 3088,3102 ---- (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." *** pub/rgnus/lisp/gnus-picon.el Thu May 8 17:41:28 1997 --- rgnus/lisp/gnus-picon.el Sun May 18 07:37:34 1997 *************** *** 23,31 **** ;;; Commentary: - ;;; TODO: - ;; See the comment in gnus-picons-remove - ;;; Code: (require 'gnus) --- 23,28 ---- *************** *** 45,61 **** 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-database "/usr/local/faces" "Defines the location of the faces database. For information on obtaining this database of pretty pictures, please --- 42,59 ---- also add gnus-article-display-picons to gnus-article-display-hook." :group 'gnus-visual) (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 *************** *** 63,72 **** :type 'directory :group 'picons) ! (defcustom gnus-picons-news-directory "news" "Sub-directory of the faces database containing the icons for newsgroups." ! :type 'string :group 'picons) (defcustom gnus-picons-user-directories '("local" "users" "usenix" "misc") "List of directories to search for user faces." --- 61,72 ---- :type 'directory :group 'picons) ! (defcustom gnus-picons-news-directories '("news") "Sub-directory of the faces database containing the icons for newsgroups." ! :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." *************** *** 152,165 **** (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. --- 152,162 ---- *************** *** 173,209 **** ;;; 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) ;; 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))) (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))) (defun gnus-get-buffer-name (variable) "Returns the buffer name associated with the contents of a variable." --- 170,196 ---- ;;; Functions: (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." ! (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)))) (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)) (defun gnus-get-buffer-name (variable) "Returns the buffer name associated with the contents of a variable." *************** *** 214,219 **** --- 201,222 ---- ((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 *************** *** 221,239 **** ;; 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-remove annotations)) (defun gnus-picons-article-display-x-face () "Display the x-face header bitmap in the 'gnus-picons-display-where buffer." ;; delete any old ones. --- 224,237 ---- ;; let drawing catch up (when gnus-picons-refresh-before-display (sit-for 0)) ! (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. *************** *** 265,271 **** (save-excursion (gnus-picons-prepare-for-annotations 'gnus-x-face-annotations) (setq gnus-x-face-annotations ! (cons (make-annotation (vector 'xface :data (concat "X-Face: " (buffer-substring beg end buf))) --- 263,269 ---- (save-excursion (gnus-picons-prepare-for-annotations 'gnus-x-face-annotations) (setq gnus-x-face-annotations ! (cons (gnus-picons-make-annotation (vector 'xface :data (concat "X-Face: " (buffer-substring beg end buf))) *************** *** 276,282 **** (annot (save-excursion (gnus-picons-prepare-for-annotations 'gnus-x-face-annotations) ! (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) --- 274,280 ---- (annot (save-excursion (gnus-picons-prepare-for-annotations 'gnus-x-face-annotations) ! (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) *************** *** 306,323 **** (message-tokenize-header (substring from (1+ at-idx)) ".")))) (gnus-picons-prepare-for-annotations 'gnus-article-annotations) (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)) "." t) (if (and gnus-picons-display-as-address addrs) ! (list (make-annotation [string :data "@"] nil ! 'text nil nil nil t))) (gnus-picons-display-picon-or-name (gnus-picons-lookup-user username addrs) username t))) --- 304,326 ---- (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) ! gnus-picons-display-as-address "." t) (if (and gnus-picons-display-as-address addrs) ! (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))) *************** *** 340,352 **** (gnus-picons-display-pairs (gnus-picons-lookup-pairs (reverse (message-tokenize-header gnus-newsgroup-name ".")) ! gnus-picons-news-directory) 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)) nil) gnus-picons-jobs-alist) (gnus-picons-next-job)) --- 343,355 ---- (gnus-picons-display-pairs (gnus-picons-lookup-pairs (reverse (message-tokenize-header gnus-newsgroup-name ".")) ! gnus-picons-news-directories) t ".")) (push (list 'gnus-group-annotations 'search nil (message-tokenize-header gnus-newsgroup-name ".") ! (if (listp gnus-picons-news-directories) ! gnus-picons-news-directories ! (list gnus-picons-news-directories)) nil) gnus-picons-jobs-alist) (gnus-picons-next-job)) *************** *** 404,443 **** (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 (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)) pair picons) (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))) (gnus-picons-display-picon-or-name (car pair) (cadr pair) right-p) ! (if (and domain-p pairs right-p) ! (list (make-annotation (vector 'string :data dot-p) ! nil 'text nil nil nil right-p))) ! (when (and bar domain-p) ! (setq bar nil) (gnus-picons-display-glyph (gnus-picons-try-face gnus-xmas-glyph-directory "bar.") ! nil t)) ! picons))) picons)) (defun gnus-picons-try-face (dir &optional filebase) --- 407,442 ---- (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 (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 ((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 picons (gnus-picons-display-picon-or-name (car pair) (cadr pair) right-p) ! (if (and domain-p pairs) ! (list (gnus-picons-make-annotation (vector 'string :data dot-p) ! 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 right-p)))) picons)) (defun gnus-picons-try-face (dir &optional filebase) *************** *** 456,462 **** glyph)) (defun gnus-picons-display-glyph (glyph &optional part rightp) ! (let ((new (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)))) --- 455,462 ---- glyph)) (defun gnus-picons-display-glyph (glyph &optional part 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)))) *************** *** 466,473 **** (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)))))) (defun gnus-picons-action-toggle (data) "Toggle annotation" --- 466,473 ---- (if (and (eq major-mode 'gnus-article-mode) (not gnus-picons-display-as-address) (not part)) ! (list (gnus-picons-make-annotation [string :data " "] (point) ! 'text nil nil nil rightp)))))) (defun gnus-picons-action-toggle (data) "Toggle annotation" *************** *** 480,486 **** (defun gnus-picons-clear-cache () "Clear the picons cache" (interactive) ! (setq gnus-picons-glyph-alist nil)) (gnus-add-shutdown 'gnus-picons-close 'gnus) --- 480,487 ---- (defun gnus-picons-clear-cache () "Clear the picons cache" (interactive) ! (setq gnus-picons-glyph-alist nil ! gnus-picons-url-alist nil)) (gnus-add-shutdown 'gnus-picons-close 'gnus) *************** *** 497,510 **** (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)) (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)) --- 498,510 ---- (defun gnus-picons-url-retrieve (url fn arg) (let ((old-asynch (default-value 'url-be-asynchronous)) (url-working-buffer (generate-new-buffer " *picons*")) (url-package-name "Gnus") ! (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-current-callback-data arg url-current-callback-func fn) (url-retrieve url t)) *************** *** 588,595 **** ;;; 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))) (set sym-ann (nconc (symbol-value sym-ann) (gnus-picons-display-picon-or-name glyph part right-p))) (gnus-picons-next-job-internal)) --- 588,594 ---- ;;; picon network display functions : (defun gnus-picons-network-display-internal (sym-ann glyph part right-p) ! (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)) *************** *** 599,605 **** 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))) (defun gnus-picons-network-display (url part sym-ann right-p) (let ((cache (assoc url gnus-picons-glyph-alist))) --- 598,608 ---- w3-image-mappings))))) (kill-buffer (current-buffer)) (push (cons url glyph) gnus-picons-glyph-alist) ! ;; 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))) *************** *** 665,672 **** (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)) (gnus-picons-next-job-internal))) (defun gnus-picons-network-search-callback (user addrs dbs sym-ann right-p) --- 668,683 ---- (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)) ! (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) *************** *** 696,726 **** (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)) (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 '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))) (defun gnus-picons-next-job () ! "Start processing the job queue." (unless gnus-picons-job-already-running - (setq gnus-picons-job-already-running t) (gnus-picons-next-job-internal))) (provide 'gnus-picon) --- 707,739 ---- (gnus-picons-network-search-internal user addrs dbs sym-ann right-p)))) ;;; Main jobs dispatcher function (defun gnus-picons-next-job-internal () ! (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 (setq gnus-picons-job-already-running nil) ! (error "Unknown picon job tag %s" tag))))))) (defun gnus-picons-next-job () ! "Start processing the job queue if it is not in progress" (unless gnus-picons-job-already-running (gnus-picons-next-job-internal))) (provide 'gnus-picon) *** pub/rgnus/lisp/gnus-sum.el Sat May 10 00:45:57 1997 --- rgnus/lisp/gnus-sum.el Sun May 18 07:37:35 1997 *************** *** 5145,5151 **** (if (and (or (eq t unreads) (and unreads (not (zerop unreads)))) (gnus-summary-read-group ! target-group nil no-article current-buffer)) (setq entered t) (setq current-group target-group target-group nil))))))) --- 5145,5152 ---- (if (and (or (eq t unreads) (and unreads (not (zerop unreads)))) (gnus-summary-read-group ! target-group nil no-article ! (and (buffer-name current-buffer) current-buffer))) (setq entered t) (setq current-group target-group target-group nil))))))) *************** *** 6331,6336 **** --- 6332,6340 ---- "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. *** pub/rgnus/lisp/gnus-topic.el Sat May 10 00:45:57 1997 --- rgnus/lisp/gnus-topic.el Sun May 18 07:37:36 1997 *************** *** 77,83 **** (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) --- 77,82 ---- *************** *** 362,369 **** (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)) --- 361,366 ---- *************** *** 439,448 **** (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) (incf unread (car entry))) (when (listp entry) (setq tick t))) --- 436,442 ---- (gnus-info-level info) (gnus-info-marks info) (car entry) (gnus-info-method info))))) (when (and (listp entry) ! (numberp (car entry))) (incf unread (car entry))) (when (listp entry) (setq tick t))) *************** *** 648,654 **** (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 () --- 642,647 ---- *************** *** 900,906 **** "\C-i" gnus-topic-indent [tab] gnus-topic-indent "r" gnus-topic-rename ! "\177" gnus-topic-delete) (gnus-define-keys (gnus-topic-sort-map "S" gnus-group-topic-map) "s" gnus-topic-sort-groups --- 893,900 ---- "\C-i" gnus-topic-indent [tab] gnus-topic-indent "r" gnus-topic-rename ! "\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 *************** *** 930,936 **** ["Rename" gnus-topic-rename t] ["Create" gnus-topic-create-topic t] ["Mark" gnus-topic-mark-topic t] ! ["Indent" gnus-topic-indent t]) ["List active" gnus-topic-list-active t])))) (defun gnus-topic-mode (&optional arg redisplay) --- 924,931 ---- ["Rename" gnus-topic-rename t] ["Create" gnus-topic-create-topic t] ["Mark" gnus-topic-mark-topic 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) *************** *** 1304,1309 **** --- 1299,1313 ---- (gnus-topic-alist gnus-topic-active-alist) 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 *** pub/rgnus/lisp/gnus-util.el Sun Apr 6 21:51:40 1997 --- rgnus/lisp/gnus-util.el Sun May 18 07:37:36 1997 *************** *** 528,534 **** (unless gnus-xemacs (let* ((overlayss (overlay-lists)) (buffer-read-only nil) ! (overlays (nconc (car overlayss) (cdr overlayss)))) (while overlays (delete-overlay (pop overlays)))))) --- 528,534 ---- (unless gnus-xemacs (let* ((overlayss (overlay-lists)) (buffer-read-only nil) ! (overlays (delq nil (nconc (car overlayss) (cdr overlayss))))) (while overlays (delete-overlay (pop overlays)))))) *** pub/rgnus/lisp/gnus.el Sat May 10 00:45:58 1997 --- rgnus/lisp/gnus.el Sun May 18 07:37:36 1997 *************** *** 226,232 **** :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "5.4.52" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) --- 226,232 ---- :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "5.4.53" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) *** pub/rgnus/lisp/message.el Thu May 8 17:41:31 1997 --- rgnus/lisp/message.el Sun May 18 07:37:37 1997 *************** *** 2968,2974 **** (let ((name (make-temp-name (expand-file-name (concat (file-name-as-directory message-autosave-directory) ! "msg."))))) (setq buffer-auto-save-file-name (save-excursion (prog1 --- 2968,2974 ---- (let ((name (make-temp-name (expand-file-name (concat (file-name-as-directory message-autosave-directory) ! "msg." (buffer-name)))))) (setq buffer-auto-save-file-name (save-excursion (prog1 *** pub/rgnus/lisp/nnfolder.el Sat May 10 00:45:58 1997 --- rgnus/lisp/nnfolder.el Sun May 18 07:37:37 1997 *************** *** 276,282 **** (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))) t) (deffoo nnfolder-request-list (&optional server) --- 276,283 ---- (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) ! (nnfolder-read-folder group))) t) (deffoo nnfolder-request-list (&optional server) *** pub/rgnus/lisp/nnmail.el Sun Apr 27 12:40:57 1997 --- rgnus/lisp/nnmail.el Sun May 18 07:37:38 1997 *************** *** 1082,1088 **** ;; See whether the split methods returned `junk'. (if (equal group-art '(junk)) nil ! (nreverse (delq 'junk group-art))))))) (defun nnmail-insert-lines () "Insert how many lines there are in the body of the mail. --- 1082,1091 ---- ;; See whether the split methods returned `junk'. (if (equal group-art '(junk)) nil ! ;; 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. *** pub/rgnus/lisp/nnweb.el Sun Apr 27 12:40:58 1997 --- rgnus/lisp/nnweb.el Sun May 18 07:37:38 1997 *************** *** 441,447 **** (replace-match "\\1 " t) (forward-line 1)) (when (re-search-forward "\n\n+" nil t) ! (replace-match "\n" t t)))) (defun nnweb-dejanews-search (search) (nnweb-fetch-form --- 441,450 ---- (replace-match "\\1 " t) (forward-line 1)) (when (re-search-forward "\n\n+" nil 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 *** pub/rgnus/lisp/ChangeLog Sat May 10 00:45:55 1997 --- rgnus/lisp/ChangeLog Sun May 18 07:37:33 1997 *************** *** 1,3 **** --- 1,85 ---- + Sun May 18 07:35:43 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.53 is released. + + Sun May 18 06:20:57 1997 Lars Magne Ingebrigtsen + + * 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 + + * 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 + + * gnus-topic.el (gnus-topic-toggle-display-empty-topics): New + function. + + Sun May 18 05:52:59 1997 Lars Magne Ingebrigtsen + + * nnfolder.el (nnfolder-request-create-group): Read folder. + + Sat May 17 22:45:07 1997 Lars Magne Ingebrigtsen + + * 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 + + * 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 * gnus.el: Gnus v5.4.52 is released. *** pub/rgnus/texi/gnus.texi Sat May 10 00:46:00 1997 --- rgnus/texi/gnus.texi Sun May 18 07:37:40 1997 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Gnus 5.4.52 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Gnus 5.4.53 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 287,293 **** @tex @titlepage ! @title Gnus 5.4.52 Manual @author by Lars Magne Ingebrigtsen @page --- 287,293 ---- @tex @titlepage ! @title Gnus 5.4.53 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 323,329 **** 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. @end ifinfo --- 323,329 ---- spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Gnus 5.4.53. @end ifinfo *************** *** 1944,1950 **** 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. @item expiry-wait @cindex expiry-wait --- 1944,1951 ---- 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. Unread, ticked and dormant articles are not eligible for ! expiry. @item expiry-wait @cindex expiry-wait *************** *** 2272,2281 **** @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. @item C-c C-x @kindex C-c C-x (Group) --- 2273,2282 ---- @item F @kindex F (Group) ! @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) *************** *** 2550,2555 **** --- 2551,2562 ---- 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 *************** *** 5860,5866 **** @item W W p @kindex W W p (Summary) @findex gnus-article-hide-pgp ! Hide @sc{pgp} signatures (@code{gnus-article-hide-pgp}). @item W W P @kindex W W P (Summary) --- 5867,5876 ---- @item W W p @kindex W W p (Summary) @findex 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) *************** *** 13039,13055 **** @findex gnus-demon-add-handler @lisp ! (gnus-demon-add-handler 'gnus-demon-close-connections nil 30) @end lisp @findex gnus-demon-add-nocem @findex gnus-demon-add-scanmail @findex gnus-demon-add-rescan @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. @findex gnus-demon-init @findex gnus-demon-cancel --- 13049,13067 ---- @findex gnus-demon-add-handler @lisp ! (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-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 *************** *** 13996,14001 **** --- 14008,14016 ---- 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}). *************** *** 14104,14110 **** Rajappa Iyer, Randell Jesup, Fred Johansen, - Kim-Minh Kaplan, Greg Klanderman, Karl Kleinpaste, Peter Skov Knudsen, --- 14119,14124 ---- *** pub/rgnus/texi/message.texi Sat May 10 00:46:01 1997 --- rgnus/texi/message.texi Sun May 18 07:37:40 1997 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Message 5.4.52 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Message 5.4.53 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 39,45 **** @tex @titlepage ! @title Message 5.4.52 Manual @author by Lars Magne Ingebrigtsen @page --- 39,45 ---- @tex @titlepage ! @title Message 5.4.53 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 79,85 **** * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Message 5.4.52. Message is distributed with the Gnus distribution bearing the same version number as this manual has. --- 79,85 ---- * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Message 5.4.53. Message is distributed with the Gnus distribution bearing the same version number as this manual has. *** pub/rgnus/texi/ChangeLog Sat May 10 00:46:01 1997 --- rgnus/texi/ChangeLog Sun May 18 07:37:40 1997 *************** *** 1,3 **** --- 1,11 ---- + Sun May 18 05:59:24 1997 Lars Magne Ingebrigtsen + + * gnus.texi (Topic Commands): Addition. + + Sun May 11 20:09:24 1997 Lars Magne Ingebrigtsen + + * gnus.texi (Article Hiding): Change. + Thu May 8 23:48:36 1997 James Troup * gnus.texi (Saving Articles): Typo.