🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

3 total messages Started by Doug Acker Sat, 12 Dec 1992 05:03
gnus bug
#550
Author: Doug Acker
Date: Sat, 12 Dec 1992 05:03
16 lines
1265 bytes
I'm  using  gnus to read news ...... I changed my window configuration
to  5  lines,  so  I  can  use  cntrl-V to scroll through unintersting
subject lines ... and then I use cntrl-N to get to the  subject  I  am
intersted in and hit space to read the article ... and continue.

This works about 80% of  the  time  ..  sometimes  after  reading  the
article, it takes me back to the nex unread article at the top of  the
display ... this is a pain ... I then have to scroll subjects back  to
where I am ... any fix?
-- 
Douglas L.Acker                Western Geophysical Exploration Products
____    ____     ____          a division of Western Atlas International Inc.
\   \  /   /\   /   /\         A Litton / Dresser Company
 \   \/   /  \ /   /  \        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  \  /   / \  /   /\   \       Internet  :  acker@wg2.waii.com
   \/___/   \/___/  \___\      Voice     :  (713) 964-6128
Re: gnus bug
#551
Author: Christopher Davis
Date: Sat, 12 Dec 1992 07:10
263 lines
12746 bytes
DA> == Doug Acker <dla@se05>

 DA> This works about 80% of the time ..  sometimes after reading the
 DA> article, it takes me back to the nex unread article at the top of
 DA> the display ... this is a pain ... I then have to scroll subjects
 DA> back to where I am ... any fix?

That's a bug in gnus-user-tale.  Use this one instead.

;;; User Contributed Software for GNUS newsreader
;; Copyright (C) 1989 Masanobu UMEDA

;; This file is part of GNU Emacs.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY.  No author or distributor
;; accepts responsibility to anyone for the consequences of using it
;; or for whether it serves any particular purpose or works at all,
;; unless he says so in writing.  Refer to the GNU Emacs General Public
;; License for full details.

;; Everyone is granted permission to copy, modify and redistribute
;; GNU Emacs, but only under the conditions described in the
;; GNU Emacs General Public License.   A copy of this license is
;; supposed to have been given to you along with GNU Emacs so you
;; can know your rights and responsibilities.  It should be in a
;; file named COPYING.  Among other things, the copyright notice
;; and this notice must be preserved on all copies.

;; The program in this file is contributed by tale@pawl.rpi.edu (David
;; C Lawrence), and is not part of the standard distribution of GNUS.
;; This may be included in the future releases of GNUS.  Please do not
;; send me any flame on it.

;;Date: 28 Feb 89 02:41:31 GMT
;;From: tale@pawl.rpi.edu (David C Lawrence)
;;Organization: The Octagon Room
;;Subject: A different article mode-line
;;To: info-gnus-english@cis.ohio-state.edu
;;
;;Well, I've seen at least three other people ask for something like
;;this and I've also wanted it, so I went in and made some changes.
;;Basically, this is what the following code does:
;;
;; o One new function is added; others merely have their current
;;definitions modified to accept the new function.
;;
;; o The exception to the first point is gnus-Article-set-mode-line.
;;The way I have defined it is to show a modeline similar to this:
;;
;;--- GNUS: comp.theory.cell-automata  2 more  5:32pm 2.27[0]  (GNUS Article)--46%
;;
;;Note that comp.theory.cell-automata is one of the longest group names
;;and everything fits into the modeline happily; only one or two group
;;would break that.  
;;
;; o The display-time-string is there so because I like it for both
;;telling time and getting my mail notification.
;; 
;; o The percentage displayed on the mode line is how many lines of the
;;total buffer size are not beyond the bottom of the window, like more(1).
;;
;; o The "2 more" refers to how many unmarked articles remain in the
;;group. Spaces are printed if there are no more unmarked articles.
;;
;;I did the "2 more" thing rather than paging because knowing that the
;;range is {1191-2010} and that I am at 2009 is mostly useless to me;
;;since I follow subjects, which particular article I am on in the group
;;is meaningless as far as helping me predict when I'll be on my way to
;;the next group.
;;
;;This was only given non-rigourous, but seemingly adequate, testing.
;;If you find a problem with it, please let me know so I can improve it.
;;
;;Dave

(provide 'gnus-user-tale)

(setq gnus-Article-mode-hook
      '(lambda ()
         (make-local-variable 'gnus-Article-head-to-window-bottom)
         (kill-local-variable 'global-mode-string)
         (setq mode-line-format
               (list (purecopy "")
                     'mode-line-modified 'mode-line-buffer-identification
                     (purecopy "  ")
                     'global-mode-string
                     (purecopy "  %[(")
                     'mode-name 'minor-mode-alist "%n"
                     (purecopy ")%]--")
                     'gnus-Article-head-to-window-bottom
                     (purecopy "-%-")))))


(defun gnus-Article-set-percent (&optional new-article)
  ;; NEW-ARTICLE has just one use, to know whether "All" or "Bot" is a more
  ;; appropriate message.  the whole point of this function is to set the
  ;; percentage in the mode-line to indicate how much appears before the end
  ;; of the window rather than the start.  the whole mess would be unnecessary,
  ;; and the world a better place, if there were simply a %-escape in mode-line
  ;; interpretation which meant to do this.  good for all reading modes.
  (save-window-excursion                ; because we will jump to Article win
    (save-excursion                     ; because we will jump to Article buf
      (save-restriction                 ; because of gnus-narrow-to-page
        (set-buffer gnus-Article-buffer)
        (if (= (point-min) (point-max))
            ;; setting anything is dumb.  we need a window w/something in it.
            () ; (also, the next select-window will crash otherwise)
          (select-window (get-buffer-window gnus-Article-buffer))
          (move-to-window-line (- (window-height) 2))
          ;; in case the last real line is visible on the screen ...
          (move-to-column (- (window-width) 2))
          (if (not (eobp)) (forward-char 1))
          (widen)                       ; Might only be at end-of-page
          (setq gnus-Article-head-to-window-bottom
                (if (eobp) (if new-article "All" "Bot")
                  ;; note that this figures based on _lines_, not
                  ;; on characters as the normal mode-line %% does.
                  (concat (/ (* 100 (count-lines (point-min) (point)))
                             (count-lines (point-min) (point-max))) "%"))))
        (set-buffer-modified-p t)))))   ; force mode-line redisplay


(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 (= 0 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
	)
    (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)))

;; I don't want to copy the whole function to my gnus-etc.el, so just
;; rebind it here.  The only change the original function needs,
;; however is to include (gnus-Article-set-percent) as the last 
;; function called by gnus-narrow-to-page.
(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))

;; This is a function which I have as my gnus-Save-newsrc-hook.  I like
;; it because it keeps my .newsrc and .newsrc.el trimmed down by not
;; letting unsubscribed groups build up long strings of marked article
;; ranges because of cross-posted articles.  (This saves over 14k on my
;; average newsrc.el size.)  It also keeps a fairly organized newsrc by
;; sorting unsubscribed groups alphabetically and putting them all at the
;; end of my newsrc.  It doesn't do anything to the order of subscribed
;; groups.   If you only desire one feature or the other you can call it
;; with the appropriate optional arguments.

;;; Based on an idea by David.Detlefs@DLD.AVALON.CS.CMU.EDU
;;; Suitable for calling as a gnus-Save-newsrc-hook.
(defun gnus-reorder-newsrc-file (&optional nosort nocompress)
  (let (gnus-unsub-assoc reordered)
    (save-excursion
      (set-buffer (get-file-buffer gnus-current-startup-file))
      (goto-char (point-max))
      ;; protect against a totally unsubscribed .newsrc
      (if (not (re-search-backward "^.*:" nil t)) nil
        (re-search-forward "^.*! " nil t)
        (setq gnus-unsub-assoc
              (memq (assoc
                     (buffer-substring (- (point) 2)
                                       (progn (beginning-of-line) (point)))
                     gnus-newsrc-assoc) gnus-newsrc-assoc))
        (while (re-search-backward "^.*! " nil t)
          (let ((position (point)) unsub-line)
            (setq gnus-unsub-assoc
                  (cons (assoc
                         (buffer-substring
                          (point) (progn (skip-chars-forward "^!") (point)))
                         gnus-newsrc-assoc) gnus-unsub-assoc)
                  unsub-line (buffer-substring position
                                               (progn (beginning-of-line)
                                                 (next-line 1) (point)))
                  reordered t)
            (delete-region position (point))
            (goto-char (point-max)) (insert unsub-line) (goto-char position)))
        (if (or nosort (not reordered)) nil
          (sort-lines nil (progn (re-search-forward "! " nil t)
                                 (beginning-of-line) (point)) (point-max))
          (setq gnus-unsub-assoc (sort gnus-unsub-assoc 'gnus-assoc-lessp)))
        (if nocompress nil
          (goto-char (point-min))
          (re-search-forward "! " nil t)
          (while (re-search-forward "," nil t)
            (let ((compress-group
                   (assoc (buffer-substring
                           (progn (beginning-of-line) (point))
                           (progn (skip-chars-forward "^!") (point)))
                          gnus-newsrc-assoc)) first-unread)
              (delete-region (progn (skip-chars-forward "^-,") (point))
                             (progn (end-of-line) (skip-chars-backward "^-,")
                                    (point)))
              (insert "-")
              (setcdr (nth 2 compress-group)
                      (cdr (nth (1- (length compress-group)) compress-group)))
              (setcdr (memq (nth 2 compress-group) compress-group) nil))))
        (setq gnus-newsrc-assoc
              (append (gnus-set-difference gnus-newsrc-assoc gnus-unsub-assoc)
                      gnus-unsub-assoc))))))

(defun gnus-assoc-lessp (list1 list2)
  "Returns t if the car of LIST1 (a string) is less than the car of
LIST2 by doing comparison with string-lessp."
  (string-lessp (car list1) (car list2)))
--
Christopher K. Davis      | ``Usenet seems to run much like the Kif (or,
<ckd@eff.org>   EFF #14   |   for the TV generation, Klingon) high command.
System Administrator, EFF |   Whoever takes action and can be heard wins.''
+1 617 864 0665  [CKD1]   |   --Peter da Silva <peter@ferranti.com>
Re: gnus bug
#543
Author: Rich Holmes
Date: Mon, 28 Dec 1992 20:50
24 lines
1474 bytes
In article <CKD.92Dec12021014@loiosh.eff.org> ckd@eff.org (Christopher Davis) writes:

>DA> == Doug Acker <dla@se05>
>
> DA> This works about 80% of the time ..  sometimes after reading the
> DA> article, it takes me back to the nex unread article at the top of
> DA> the display ... this is a pain ... I then have to scroll subjects
> DA> back to where I am ... any fix?
>
>That's a bug in gnus-user-tale.  Use this one instead.

I've been seeing a superficially similar and possibly related problem.
Should this code fix it? It doesn't seem to. The problem I see is:
after following up to an article, when I come back to the Subject
buffer the current article has jumped backwards by some variable
number of lines (from zero to about seven or so). This is with gnus
3.13 and happens regardless of whether I have my own hacks loaded or
not.

--
- Rich Holmes
"Grown men, he told himself, in flat contradiction of centuries of
accumulated evidence about the way grown men behave, do not behave
like this." -- Douglas Adams
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads