emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog net/newst-treeview.el


From: Ulf Jasper
Subject: [Emacs-diffs] emacs/lisp ChangeLog net/newst-treeview.el
Date: Thu, 22 Jan 2009 19:52:22 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Ulf Jasper <u11>        09/01/22 19:52:21

Modified files:
        lisp           : ChangeLog 
        lisp/net       : newst-treeview.el 

Log message:
        newsticker: fixed bug#1569

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.15145&r2=1.15146
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/net/newst-treeview.el?cvsroot=emacs&r1=1.12&r2=1.13

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.15145
retrieving revision 1.15146
diff -u -b -r1.15145 -r1.15146
--- ChangeLog   22 Jan 2009 12:31:36 -0000      1.15145
+++ ChangeLog   22 Jan 2009 19:52:17 -0000      1.15146
@@ -1,3 +1,14 @@
+2009-01-19  Ulf Jasper  <address@hidden>
+
+       * net/newst-treeview.el
+       (newsticker-treeview-next-new-or-immortal-item): New optional arg
+       current-item-counts. Move to next feed if necessary. (Bug#1569)
+       (newsticker-treeview-prev-new-or-immortal-item): Move to previous
+       feed if necessary. (Bug#1569)
+       (newsticker-treeview-next-feed)
+       (newsticker-treeview-prev-feed): New optional arg
+       stay-in-tree. Don't activate node nil. (Bug#1569)
+
 2009-01-22  Adrian Robert  <address@hidden>
 
        * term/ns-win.el (ns-show-manual): Fix node name.

Index: net/newst-treeview.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/newst-treeview.el,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- net/newst-treeview.el       5 Jan 2009 03:22:46 -0000       1.12
+++ net/newst-treeview.el       22 Jan 2009 19:52:21 -0000      1.13
@@ -7,7 +7,7 @@
 ;; URL:         http://www.nongnu.org/newsticker
 ;; Created:     2007
 ;; Keywords:    News, RSS, Atom
-;; Time-stamp:  "18. Dezember 2008, 11:26:54 (ulf)"
+;; Time-stamp:  "22. Januar 2009, 20:41:31 (ulf)"
 
 ;; ======================================================================
 
@@ -1313,42 +1313,57 @@
     (forward-line -1))
   (newsticker-treeview-show-item))
 
-(defun newsticker-treeview-next-new-or-immortal-item ()
-  "Move to next new or immortal item."
+(defun newsticker-treeview-next-new-or-immortal-item (&optional
+                                                      current-item-counts)
+  "Move to next new or immortal item.
+Will move to next feed until an item is found.  Will not move if
+optional argument CURRENT-ITEM-COUNTS is t and current item is
+new or immortal."
   (interactive)
   (newsticker--treeview-restore-layout)
   (newsticker--treeview-list-clear-highlight)
-  (catch 'found
-    (let ((index (newsticker-treeview-next-item)))
+  (unless (catch 'found
+            (let ((move (not current-item-counts)))
       (while t
         (save-current-buffer
           (set-buffer (newsticker--treeview-list-buffer))
-          (forward-line 1)
+                  (when move (forward-line 1)
           (when (eobp)
             (forward-line -1)
-            (throw 'found nil)))
+                          (throw 'found nil))))
         (when (memq (newsticker--age
-                     (newsticker--treeview-get-selected-item)) '(new immortal))
+                             (newsticker--treeview-get-selected-item))
+                            '(new immortal))
             (newsticker-treeview-show-item)
-            (throw 'found t))))))
+                  (throw 'found t))
+                (setq move t))))
+    (when (newsticker-treeview-next-feed t)
+      (newsticker-treeview-next-new-or-immortal-item t))))
 
 (defun newsticker-treeview-prev-new-or-immortal-item ()
-  "Move to previous new or immortal item."
+  "Move to previous new or immortal item.
+Will move to previous feed until an item is found."
   (interactive)
   (newsticker--treeview-restore-layout)
   (newsticker--treeview-list-clear-highlight)
-  (catch 'found
-    (let ((index (newsticker-treeview-next-item)))
+  (unless (catch 'found
       (while t
         (save-current-buffer
           (set-buffer (newsticker--treeview-list-buffer))
-          (forward-line -1)
           (when (bobp)
-            (throw 'found nil)))
+                  (throw 'found nil))
+                (forward-line -1))
         (when (memq (newsticker--age
-                     (newsticker--treeview-get-selected-item)) '(new immortal))
+                           (newsticker--treeview-get-selected-item))
+                          '(new immortal))
             (newsticker-treeview-show-item)
-            (throw 'found t))))))
+                (throw 'found t))
+                (when (bobp)
+                  (throw 'found nil))))
+    (when (newsticker-treeview-prev-feed t)
+      (set-buffer (newsticker--treeview-list-buffer))
+      (goto-char (point-max))
+      (newsticker-treeview-prev-new-or-immortal-item))))
 
 (defun newsticker--treeview-get-selected-item ()
   "Return item that is currently selected in list buffer."
@@ -1527,37 +1542,61 @@
           (node
            (widget-apply-action node)))))
 
-(defun newsticker-treeview-next-feed ()
-  "Move to next feed."
+(defun newsticker-treeview-next-feed (&optional stay-in-tree)
+  "Move to next feed.
+Optional argument STAY-IN-TREE prevents moving from real feed
+tree to virtual feed tree or vice versa.
+Return t if a new feed was activated, nil otherwise."
   (interactive)
   (newsticker--treeview-restore-layout)
-  (let ((cur (newsticker--treeview-get-current-node)))
-    ;;(message "newsticker-treeview-next-feed from %s"
-    ;;       (widget-get cur :tag))
+  (let ((cur (newsticker--treeview-get-current-node))
+        (new nil))
+    (message "newsticker-treeview-next-feed from %s"
+             (widget-get cur :tag))
     (if cur
-        (let ((new (or (newsticker--treeview-get-next-sibling cur)
+      (progn
+        (setq new
+              (if cur
+                  (or (newsticker--treeview-get-next-sibling cur)
                        (newsticker--treeview-get-next-uncle cur)
-                       (newsticker--treeview-get-other-tree))))
-          (newsticker--treeview-activate-node new))
-      (newsticker--treeview-activate-node
-       (car (widget-get newsticker--treeview-feed-tree :children)))))
-  (newsticker--treeview-tree-update-highlight))
+                      (and (not stay-in-tree)
+                           (newsticker--treeview-get-other-tree)))
+                (car (widget-get newsticker--treeview-feed-tree :children))))
+        (if new
+            (progn
+              (newsticker--treeview-activate-node new)
+              (newsticker--treeview-tree-update-highlight)
+              (not (eq new cur)))
+          nil))
+      nil)))
 
-(defun newsticker-treeview-prev-feed ()
-  "Move to previous feed."
+(defun newsticker-treeview-prev-feed (&optional stay-in-tree)
+  "Move to previous feed.
+Optional argument STAY-IN-TREE prevents moving from real feed
+tree to virtual feed tree or vice versa.
+Return t if a new feed was activated, nil otherwise."
   (interactive)
   (newsticker--treeview-restore-layout)
-  (let ((cur (newsticker--treeview-get-current-node)))
+  (let ((cur (newsticker--treeview-get-current-node))
+        (new nil))
     (message "newsticker-treeview-prev-feed from %s"
              (widget-get cur :tag))
     (if cur
-        (let ((new (or (newsticker--treeview-get-prev-sibling cur)
+      (progn
+        (setq new
+              (if cur
+                  (or (newsticker--treeview-get-prev-sibling cur)
                        (newsticker--treeview-get-prev-uncle cur)
-                       (newsticker--treeview-get-other-tree))))
-          (newsticker--treeview-activate-node new t))
-      (newsticker--treeview-activate-node
-       (car (widget-get newsticker--treeview-feed-tree :children)) t)))
-  (newsticker--treeview-tree-update-highlight))
+                      (and (not stay-in-tree)
+                           (newsticker--treeview-get-other-tree)))
+                (car (widget-get newsticker--treeview-feed-tree :children))))
+        (if new
+            (progn
+              (newsticker--treeview-activate-node new t)
+              (newsticker--treeview-tree-update-highlight)
+              (not (eq new cur)))
+          nil))
+      nil)))
 
 (defun newsticker-treeview-next-page ()
   "Scroll item buffer."




reply via email to

[Prev in Thread] Current Thread [Next in Thread]