diff options
| author | Ulf Jasper | 2008-11-24 19:40:35 +0000 |
|---|---|---|
| committer | Ulf Jasper | 2008-11-24 19:40:35 +0000 |
| commit | a59c6c5194c546cbe613dabbe31def45eb2cfc30 (patch) | |
| tree | 43bef976db9872ff45514330dd9dae0dd921b3ce | |
| parent | 206faa929883621a671497c757dd4f4021586695 (diff) | |
| download | emacs-a59c6c5194c546cbe613dabbe31def45eb2cfc30.tar.gz emacs-a59c6c5194c546cbe613dabbe31def45eb2cfc30.zip | |
newsticker: cache file redesign.
| -rw-r--r-- | lisp/ChangeLog | 35 | ||||
| -rw-r--r-- | lisp/net/newst-backend.el | 121 | ||||
| -rw-r--r-- | lisp/net/newst-reader.el | 4 | ||||
| -rw-r--r-- | lisp/net/newst-treeview.el | 44 |
4 files changed, 151 insertions, 53 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e4e3c665df1..9d6ea22d13c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,38 @@ | |||
| 1 | 2008-11-24 Ulf Jasper <ulf@web.de> | ||
| 2 | |||
| 3 | * net/newst-treeview.el (newsticker--treeview-current-feed): Doc | ||
| 4 | string. | ||
| 5 | (newsticker--treeview-item-show): Renamed arg FEED to | ||
| 6 | FEED-NAME-SYMBOL. | ||
| 7 | (newsticker--treeview-tree-update-tag): Removed dead code. | ||
| 8 | (newsticker-treeview-update): Don't update cache. | ||
| 9 | (newsticker-treeview-quit): Don't save cache. | ||
| 10 | (newsticker-treeview-save): Don't save cache. Use `newsticker-dir'. | ||
| 11 | (newsticker-treeview-save): Use `newsticker-dir'. | ||
| 12 | (newsticker--treeview-load): Use `newsticker-dir'. | ||
| 13 | (newsticker--treeview-mark-item): Call `newsticker--cache-save-feed'. | ||
| 14 | Update tags. | ||
| 15 | (newsticker-treeview-tree-do-click): Slightly simplified. | ||
| 16 | |||
| 17 | * net/newst-backend.el (newsticker-dir): New. | ||
| 18 | (newsticker-start): Use `newsticker--cache-read'. | ||
| 19 | (newsticker-stop): Use `newsticker--cache-save'. | ||
| 20 | (newsticker--sentinel-work): Use `newsticker--cache-save-feed'. | ||
| 21 | (newsticker--images-dir): New. | ||
| 22 | (newsticker--image-get, newsticker--image-sentinel): Use | ||
| 23 | `newsticker--images-dir'. | ||
| 24 | (newsticker--cache-save-version1): Backuped version of | ||
| 25 | `newsticker--cache-save'. | ||
| 26 | (newsticker--cache-update): Create newsticker-dir if necessary. | ||
| 27 | (newsticker--cache-dir): New. | ||
| 28 | (newsticker--cache-save): Save feeds separately in `newsticker-dir'. | ||
| 29 | (newsticker--cache-save-feed): New. | ||
| 30 | (newsticker--cache-read-version1): New. Backuped version for reading | ||
| 31 | cache data.. | ||
| 32 | (newsticker--cache-read, newsticker--cache-do-read): New. | ||
| 33 | |||
| 34 | * net/newst-reader.el (newsticker--image-read): Use `newsticker--images-dir'. | ||
| 35 | |||
| 1 | 2008-11-24 Chong Yidong <cyd@stupidchicken.com> | 36 | 2008-11-24 Chong Yidong <cyd@stupidchicken.com> |
| 2 | 37 | ||
| 3 | * files.el (confirm-nonexistent-file-or-buffer): Allow | 38 | * files.el (confirm-nonexistent-file-or-buffer): Allow |
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el index 9359fb2dc77..0c72968dff5 100644 --- a/lisp/net/newst-backend.el +++ b/lisp/net/newst-backend.el | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | ;; Filename: newst-backend.el | 7 | ;; Filename: newst-backend.el |
| 8 | ;; URL: http://www.nongnu.org/newsticker | 8 | ;; URL: http://www.nongnu.org/newsticker |
| 9 | ;; Keywords: News, RSS, Atom | 9 | ;; Keywords: News, RSS, Atom |
| 10 | ;; Time-stamp: "31. Oktober 2008, 21:07:17 (ulf)" | 10 | ;; Time-stamp: "24. November 2008, 19:39:24 (ulf)" |
| 11 | 11 | ||
| 12 | ;; ====================================================================== | 12 | ;; ====================================================================== |
| 13 | 13 | ||
| @@ -424,9 +424,9 @@ headline after it has been retrieved for the first time." | |||
| 424 | :type 'string | 424 | :type 'string |
| 425 | :group 'newsticker-miscellaneous) | 425 | :group 'newsticker-miscellaneous) |
| 426 | 426 | ||
| 427 | (defcustom newsticker-imagecache-dirname | 427 | (defcustom newsticker-dir |
| 428 | "~/.newsticker-images" | 428 | "~/.newsticker" |
| 429 | "Name of the directory where newsticker stores cached images." | 429 | "Name of the directory where newsticker saves cached data." |
| 430 | :type 'string | 430 | :type 'string |
| 431 | :group 'newsticker-miscellaneous) | 431 | :group 'newsticker-miscellaneous) |
| 432 | 432 | ||
| @@ -629,16 +629,7 @@ Run `newsticker-start-hook' if newsticker was not running already." | |||
| 629 | (let ((running (newsticker-running-p))) | 629 | (let ((running (newsticker-running-p))) |
| 630 | ;; read old cache if it exists and newsticker is not running | 630 | ;; read old cache if it exists and newsticker is not running |
| 631 | (unless running | 631 | (unless running |
| 632 | (let ((coding-system-for-read 'utf-8)) | 632 | (newsticker--cache-read)) |
| 633 | (when (file-exists-p newsticker-cache-filename) | ||
| 634 | (with-temp-buffer | ||
| 635 | (insert-file-contents newsticker-cache-filename) | ||
| 636 | (goto-char (point-min)) | ||
| 637 | (condition-case nil | ||
| 638 | (setq newsticker--cache (read (current-buffer))) | ||
| 639 | (error | ||
| 640 | (message "Error while reading newsticker cache file!") | ||
| 641 | (setq newsticker--cache nil))))))) | ||
| 642 | ;; start retrieval timers -- one timer for each feed | 633 | ;; start retrieval timers -- one timer for each feed |
| 643 | (dolist (feed (append newsticker-url-list-defaults newsticker-url-list)) | 634 | (dolist (feed (append newsticker-url-list-defaults newsticker-url-list)) |
| 644 | (newsticker--start-feed feed)) | 635 | (newsticker--start-feed feed)) |
| @@ -660,7 +651,7 @@ Delete the stopped name/timer pair from `newsticker--retrieval-timer-list'." | |||
| 660 | Cancel the timers for display and retrieval. Run `newsticker-stop-hook' | 651 | Cancel the timers for display and retrieval. Run `newsticker-stop-hook' |
| 661 | if newsticker has been running." | 652 | if newsticker has been running." |
| 662 | (interactive) | 653 | (interactive) |
| 663 | (newsticker--cache-update t) | 654 | (newsticker--cache-save) |
| 664 | (when (fboundp 'newsticker-stop-ticker) ; silence compiler warnings | 655 | (when (fboundp 'newsticker-stop-ticker) ; silence compiler warnings |
| 665 | (newsticker-stop-ticker)) | 656 | (newsticker-stop-ticker)) |
| 666 | (when (newsticker-running-p) | 657 | (when (newsticker-running-p) |
| @@ -743,7 +734,7 @@ See `newsticker-get-news'." | |||
| 743 | See `newsticker-get-news'." | 734 | See `newsticker-get-news'." |
| 744 | (let ((coding-system-for-read 'no-conversion)) | 735 | (let ((coding-system-for-read 'no-conversion)) |
| 745 | (condition-case error-data | 736 | (condition-case error-data |
| 746 | (url-retrieve url 'newsticker--get-news-by-url-callback | 737 | (url-retrieve url 'newsticker--get-news-by-url-callback |
| 747 | (list feed-name)) | 738 | (list feed-name)) |
| 748 | (error (message "Error retrieving news from %s: %s" feed-name | 739 | (error (message "Error retrieving news from %s: %s" feed-name |
| 749 | error-data)))) | 740 | error-data)))) |
| @@ -1035,7 +1026,8 @@ Argument BUFFER is the buffer of the retrieval process." | |||
| 1035 | (setq newsticker--latest-update-time (current-time)) | 1026 | (setq newsticker--latest-update-time (current-time)) |
| 1036 | (when something-was-added | 1027 | (when something-was-added |
| 1037 | ;; FIXME: should we care about removed items as well? | 1028 | ;; FIXME: should we care about removed items as well? |
| 1038 | (newsticker--cache-update) | 1029 | (newsticker--cache-save-feed |
| 1030 | (newsticker--cache-get-feed name-symbol)) | ||
| 1039 | (when (fboundp 'newsticker--buffer-set-uptodate) ;silence | 1031 | (when (fboundp 'newsticker--buffer-set-uptodate) ;silence |
| 1040 | ;compiler | 1032 | ;compiler |
| 1041 | ;warnings | 1033 | ;warnings |
| @@ -1733,11 +1725,14 @@ Checks list of active processes against list of newsticker processes." | |||
| 1733 | ;; ====================================================================== | 1725 | ;; ====================================================================== |
| 1734 | ;;; Images | 1726 | ;;; Images |
| 1735 | ;; ====================================================================== | 1727 | ;; ====================================================================== |
| 1728 | (defun newsticker--images-dir () | ||
| 1729 | "Return directory where feed images are saved." | ||
| 1730 | (concat newsticker-dir "/images")) | ||
| 1731 | |||
| 1736 | (defun newsticker--image-get (feed-name url) | 1732 | (defun newsticker--image-get (feed-name url) |
| 1737 | "Get image of the news site FEED-NAME from URL. | 1733 | "Get image of the news site FEED-NAME from URL. |
| 1738 | If the image has been downloaded in the last 24h do nothing." | 1734 | If the image has been downloaded in the last 24h do nothing." |
| 1739 | (let ((image-name (concat newsticker-imagecache-dirname "/" | 1735 | (let ((image-name (concat (newsticker--images-dir) feed-name))) |
| 1740 | feed-name))) | ||
| 1741 | (if (and (file-exists-p image-name) | 1736 | (if (and (file-exists-p image-name) |
| 1742 | (time-less-p (current-time) | 1737 | (time-less-p (current-time) |
| 1743 | (time-add (nth 5 (file-attributes image-name)) | 1738 | (time-add (nth 5 (file-attributes image-name)) |
| @@ -1788,12 +1783,11 @@ If the image has been downloaded in the last 24h do nothing." | |||
| 1788 | (let (image-name) | 1783 | (let (image-name) |
| 1789 | (save-excursion | 1784 | (save-excursion |
| 1790 | (set-buffer (process-buffer process)) | 1785 | (set-buffer (process-buffer process)) |
| 1791 | (setq image-name (concat newsticker-imagecache-dirname "/" | 1786 | (setq image-name (concat (newsticker--images-dir) feed-name)) |
| 1792 | feed-name)) | ||
| 1793 | (set-buffer-file-coding-system 'no-conversion) | 1787 | (set-buffer-file-coding-system 'no-conversion) |
| 1794 | ;; make sure the cache dir exists | 1788 | ;; make sure the cache dir exists |
| 1795 | (unless (file-directory-p newsticker-imagecache-dirname) | 1789 | (unless (file-directory-p (newsticker--images-dir)) |
| 1796 | (make-directory newsticker-imagecache-dirname)) | 1790 | (make-directory (newsticker--images-dir))) |
| 1797 | ;; write and close buffer | 1791 | ;; write and close buffer |
| 1798 | (let ((require-final-newline nil) | 1792 | (let ((require-final-newline nil) |
| 1799 | (backup-inhibited t) | 1793 | (backup-inhibited t) |
| @@ -1802,8 +1796,6 @@ If the image has been downloaded in the last 24h do nothing." | |||
| 1802 | (set-buffer-modified-p nil) | 1796 | (set-buffer-modified-p nil) |
| 1803 | (kill-buffer (current-buffer))))))) | 1797 | (kill-buffer (current-buffer))))))) |
| 1804 | 1798 | ||
| 1805 | |||
| 1806 | |||
| 1807 | (defun newsticker--insert-image (img string) | 1799 | (defun newsticker--insert-image (img string) |
| 1808 | "Insert IMG with STRING at point." | 1800 | "Insert IMG with STRING at point." |
| 1809 | (insert-image img string)) | 1801 | (insert-image img string)) |
| @@ -1936,12 +1928,12 @@ other properties are ignored." | |||
| 1936 | newsticker-desc-comp-max)) | 1928 | newsticker-desc-comp-max)) |
| 1937 | (string= (substring | 1929 | (string= (substring |
| 1938 | (newsticker--desc anitem) | 1930 | (newsticker--desc anitem) |
| 1939 | 0 | 1931 | 0 |
| 1940 | newsticker-desc-comp-max) | 1932 | newsticker-desc-comp-max) |
| 1941 | desc) | 1933 | desc) |
| 1942 | (string= (newsticker--desc anitem) | 1934 | (string= (newsticker--desc anitem) |
| 1943 | desc))))))) | 1935 | desc))))))) |
| 1944 | ;;(newsticker--debug-msg "Found %s guid=%s" | 1936 | ;;(newsticker--debug-msg "Found %s guid=%s" |
| 1945 | ;; (newsticker--title anitem) | 1937 | ;; (newsticker--title anitem) |
| 1946 | ;; (newsticker--guid anitem)) | 1938 | ;; (newsticker--guid anitem)) |
| 1947 | (throw 'found anitem))) | 1939 | (throw 'found anitem))) |
| @@ -1970,7 +1962,7 @@ which the item got." | |||
| 1970 | (if item | 1962 | (if item |
| 1971 | ;; does exist already -- change age, update time and position | 1963 | ;; does exist already -- change age, update time and position |
| 1972 | (progn | 1964 | (progn |
| 1973 | ;;(newsticker--debug-msg "Updating item %s %s %s %s %s -> %s %s | 1965 | ;;(newsticker--debug-msg "Updating item %s %s %s %s %s -> %s %s |
| 1974 | ;; (guid %s -> %s)" | 1966 | ;; (guid %s -> %s)" |
| 1975 | ;; feed-name-symbol title link time age | 1967 | ;; feed-name-symbol title link time age |
| 1976 | ;; updated-time updated-age | 1968 | ;; updated-time updated-age |
| @@ -2094,9 +2086,7 @@ well." | |||
| 2094 | (throw 'result t))))) | 2086 | (throw 'result t))))) |
| 2095 | (< (or (newsticker--pos item1) 0) (or (newsticker--pos item2) 0)))) | 2087 | (< (or (newsticker--pos item1) 0) (or (newsticker--pos item2) 0)))) |
| 2096 | 2088 | ||
| 2097 | 2089 | (defun newsticker--cache-save-version1 () | |
| 2098 | |||
| 2099 | (defun newsticker--cache-save () | ||
| 2100 | "Update and save newsticker cache file." | 2090 | "Update and save newsticker cache file." |
| 2101 | (interactive) | 2091 | (interactive) |
| 2102 | (newsticker--cache-update t)) | 2092 | (newsticker--cache-update t)) |
| @@ -2105,6 +2095,8 @@ well." | |||
| 2105 | "Update newsticker cache file. | 2095 | "Update newsticker cache file. |
| 2106 | If optional argument SAVE is not nil the cache file is saved to disk." | 2096 | If optional argument SAVE is not nil the cache file is saved to disk." |
| 2107 | (save-excursion | 2097 | (save-excursion |
| 2098 | (unless (file-directory-p newsticker-dir) | ||
| 2099 | (make-directory newsticker-dir t)) | ||
| 2108 | (let ((coding-system-for-write 'utf-8) | 2100 | (let ((coding-system-for-write 'utf-8) |
| 2109 | (buf (find-file-noselect newsticker-cache-filename))) | 2101 | (buf (find-file-noselect newsticker-cache-filename))) |
| 2110 | (when buf | 2102 | (when buf |
| @@ -2121,6 +2113,69 @@ If optional argument SAVE is not nil the cache file is saved to disk." | |||
| 2121 | FEED is a symbol!" | 2113 | FEED is a symbol!" |
| 2122 | (assoc feed newsticker--cache)) | 2114 | (assoc feed newsticker--cache)) |
| 2123 | 2115 | ||
| 2116 | (defun newsticker--cache-dir () | ||
| 2117 | "Return directory for saving cache data." | ||
| 2118 | (concat newsticker-dir "/feeds")) | ||
| 2119 | |||
| 2120 | (defun newsticker--cache-save () | ||
| 2121 | "Save cache data for all feeds." | ||
| 2122 | (unless (file-directory-p newsticker-dir) | ||
| 2123 | (make-directory newsticker-dir t)) | ||
| 2124 | (mapc 'newsticker--cache-save-feed newsticker--cache) | ||
| 2125 | nil) | ||
| 2126 | |||
| 2127 | (defun newsticker--cache-save-feed (feed) | ||
| 2128 | "Save cache data for FEED." | ||
| 2129 | (let ((dir (concat (newsticker--cache-dir) "/" (symbol-name (car feed))))) | ||
| 2130 | (unless (file-directory-p dir) | ||
| 2131 | (make-directory dir t)) | ||
| 2132 | (let ((coding-system-for-write 'utf-8)) | ||
| 2133 | (with-temp-file (concat dir "/data") | ||
| 2134 | (insert ";; -*- coding: utf-8 -*-\n") | ||
| 2135 | (insert (prin1-to-string (cdr feed))))))) | ||
| 2136 | |||
| 2137 | (defun newsticker--cache-read-version1 () | ||
| 2138 | "Read version1 cache data." | ||
| 2139 | (let ((coding-system-for-read 'utf-8)) | ||
| 2140 | (when (file-exists-p newsticker-cache-filename) | ||
| 2141 | (with-temp-buffer | ||
| 2142 | (insert-file-contents newsticker-cache-filename) | ||
| 2143 | (goto-char (point-min)) | ||
| 2144 | (condition-case nil | ||
| 2145 | (setq newsticker--cache (read (current-buffer))) | ||
| 2146 | (error | ||
| 2147 | (message "Error while reading newsticker cache file!") | ||
| 2148 | (setq newsticker--cache nil))))))) | ||
| 2149 | |||
| 2150 | (defun newsticker--cache-read () | ||
| 2151 | "Read cache data." | ||
| 2152 | (setq newsticker--cache nil) | ||
| 2153 | (if (file-exists-p newsticker-cache-filename) | ||
| 2154 | (progn | ||
| 2155 | (when (y-or-n-p "Old newsticker cache file exists. Read it? ") | ||
| 2156 | (newsticker--cache-read-version1)) | ||
| 2157 | (message "Please remove/rename the old cache file (%s) now." | ||
| 2158 | newsticker-cache-filename)) | ||
| 2159 | (mapc (lambda (f) | ||
| 2160 | (newsticker--cache-read-feed (car f))) | ||
| 2161 | (append newsticker-url-list-defaults newsticker-url-list)))) | ||
| 2162 | |||
| 2163 | (defun newsticker--cache-read-feed (feed-name) | ||
| 2164 | "Read cache data for feed named FEED-NAME." | ||
| 2165 | (let ((file-name (concat (newsticker--cache-dir) "/" feed-name "/data")) | ||
| 2166 | (coding-system-for-read 'utf-8)) | ||
| 2167 | (when (file-exists-p file-name) | ||
| 2168 | (with-temp-buffer | ||
| 2169 | (insert-file-contents file-name) | ||
| 2170 | (goto-char (point-min)) | ||
| 2171 | (condition-case nil | ||
| 2172 | (add-to-list 'newsticker--cache (cons (intern feed-name) | ||
| 2173 | (read (current-buffer)))) | ||
| 2174 | (error | ||
| 2175 | (message "Error while reading newsticker cache file %s!" | ||
| 2176 | file-name)) | ||
| 2177 | (setq newsticker--cache nil)))))) | ||
| 2178 | |||
| 2124 | ;; ====================================================================== | 2179 | ;; ====================================================================== |
| 2125 | ;;; Statistics | 2180 | ;;; Statistics |
| 2126 | ;; ====================================================================== | 2181 | ;; ====================================================================== |
| @@ -2316,3 +2371,7 @@ This function is suited for adding it to `newsticker-new-item-functions'." | |||
| 2316 | 2371 | ||
| 2317 | ;; arch-tag: 0e37b658-56e9-49ab-90f9-f2df57e1a659 | 2372 | ;; arch-tag: 0e37b658-56e9-49ab-90f9-f2df57e1a659 |
| 2318 | ;;; newsticker-backend.el ends here | 2373 | ;;; newsticker-backend.el ends here |
| 2374 | |||
| 2375 | (provide 'newst-backend) | ||
| 2376 | |||
| 2377 | ;;; newst-backend.el ends here | ||
diff --git a/lisp/net/newst-reader.el b/lisp/net/newst-reader.el index d364e973f2d..e9ba3403296 100644 --- a/lisp/net/newst-reader.el +++ b/lisp/net/newst-reader.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Ulf Jasper <ulf.jasper@web.de> | 6 | ;; Author: Ulf Jasper <ulf.jasper@web.de> |
| 7 | ;; Filename: newst-reader.el | 7 | ;; Filename: newst-reader.el |
| 8 | ;; URL: http://www.nongnu.org/newsticker | 8 | ;; URL: http://www.nongnu.org/newsticker |
| 9 | ;; Time-stamp: "25. August 2008, 19:35:45 (ulf)" | 9 | ;; Time-stamp: "18. November 2008, 20:06:13 (ulf)" |
| 10 | 10 | ||
| 11 | ;; ====================================================================== | 11 | ;; ====================================================================== |
| 12 | 12 | ||
| @@ -262,7 +262,7 @@ KEYMAP is applied." | |||
| 262 | If DISABLED is non-nil the image will be converted to a disabled look | 262 | If DISABLED is non-nil the image will be converted to a disabled look |
| 263 | \(unless `newsticker-enable-logo-manipulations' is not t\). | 263 | \(unless `newsticker-enable-logo-manipulations' is not t\). |
| 264 | Return the image." | 264 | Return the image." |
| 265 | (let ((image-name (concat newsticker-imagecache-dirname "/" | 265 | (let ((image-name (concat (newsticker--images-dir) |
| 266 | (symbol-name feed-name-symbol))) | 266 | (symbol-name feed-name-symbol))) |
| 267 | (img nil)) | 267 | (img nil)) |
| 268 | (when (file-exists-p image-name) | 268 | (when (file-exists-p image-name) |
diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el index 0df89b8b299..3993e59ca57 100644 --- a/lisp/net/newst-treeview.el +++ b/lisp/net/newst-treeview.el | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | ;; URL: http://www.nongnu.org/newsticker | 7 | ;; URL: http://www.nongnu.org/newsticker |
| 8 | ;; Created: 2007 | 8 | ;; Created: 2007 |
| 9 | ;; Keywords: News, RSS, Atom | 9 | ;; Keywords: News, RSS, Atom |
| 10 | ;; Time-stamp: "31. Oktober 2008, 20:44:46 (ulf)" | 10 | ;; Time-stamp: "24. November 2008, 19:49:20 (ulf)" |
| 11 | 11 | ||
| 12 | ;; ====================================================================== | 12 | ;; ====================================================================== |
| 13 | 13 | ||
| @@ -149,7 +149,8 @@ Example: (\"Topmost group\" \"feed1\" (\"subgroup1\" \"feed 2\") | |||
| 149 | ;; ====================================================================== | 149 | ;; ====================================================================== |
| 150 | (defvar newsticker--treeview-windows nil) | 150 | (defvar newsticker--treeview-windows nil) |
| 151 | (defvar newsticker--treeview-buffers nil) | 151 | (defvar newsticker--treeview-buffers nil) |
| 152 | (defvar newsticker--treeview-current-feed nil) | 152 | (defvar newsticker--treeview-current-feed nil |
| 153 | "Feed name of currently shown item.") | ||
| 153 | (defvar newsticker--treeview-current-vfeed nil) | 154 | (defvar newsticker--treeview-current-vfeed nil) |
| 154 | (defvar newsticker--treeview-list-show-feed nil) | 155 | (defvar newsticker--treeview-list-show-feed nil) |
| 155 | (defvar newsticker--saved-window-config nil) | 156 | (defvar newsticker--saved-window-config nil) |
| @@ -691,8 +692,9 @@ for the button." | |||
| 691 | (newsticker-treeview-mode) | 692 | (newsticker-treeview-mode) |
| 692 | (goto-char (point-min))))) | 693 | (goto-char (point-min))))) |
| 693 | 694 | ||
| 694 | (defun newsticker--treeview-item-show (item feed) | 695 | (defun newsticker--treeview-item-show (item feed-name-symbol) |
| 695 | "Show news ITEM coming from FEED in treeview item buffer." | 696 | "Show news ITEM coming from FEED-NAME-SYMBOL in treeview item buffer." |
| 697 | (setq newsticker--treeview-current-feed (symbol-name feed-name-symbol)) | ||
| 696 | (save-excursion | 698 | (save-excursion |
| 697 | (set-buffer (newsticker--treeview-item-buffer)) | 699 | (set-buffer (newsticker--treeview-item-buffer)) |
| 698 | (when (fboundp 'w3m-process-stop) | 700 | (when (fboundp 'w3m-process-stop) |
| @@ -706,7 +708,7 @@ for the button." | |||
| 706 | (kill-all-local-variables) | 708 | (kill-all-local-variables) |
| 707 | (remove-overlays) | 709 | (remove-overlays) |
| 708 | 710 | ||
| 709 | (when (and item feed) | 711 | (when (and item feed-name-symbol) |
| 710 | (let ((wwidth (1- (window-width (newsticker--treeview-item-window))))) | 712 | (let ((wwidth (1- (window-width (newsticker--treeview-item-window))))) |
| 711 | (if newsticker-use-full-width | 713 | (if newsticker-use-full-width |
| 712 | (set (make-local-variable 'fill-column) wwidth)) | 714 | (set (make-local-variable 'fill-column) wwidth)) |
| @@ -726,10 +728,10 @@ for the button." | |||
| 726 | (goto-char (point-min)) | 728 | (goto-char (point-min)) |
| 727 | ;; insert logo at top | 729 | ;; insert logo at top |
| 728 | (let* ((newsticker-enable-logo-manipulations nil) | 730 | (let* ((newsticker-enable-logo-manipulations nil) |
| 729 | (img (newsticker--image-read feed nil))) | 731 | (img (newsticker--image-read feed-name-symbol nil))) |
| 730 | (if (and (display-images-p) img) | 732 | (if (and (display-images-p) img) |
| 731 | (newsticker--insert-image img (car item)) | 733 | (newsticker--insert-image img (car item)) |
| 732 | (insert (newsticker--real-feed-name feed)))) | 734 | (insert (newsticker--real-feed-name feed-name-symbol)))) |
| 733 | (add-text-properties (point-min) (point) | 735 | (add-text-properties (point-min) (point) |
| 734 | (list 'face 'newsticker-feed-face | 736 | (list 'face 'newsticker-feed-face |
| 735 | 'mouse-face 'highlight | 737 | 'mouse-face 'highlight |
| @@ -989,8 +991,6 @@ If RECURSIVE is non-nil recursively update parent widgets as | |||
| 989 | well. Argument IGNORE is ignored. Note that this function, if | 991 | well. Argument IGNORE is ignored. Note that this function, if |
| 990 | called recursively, makes w invalid. You should keep w's nt-id in | 992 | called recursively, makes w invalid. You should keep w's nt-id in |
| 991 | that case." | 993 | that case." |
| 992 | ;;(message "newsticker--treeview-tree-update-tag %s, %s" (widget-get w :tag) | ||
| 993 | ;; (widget-type w)) | ||
| 994 | (let* ((parent (widget-get w :parent)) | 994 | (let* ((parent (widget-get w :parent)) |
| 995 | (feed (or (widget-get w :nt-feed) (widget-get parent :nt-feed))) | 995 | (feed (or (widget-get w :nt-feed) (widget-get parent :nt-feed))) |
| 996 | (vfeed (or (widget-get w :nt-vfeed) (widget-get parent :nt-vfeed))) | 996 | (vfeed (or (widget-get w :nt-vfeed) (widget-get parent :nt-vfeed))) |
| @@ -1207,7 +1207,6 @@ Arguments IGNORE are ignored." | |||
| 1207 | "Update all treeview buffers and windows. | 1207 | "Update all treeview buffers and windows. |
| 1208 | Note: does not update the layout." | 1208 | Note: does not update the layout." |
| 1209 | (interactive) | 1209 | (interactive) |
| 1210 | (newsticker--cache-update) | ||
| 1211 | (newsticker--group-manage-orphan-feeds) | 1210 | (newsticker--group-manage-orphan-feeds) |
| 1212 | (newsticker--treeview-list-update t) | 1211 | (newsticker--treeview-list-update t) |
| 1213 | (newsticker--treeview-item-update) | 1212 | (newsticker--treeview-item-update) |
| @@ -1223,7 +1222,6 @@ Note: does not update the layout." | |||
| 1223 | (defun newsticker-treeview-quit () | 1222 | (defun newsticker-treeview-quit () |
| 1224 | "Quit newsticker treeview." | 1223 | "Quit newsticker treeview." |
| 1225 | (interactive) | 1224 | (interactive) |
| 1226 | (newsticker-treeview-save) | ||
| 1227 | (setq newsticker--sentinel-callback nil) | 1225 | (setq newsticker--sentinel-callback nil) |
| 1228 | (bury-buffer "*Newsticker Tree*") | 1226 | (bury-buffer "*Newsticker Tree*") |
| 1229 | (bury-buffer "*Newsticker List*") | 1227 | (bury-buffer "*Newsticker List*") |
| @@ -1237,10 +1235,9 @@ Note: does not update the layout." | |||
| 1237 | (defun newsticker-treeview-save () | 1235 | (defun newsticker-treeview-save () |
| 1238 | "Save newsticker data including treeview settings." | 1236 | "Save newsticker data including treeview settings." |
| 1239 | (interactive) | 1237 | (interactive) |
| 1240 | (newsticker--cache-save) | ||
| 1241 | (save-excursion | 1238 | (save-excursion |
| 1242 | (let ((coding-system-for-write 'utf-8) | 1239 | (let ((coding-system-for-write 'utf-8) |
| 1243 | (buf (find-file-noselect newsticker-groups-filename))) | 1240 | (buf (find-file-noselect (concat newsticker-dir "/groups")))) |
| 1244 | (when buf | 1241 | (when buf |
| 1245 | (set-buffer buf) | 1242 | (set-buffer buf) |
| 1246 | (setq buffer-undo-list t) | 1243 | (setq buffer-undo-list t) |
| @@ -1252,8 +1249,14 @@ Note: does not update the layout." | |||
| 1252 | (defun newsticker--treeview-load () | 1249 | (defun newsticker--treeview-load () |
| 1253 | "Load treeview settings." | 1250 | "Load treeview settings." |
| 1254 | (let* ((coding-system-for-read 'utf-8) | 1251 | (let* ((coding-system-for-read 'utf-8) |
| 1255 | (buf (and (file-exists-p newsticker-groups-filename) | 1252 | (filename |
| 1256 | (find-file-noselect newsticker-groups-filename)))) | 1253 | (or (and (file-exists-p newsticker-groups-filename) |
| 1254 | (y-or-n-p | ||
| 1255 | (format "Old newsticker groups (%s) file exists. Read it? " | ||
| 1256 | newsticker-groups-filename)) | ||
| 1257 | newsticker-groups-filename) | ||
| 1258 | (concat newsticker-dir "/groups"))) | ||
| 1259 | (buf (find-file-noselect filename))) | ||
| 1257 | (when buf | 1260 | (when buf |
| 1258 | (set-buffer buf) | 1261 | (set-buffer buf) |
| 1259 | (goto-char (point-min)) | 1262 | (goto-char (point-min)) |
| @@ -1377,7 +1380,9 @@ Move to next item unless DONT-PROCEED is non-nil." | |||
| 1377 | (setcar (nthcdr 4 item) new-age) | 1380 | (setcar (nthcdr 4 item) new-age) |
| 1378 | ;; clean up ticker FIXME | 1381 | ;; clean up ticker FIXME |
| 1379 | ) | 1382 | ) |
| 1380 | (newsticker--cache-update)) | 1383 | (newsticker--cache-save-feed |
| 1384 | (newsticker--cache-get-feed (intern newsticker--treeview-current-feed))) | ||
| 1385 | (newsticker--treeview-tree-do-update-tags newsticker--treeview-vfeed-tree)) | ||
| 1381 | 1386 | ||
| 1382 | (defun newsticker-treeview-mark-list-items-old () | 1387 | (defun newsticker-treeview-mark-list-items-old () |
| 1383 | "Mark all listed items as old." | 1388 | "Mark all listed items as old." |
| @@ -1908,10 +1913,9 @@ Remove obsolete feeds as well." | |||
| 1908 | "Actually handle click event. | 1913 | "Actually handle click event. |
| 1909 | POS gives the position where EVENT occurred." | 1914 | POS gives the position where EVENT occurred." |
| 1910 | (interactive) | 1915 | (interactive) |
| 1911 | (unless pos (setq pos (point))) | 1916 | (let* ((pos (or pos (point))) |
| 1912 | (let ((pos (or pos (point))) | 1917 | (nt-id (get-text-property pos :nt-id)) |
| 1913 | (nt-id (get-text-property pos :nt-id)) | 1918 | (item (get-text-property pos :nt-item))) |
| 1914 | (item (get-text-property pos :nt-item))) | ||
| 1915 | (cond (item | 1919 | (cond (item |
| 1916 | ;; click in list buffer | 1920 | ;; click in list buffer |
| 1917 | (newsticker-treeview-show-item)) | 1921 | (newsticker-treeview-show-item)) |