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-backend.el net/n...


From: Ulf Jasper
Subject: [Emacs-diffs] emacs/lisp ChangeLog net/newst-backend.el net/n...
Date: Mon, 24 Nov 2008 19:40:39 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Ulf Jasper <u11>        08/11/24 19:40:39

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

Log message:
        newsticker: cache file redesign.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.14852&r2=1.14853
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/net/newst-backend.el?cvsroot=emacs&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/net/newst-reader.el?cvsroot=emacs&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/net/newst-treeview.el?cvsroot=emacs&r1=1.9&r2=1.10

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.14852
retrieving revision 1.14853
diff -u -b -r1.14852 -r1.14853
--- ChangeLog   24 Nov 2008 19:13:45 -0000      1.14852
+++ ChangeLog   24 Nov 2008 19:40:35 -0000      1.14853
@@ -1,3 +1,38 @@
+2008-11-24  Ulf Jasper  <address@hidden>
+
+       * net/newst-treeview.el (newsticker--treeview-current-feed): Doc
+       string.
+       (newsticker--treeview-item-show): Renamed arg FEED to
+       FEED-NAME-SYMBOL.
+       (newsticker--treeview-tree-update-tag): Removed dead code.
+       (newsticker-treeview-update): Don't update cache.
+       (newsticker-treeview-quit): Don't save cache.
+       (newsticker-treeview-save): Don't save cache. Use `newsticker-dir'.
+       (newsticker-treeview-save): Use `newsticker-dir'.
+       (newsticker--treeview-load): Use `newsticker-dir'.
+       (newsticker--treeview-mark-item): Call `newsticker--cache-save-feed'.
+       Update tags.
+       (newsticker-treeview-tree-do-click): Slightly simplified.
+
+       * net/newst-backend.el (newsticker-dir): New.
+       (newsticker-start): Use `newsticker--cache-read'.
+       (newsticker-stop): Use `newsticker--cache-save'.
+       (newsticker--sentinel-work): Use `newsticker--cache-save-feed'.
+       (newsticker--images-dir): New.
+       (newsticker--image-get, newsticker--image-sentinel): Use
+       `newsticker--images-dir'.
+       (newsticker--cache-save-version1): Backuped version of
+       `newsticker--cache-save'.
+       (newsticker--cache-update): Create newsticker-dir if necessary.
+       (newsticker--cache-dir): New.
+       (newsticker--cache-save): Save feeds separately in `newsticker-dir'.
+       (newsticker--cache-save-feed): New.
+       (newsticker--cache-read-version1): New. Backuped version for reading
+       cache data..
+       (newsticker--cache-read, newsticker--cache-do-read): New.
+
+       * net/newst-reader.el (newsticker--image-read): Use 
`newsticker--images-dir'.
+
 2008-11-24  Chong Yidong  <address@hidden>
 
        * files.el (confirm-nonexistent-file-or-buffer): Allow

Index: net/newst-backend.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/newst-backend.el,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- net/newst-backend.el        31 Oct 2008 20:15:45 -0000      1.3
+++ net/newst-backend.el        24 Nov 2008 19:40:38 -0000      1.4
@@ -7,7 +7,7 @@
 ;; Filename:    newst-backend.el
 ;; URL:         http://www.nongnu.org/newsticker
 ;; Keywords:    News, RSS, Atom
-;; Time-stamp:  "31. Oktober 2008, 21:07:17 (ulf)"
+;; Time-stamp:  "24. November 2008, 19:39:24 (ulf)"
 
 ;; ======================================================================
 
@@ -424,9 +424,9 @@
   :type 'string
   :group 'newsticker-miscellaneous)
 
-(defcustom newsticker-imagecache-dirname
-  "~/.newsticker-images"
-  "Name of the directory where newsticker stores cached images."
+(defcustom newsticker-dir
+  "~/.newsticker"
+  "Name of the directory where newsticker saves cached data."
   :type 'string
   :group 'newsticker-miscellaneous)
 
@@ -629,16 +629,7 @@
   (let ((running (newsticker-running-p)))
     ;; read old cache if it exists and newsticker is not running
     (unless running
-      (let ((coding-system-for-read 'utf-8))
-        (when (file-exists-p newsticker-cache-filename)
-          (with-temp-buffer
-            (insert-file-contents newsticker-cache-filename)
-            (goto-char (point-min))
-            (condition-case nil
-              (setq newsticker--cache (read (current-buffer)))
-            (error
-             (message "Error while reading newsticker cache file!")
-             (setq newsticker--cache nil)))))))
+      (newsticker--cache-read))
     ;; start retrieval timers -- one timer for each feed
     (dolist (feed (append newsticker-url-list-defaults newsticker-url-list))
       (newsticker--start-feed feed))
@@ -660,7 +651,7 @@
 Cancel the timers for display and retrieval.  Run `newsticker-stop-hook'
 if newsticker has been running."
   (interactive)
-  (newsticker--cache-update t)
+  (newsticker--cache-save)
   (when (fboundp 'newsticker-stop-ticker) ; silence compiler warnings
     (newsticker-stop-ticker))
   (when (newsticker-running-p)
@@ -1035,7 +1026,8 @@
         (setq newsticker--latest-update-time (current-time))
         (when something-was-added
           ;; FIXME: should we care about removed items as well?
-          (newsticker--cache-update)
+          (newsticker--cache-save-feed
+           (newsticker--cache-get-feed name-symbol))
           (when (fboundp 'newsticker--buffer-set-uptodate) ;silence
                                                            ;compiler
                                                            ;warnings
@@ -1733,11 +1725,14 @@
 ;; ======================================================================
 ;;; Images
 ;; ======================================================================
+(defun newsticker--images-dir ()
+  "Return directory where feed images are saved."
+  (concat newsticker-dir "/images"))
+
 (defun newsticker--image-get (feed-name url)
   "Get image of the news site FEED-NAME from URL.
 If the image has been downloaded in the last 24h do nothing."
-  (let ((image-name (concat newsticker-imagecache-dirname "/"
-                            feed-name)))
+  (let ((image-name (concat (newsticker--images-dir) feed-name)))
     (if (and (file-exists-p image-name)
              (time-less-p (current-time)
                           (time-add (nth 5 (file-attributes image-name))
@@ -1788,12 +1783,11 @@
       (let (image-name)
         (save-excursion
           (set-buffer (process-buffer process))
-          (setq image-name (concat newsticker-imagecache-dirname "/"
-                                   feed-name))
+          (setq image-name (concat (newsticker--images-dir) feed-name))
           (set-buffer-file-coding-system 'no-conversion)
           ;; make sure the cache dir exists
-          (unless (file-directory-p newsticker-imagecache-dirname)
-            (make-directory newsticker-imagecache-dirname))
+          (unless (file-directory-p (newsticker--images-dir))
+            (make-directory (newsticker--images-dir)))
           ;; write and close buffer
           (let ((require-final-newline nil)
                 (backup-inhibited t)
@@ -1802,8 +1796,6 @@
           (set-buffer-modified-p nil)
           (kill-buffer (current-buffer)))))))
 
-
-
 (defun newsticker--insert-image (img string)
   "Insert IMG with STRING at point."
   (insert-image img string))
@@ -2094,9 +2086,7 @@
                  (throw 'result t)))))
     (< (or (newsticker--pos item1) 0) (or (newsticker--pos item2) 0))))
 
-
-
-(defun newsticker--cache-save ()
+(defun newsticker--cache-save-version1 ()
   "Update and save newsticker cache file."
   (interactive)
   (newsticker--cache-update t))
@@ -2105,6 +2095,8 @@
   "Update newsticker cache file.
 If optional argument SAVE is not nil the cache file is saved to disk."
   (save-excursion
+    (unless (file-directory-p newsticker-dir)
+      (make-directory newsticker-dir t))
     (let ((coding-system-for-write 'utf-8)
           (buf (find-file-noselect newsticker-cache-filename)))
       (when buf
@@ -2121,6 +2113,69 @@
 FEED is a symbol!"
   (assoc feed newsticker--cache))
 
+(defun newsticker--cache-dir ()
+  "Return directory for saving cache data."
+  (concat newsticker-dir "/feeds"))
+
+(defun newsticker--cache-save ()
+    "Save cache data for all feeds."
+    (unless (file-directory-p newsticker-dir)
+      (make-directory newsticker-dir t))
+    (mapc 'newsticker--cache-save-feed newsticker--cache)
+    nil)
+
+(defun newsticker--cache-save-feed (feed)
+  "Save cache data for FEED."
+  (let ((dir (concat (newsticker--cache-dir) "/" (symbol-name (car feed)))))
+    (unless (file-directory-p dir)
+      (make-directory dir t))
+    (let ((coding-system-for-write 'utf-8))
+      (with-temp-file (concat dir "/data")
+        (insert ";; -*- coding: utf-8 -*-\n")
+        (insert (prin1-to-string (cdr feed)))))))
+
+(defun newsticker--cache-read-version1 ()
+  "Read version1 cache data."
+  (let ((coding-system-for-read 'utf-8))
+    (when (file-exists-p newsticker-cache-filename)
+      (with-temp-buffer
+        (insert-file-contents newsticker-cache-filename)
+        (goto-char (point-min))
+        (condition-case nil
+            (setq newsticker--cache (read (current-buffer)))
+          (error
+           (message "Error while reading newsticker cache file!")
+           (setq newsticker--cache nil)))))))
+
+(defun newsticker--cache-read ()
+  "Read cache data."
+  (setq newsticker--cache nil)
+  (if (file-exists-p newsticker-cache-filename)
+      (progn
+        (when (y-or-n-p "Old newsticker cache file exists.  Read it? ")
+          (newsticker--cache-read-version1))
+        (message "Please remove/rename the old cache file (%s) now."
+                 newsticker-cache-filename))
+    (mapc (lambda (f)
+            (newsticker--cache-read-feed (car f)))
+          (append newsticker-url-list-defaults newsticker-url-list))))
+
+(defun newsticker--cache-read-feed (feed-name)
+  "Read cache data for feed named FEED-NAME."
+  (let ((file-name (concat (newsticker--cache-dir) "/" feed-name "/data"))
+        (coding-system-for-read 'utf-8))
+    (when (file-exists-p file-name)
+      (with-temp-buffer
+        (insert-file-contents file-name)
+        (goto-char (point-min))
+        (condition-case nil
+            (add-to-list 'newsticker--cache (cons (intern feed-name)
+                                                  (read (current-buffer))))
+          (error
+           (message "Error while reading newsticker cache file %s!"
+                    file-name))
+          (setq newsticker--cache nil))))))
+
 ;; ======================================================================
 ;;; Statistics
 ;; ======================================================================
@@ -2316,3 +2371,7 @@
 
 ;; arch-tag: 0e37b658-56e9-49ab-90f9-f2df57e1a659
 ;;; newsticker-backend.el ends here
+
+(provide 'newst-backend)
+
+;;; newst-backend.el ends here

Index: net/newst-reader.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/newst-reader.el,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- net/newst-reader.el 25 Aug 2008 17:41:16 -0000      1.4
+++ net/newst-reader.el 24 Nov 2008 19:40:38 -0000      1.5
@@ -6,7 +6,7 @@
 ;; Author:      Ulf Jasper <address@hidden>
 ;; Filename:    newst-reader.el
 ;; URL:         http://www.nongnu.org/newsticker
-;; Time-stamp:  "25. August 2008, 19:35:45 (ulf)"
+;; Time-stamp:  "18. November 2008, 20:06:13 (ulf)"
 
 ;; ======================================================================
 
@@ -262,7 +262,7 @@
 If DISABLED is non-nil the image will be converted to a disabled look
 \(unless `newsticker-enable-logo-manipulations' is not t\).
 Return the image."
-  (let ((image-name (concat newsticker-imagecache-dirname "/"
+  (let ((image-name (concat (newsticker--images-dir)
                             (symbol-name feed-name-symbol)))
         (img nil))
     (when (file-exists-p image-name)

Index: net/newst-treeview.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/newst-treeview.el,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- net/newst-treeview.el       31 Oct 2008 20:19:21 -0000      1.9
+++ net/newst-treeview.el       24 Nov 2008 19:40:38 -0000      1.10
@@ -7,7 +7,7 @@
 ;; URL:         http://www.nongnu.org/newsticker
 ;; Created:     2007
 ;; Keywords:    News, RSS, Atom
-;; Time-stamp:  "31. Oktober 2008, 20:44:46 (ulf)"
+;; Time-stamp:  "24. November 2008, 19:49:20 (ulf)"
 
 ;; ======================================================================
 
@@ -149,7 +149,8 @@
 ;; ======================================================================
 (defvar newsticker--treeview-windows nil)
 (defvar newsticker--treeview-buffers nil)
-(defvar newsticker--treeview-current-feed nil)
+(defvar newsticker--treeview-current-feed nil
+  "Feed name of currently shown item.")
 (defvar newsticker--treeview-current-vfeed nil)
 (defvar newsticker--treeview-list-show-feed nil)
 (defvar newsticker--saved-window-config nil)
@@ -691,8 +692,9 @@
       (newsticker-treeview-mode)
       (goto-char (point-min)))))
 
-(defun newsticker--treeview-item-show (item feed)
-  "Show news ITEM coming from FEED in treeview item buffer."
+(defun newsticker--treeview-item-show (item feed-name-symbol)
+  "Show news ITEM coming from FEED-NAME-SYMBOL in treeview item buffer."
+  (setq newsticker--treeview-current-feed (symbol-name feed-name-symbol))
   (save-excursion
     (set-buffer (newsticker--treeview-item-buffer))
     (when (fboundp 'w3m-process-stop)
@@ -706,7 +708,7 @@
       (kill-all-local-variables)
       (remove-overlays)
 
-      (when (and item feed)
+      (when (and item feed-name-symbol)
         (let ((wwidth (1- (window-width (newsticker--treeview-item-window)))))
           (if newsticker-use-full-width
               (set (make-local-variable 'fill-column) wwidth))
@@ -726,10 +728,10 @@
         (goto-char (point-min))
         ;; insert logo at top
         (let* ((newsticker-enable-logo-manipulations nil)
-               (img (newsticker--image-read feed nil)))
+               (img (newsticker--image-read feed-name-symbol nil)))
           (if (and (display-images-p) img)
               (newsticker--insert-image img (car item))
-            (insert (newsticker--real-feed-name feed))))
+            (insert (newsticker--real-feed-name feed-name-symbol))))
         (add-text-properties (point-min) (point)
                              (list 'face 'newsticker-feed-face
                                    'mouse-face 'highlight
@@ -989,8 +991,6 @@
 well.  Argument IGNORE is ignored.  Note that this function, if
 called recursively, makes w invalid.  You should keep w's nt-id in
 that case."
-  ;;(message "newsticker--treeview-tree-update-tag %s, %s" (widget-get w :tag)
-    ;;       (widget-type w))
   (let* ((parent (widget-get w :parent))
          (feed (or (widget-get w :nt-feed) (widget-get parent :nt-feed)))
          (vfeed (or (widget-get w :nt-vfeed) (widget-get parent :nt-vfeed)))
@@ -1207,7 +1207,6 @@
   "Update all treeview buffers and windows.
 Note: does not update the layout."
   (interactive)
-  (newsticker--cache-update)
   (newsticker--group-manage-orphan-feeds)
   (newsticker--treeview-list-update t)
   (newsticker--treeview-item-update)
@@ -1223,7 +1222,6 @@
 (defun newsticker-treeview-quit ()
   "Quit newsticker treeview."
   (interactive)
-  (newsticker-treeview-save)
   (setq newsticker--sentinel-callback nil)
   (bury-buffer "*Newsticker Tree*")
   (bury-buffer "*Newsticker List*")
@@ -1237,10 +1235,9 @@
 (defun newsticker-treeview-save ()
   "Save newsticker data including treeview settings."
   (interactive)
-  (newsticker--cache-save)
   (save-excursion
     (let ((coding-system-for-write 'utf-8)
-          (buf (find-file-noselect newsticker-groups-filename)))
+          (buf (find-file-noselect (concat newsticker-dir "/groups"))))
       (when buf
         (set-buffer buf)
         (setq buffer-undo-list t)
@@ -1252,8 +1249,14 @@
 (defun newsticker--treeview-load ()
   "Load treeview settings."
   (let* ((coding-system-for-read 'utf-8)
-         (buf (and (file-exists-p newsticker-groups-filename)
-                   (find-file-noselect newsticker-groups-filename))))
+         (filename
+          (or (and (file-exists-p newsticker-groups-filename)
+                   (y-or-n-p
+                    (format "Old newsticker groups (%s) file exists.  Read it? 
"
+                            newsticker-groups-filename))
+                   newsticker-groups-filename)
+              (concat newsticker-dir "/groups")))
+         (buf (find-file-noselect filename)))
     (when buf
       (set-buffer buf)
       (goto-char (point-min))
@@ -1377,7 +1380,9 @@
     (setcar (nthcdr 4 item) new-age)
     ;; clean up ticker FIXME
     )
-  (newsticker--cache-update))
+  (newsticker--cache-save-feed
+   (newsticker--cache-get-feed (intern newsticker--treeview-current-feed)))
+  (newsticker--treeview-tree-do-update-tags newsticker--treeview-vfeed-tree))
 
 (defun newsticker-treeview-mark-list-items-old ()
   "Mark all listed items as old."
@@ -1908,8 +1913,7 @@
   "Actually handle click event.
 POS gives the position where EVENT occurred."
   (interactive)
-  (unless pos (setq pos (point)))
-  (let ((pos (or pos (point)))
+  (let* ((pos (or pos (point)))
         (nt-id (get-text-property pos :nt-id))
         (item (get-text-property pos :nt-item)))
     (cond (item




reply via email to

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