jeff1@garfield.MUN.EDU (Jeff Sparkes) (07/18/89)
Here's another version of my hacks to subject mode. This one doesn't
need to be loaded multiple times.
Basic operation: in the subject buffer, C-k kills a subjects, C-i marks
it as interesting (with an I). When you hit ".", all the "I"'s are removed
and you read only those articles.
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
# gnus-jds.el
# This archive created: Tue Jul 18 13:28:21 1989
export PATH; PATH=/bin:$PATH
if test -f 'gnus-jds.el'
then
echo shar: will not over-write existing file "'gnus-jds.el'"
else
cat << \SHAR_EOF > 'gnus-jds.el'
; Mark interesting articles in GNUS subject mode.
; Jeff Sparkes, Memorial University of Newfoundland, jeff1@garfield.mun.edu
; July 18, 1989
; Distributable under the GNU General Public License
(provide 'gnus-jds)
(defvar gnus-jds-version "0.2" "Version number for patches")
(defvar gnus-interest nil "Have any articles been marked as interesting?")
; Change: call original hook before? mine
(setq gnus-Startup-hook
'(lambda ()
(define-key gnus-Subject-mode-map "\C-I" 'gnus-Subject-interesting-subject)
(fset 'gnus-Subject-display-article 'gnus-jds-Subject-display-article)
(fset 'gnus-Subject-first-unread-article
'gnus-jds-Subject-first-unread-article)
))
(defun gnus-Subject-interesting-subject ()
"Mark articles with this subject as interesting."
(interactive)
(gnus-Subject-mark-as-read nil "I")
(save-excursion
(let ((subject (gnus-Subject-subject-string)))
(while (gnus-Subject-search-forward nil subject)
(gnus-Subject-mark-as-read nil "I"))
))
(gnus-Subject-next-subject 1 t)
(setq gnus-interest t)
)
(defun gnus-Subject-mark-interesting ()
"Find all interesting subjects (marked with \"I\") and mark them as unread."
(save-excursion
; Note: we are called from display-article, and are in Subject-buffer
(goto-char (point-min))
(let ((end (point-max)))
(while (re-search-forward "^I" end t)
(gnus-Subject-mark-as-unread nil t)))
))
; A modified version that mark all interesting articles (marked with "I")
; as unread if necessary
(defun gnus-jds-Subject-display-article (article &optional all-header)
"Display ARTICLE in Article buffer."
(if (null article)
nil
(gnus-configure-windows 'SelectArticle)
(pop-to-buffer gnus-Subject-buffer)
(if gnus-interest
(gnus-Subject-mark-interesting))
(gnus-Article-prepare article all-header)
(gnus-Subject-recenter)
(gnus-Subject-set-mode-line)
(run-hooks 'gnus-Select-article-hook)
;; Successfully display article.
t
))
(defun gnus-jds-Subject-first-unread-article ()
"Select first unread article. Return non-nil if successfully selected."
(interactive)
(if gnus-interest
(gnus-Subject-mark-interesting))
(let ((begin (point)))
(goto-char (point-min))
(if (re-search-forward "^ [ \t]+[0-9]+:" nil t)
(gnus-Subject-display-article (gnus-Subject-article-number))
;; If there is no unread articles, stay there.
(goto-char begin)
;;(gnus-Subject-display-article (gnus-Subject-article-number))
(message "No more unread articles")
nil
)
))
SHAR_EOF
fi # end of overwriting check
# End of shell archive
exit 0
--
Jeff Sparkes jeff1@garfield.mun.edu || uunet!garfield!jeff1