[gnu.emacs.gnus] 2 gnus questions

rusty@garnet.berkeley.edu (06/02/89)

1) After I've read all of the articles in a newsgroup and then quit
gnus, if I then go back to that newsgroup there doesn't seem to be any
way to go to the previous articles.  Is there some way that I don't
know about?

2) Articles with form feeds (^L) in them are displayed strangely (I
would say incorrectly).  In the mode line it says

	(GNUS Article)----All

and there's usually lots of vertical blank space because of the form
feed.  At first I thought it was a truncated article and was hitting
the "n" key to go to the next article but one day I hit the space bar
and discovered that there was more to the article.  Is there any way
to turn off this behavior?  I would think that the default would be
for it to be off so as to not confuse the unwary or that it should
somehow display something to let you know that there really is more.
I don't consider the *MORE* in the article to be sufficient; I was
assuming that the poster had put that in the article and then the rest
of the article had been truncated.  Perhaps just fixing the mode line
would be sufficient.
--

--------------------------------------
	rusty c. wright
	rusty@violet.berkeley.edu ucbvax!violet!rusty

tale@pawl.rpi.edu (David C Lawrence) (06/02/89)

1) Try C-u G in the *Subject* buffer.

2) The articles with the page breaks/form feeds are not really all
that strange.  It is a long-standing tradition for news readers to
note that an article has a C-l so that the reader can pause there
(presumably keeping spoilers or lengthy articles at bay).  I rather
suspect you knew that, but suggesting it not narrow-to-page just isn't
appropriate given the history.

If you were to use the following mode-line stuff, only some of which
Masonobu has incorporated so far, you would get better behaviour (in
my opinion) regarding the mode-line percentages.  Even when narrowed
to page, it will tell you how much of the article has been displayed
before the end of the current page.  That is, in a standard sized
window with an article ~35 lines long, it will say ~50% while looking
at the first page.  There are some holes that make things so that the
modeline is not updated under certain circumstances, but it is correct
in most standard newsreading circumstances.  (Examples of where it can
go wrong: say you did a follow-up.  Now your window sizes have changed
but the function which sets the percentage hasn't been called so it is
inaccurate.)

--cut--
;;; From gnus-etc.el -- suggestions to tale@pawl.rpi.edu
;;; mode-line stuff
(defun gnus-Article-set-percent (&optional new-article)
  "Set gnus-Article-head-to-window-bottom as a string which represents the
percentage of total Article lines that are before the bottom of the window.
Also forces mode-line update.  Optional NEW-ARTICLE is necessary when a new
article is selected."
  (save-excursion
    (save-restriction
      (setq gnus-Article-head-to-window-bottom
            (if new-article
                (progn
                  (vertical-motion (- (screen-height)
                                      gnus-subject-lines-height 3))
                  ;; The next bit is in case the last real line is
                  ;; (will be) visible on the screen.
                  (move-to-column (- (screen-width) 3))
                  (if (not (eobp)) (forward-char 1))
                  ;; Might only be at end-of-page
                  (widen)
                  (if (eobp) "All"
                    (concat (/ (* 100 (count-lines (point-min) (point)))
                               (count-lines (point-min) (point-max))) "%")))
              (move-to-window-line (- (window-height) 2))
              ;; Same deal as above
              (move-to-column (- (window-width) 3))
              (if (not (eobp)) (forward-char 1))
              ;; Might only be at end-of-page
              (widen)
              (if (eobp) "Bot"
                (concat (/ (* 100 (count-lines (point-min) (point)))
                           (count-lines (point-min) (point-max))) "%"))))))
  (set-buffer-modified-p t))

(defun gnus-Article-set-mode-line ()
  "Set Article mode line string."
  (setq mode-line-buffer-identification
        (list 17
              (format "GNUS: %s  %s"
                      gnus-newsgroup-name
                      (let ((unmarked (length (gnus-set-difference
                                               gnus-newsgroup-unreads
                                               gnus-newsgroup-marked))))
                        (if (zerop unmarked) "      "
                          (concat unmarked " more"))))))
  ;; Even if we did this when narrowing to page, do it again as a
  ;; new article.
  (gnus-Article-set-percent 1)
  (set-buffer-modified-p t))

(defun gnus-Article-next-page (lines)
  "Show next page of current article.
If end of article, return non-nil. Otherwise return nil.
Argument LINES specifies lines to be scrolled up."
  (interactive "P")
  (move-to-window-line -1)
  (if (eobp)
      (if (or (not gnus-break-pages)
              (string-match "All\\|Bot" gnus-Article-head-to-window-bottom)
              (save-restriction (widen) (eobp))) ;Real end-of-buffer?
          t
        (gnus-narrow-to-page 1)         ;Go to next page.
        nil)
    (if (string-match "All\\|Bot" gnus-Article-head-to-window-bottom) t
      (scroll-up lines)
      (gnus-Article-set-percent)
      nil)))

(defun gnus-Article-prev-page (lines)
  "Show previous page of current article.
Argument LINES specifies lines to be scrolled down."
  (interactive "P")
  (move-to-window-line 0)
  (if (and gnus-break-pages
           (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)
    (gnus-Article-set-percent)))

(or (fboundp 'original-gnus-narrow-to-page)
    (fset 'original-gnus-narrow-to-page
          (symbol-function 'gnus-narrow-to-page)))

(defun gnus-narrow-to-page (&optional arg)
  "Make text outside current page invisible except for page delimiter.
A numeric arg specifies to move forward or backward by that many pages,
thus showing a page other than the one point was originally in.
NOTE: This function has been modified to also update the Article buffer
mode-line after narrowing."
  (interactive "P")
  (setq arg (if arg (prefix-numeric-value arg) 0))
  (original-gnus-narrow-to-page arg)
  (gnus-Article-set-percent))

Dave
--
 (setq mail '("tale@pawl.rpi.edu" "tale@itsgw.rpi.edu" "tale@rpitsmts.bitnet"))

umerin@photon.stars.flab.fujitsu.junet (Masanobu UMEDA) (06/15/89)

   Date: 2 Jun 89 00:41:37 GMT
   From: rusty%agate@ucbvax.berkeley.edu

   1) After I've read all of the articles in a newsgroup and then quit
   gnus, if I then go back to that newsgroup there doesn't seem to be any
   way to go to the previous articles.  Is there some way that I don't
   know about?

Try typing SPC or = with a prefix argument:

	C-u SPC or C-u =

To display invisible newsgroups, type L in the Newsgroup buffer.

lotto@nsf1.mth.msu.edu (Ben Lotto) (06/16/89)

It would be nice to be able to hit "P" in the *Subject* window when the
current article is the first one and get the article just previous to
that.  In other words, if you call up some group and get articles
997-1023, when looking at article 997 you should be able to hit "P" and
get article 996.  Since "^" works, I imagine putting in this feature
wouldn;t be too hard.
--

-B. A. Lotto  (ben@ulrich.mth.msu.edu)
Department of Mathematics/Michigan State University/East Lansing, MI  48824