[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to newsticker-reader.el
From: |
Ulf Jasper |
Subject: |
[Emacs-diffs] Changes to newsticker-reader.el |
Date: |
Sun, 08 Jun 2008 15:35:58 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Ulf Jasper <u11> 08/06/08 15:35:58
Index: newsticker-reader.el
===================================================================
RCS file: newsticker-reader.el
diff -N newsticker-reader.el
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ newsticker-reader.el 8 Jun 2008 15:35:57 -0000 1.1
@@ -0,0 +1,1118 @@
+;;; newsticker-reader.el --- Generic RSS reader functions.
+
+;; Copyright (C) 2008 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; Author: Ulf Jasper <address@hidden>
+;; Filename: newsticker-reader.el
+;; URL: http://www.nongnu.org/newsticker
+;; Time-stamp: "7. Juni 2008, 15:34:08 (ulf)"
+;; CVS-Version: $Id: newsticker-reader.el,v 1.1 2008/06/08 15:35:57 u11 Exp $
+
+;; ======================================================================
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;; ======================================================================
+;;; Commentary:
+
+;; See newsticker.el
+
+;; ======================================================================
+;;; Code:
+
+(require 'newsticker-backend)
+
+;; ======================================================================
+;;; Customization
+;; ======================================================================
+(defun newsticker--set-customvar-formatting (symbol value)
+ "Set newsticker-variable SYMBOL value to VALUE.
+Calls all actions which are necessary in order to make the new
+value effective."
+ (if (or (not (boundp symbol))
+ (equal (symbol-value symbol) value))
+ (set symbol value)
+ ;; something must have changed
+ (set symbol value)
+ (when (fboundp 'newsticker--forget-preformatted)
+ (newsticker--forget-preformatted))))
+
+;; ======================================================================
+;; reader
+(defgroup newsticker-reader nil
+ "Settings for the feed reader."
+ :group 'newsticker)
+
+(defcustom newsticker-frontend
+ 'newsticker-treeview
+ "Newsticker frontend for reading news.
+This must be one of the functions `newsticker-plainview' or
+`newsticker-treeview'."
+ :type '(choice :tag "Frontend"
+ (const :tag "Single buffer (plainview)" newsticker-plainview)
+ (const :tag "Tree view (treeview)" newsticker-treeview))
+ :group 'newsticker-reader)
+
+;; image related things
+(defcustom newsticker-enable-logo-manipulations
+ t
+ "If non-nil newsticker manipulates logo images.
+This enables the following image properties: heuristic mask for all
+logos, and laplace-conversion for images without new items."
+ :type 'boolean
+ :group 'newsticker-reader)
+
+(defcustom newsticker-justification
+ 'left
+ "How to fill item descriptions.
+If non-nil newsticker calls `fill-region' to wrap long lines in
+item descriptions. However, if an item description contains HTML
+text and `newsticker-html-renderer' is non-nil, filling is not
+done."
+ :type '(choice :tag "Justification"
+ (const :tag "No filling" nil)
+ (const :tag "Left" left)
+ (const :tag "Right" right)
+ (const :tag "Center" center)
+ (const :tag "Full" full))
+ :set 'newsticker--set-customvar-formatting
+ :group 'newsticker-reader)
+
+(defcustom newsticker-use-full-width
+ t
+ "Decides whether to use the full window width when filling.
+If non-nil newsticker sets `fill-column' so that the whole
+window is used when filling. See also `newsticker-justification'."
+ :type 'boolean
+ :set 'newsticker--set-customvar-formatting
+ :group 'newsticker-reader)
+
+(defcustom newsticker-html-renderer
+ nil
+ "Function for rendering HTML contents.
+If non-nil, newsticker.el will call this function whenever it finds
+HTML-like tags in item descriptions. Possible functions are, for
+example, `w3m-region', `w3-region', and (if you have htmlr.el installed)
+`newsticker-htmlr-render'.
+
+In order to make sure that the HTML renderer is loaded when you
+run newsticker, you should add one of the following statements to
+your .emacs. If you use w3m,
+
+ (autoload 'w3m-region \"w3m\"
+ \"Render region in current buffer and replace with result.\" t)
+
+ (autoload 'w3m-toggle-inline-image \"w3m\"
+ \"Toggle the visibility of an image under point.\" t)
+
+or, if you use w3,
+
+ (require 'w3-auto)
+
+or, if you use htmlr
+
+ (require 'htmlr)"
+ :type '(choice :tag "Function"
+ (const :tag "None" nil)
+ (const :tag "w3" w3-region)
+ (const :tag "w3m" w3m-region)
+ (const :tag "htmlr" newsticker-htmlr-render))
+ :set 'newsticker--set-customvar-formatting
+ :group 'newsticker-reader)
+
+(defcustom newsticker-date-format
+ "(%A, %H:%M)"
+ "Format for the date part in item and feed lines.
+See `format-time-string' for a list of valid specifiers."
+ :type 'string
+ :set 'newsticker--set-customvar-formatting
+ :group 'newsticker-reader)
+
+;; ======================================================================
+;;; Utility functions
+;; ======================================================================
+(defun newsticker--insert-enclosure (item keymap)
+ "Insert enclosure element of a news ITEM into the current buffer.
+KEYMAP will be applied."
+ (let ((enclosure (newsticker--enclosure item))
+ (beg (point)))
+ (when enclosure
+ (let ((url (cdr (assoc 'url enclosure)))
+ (length (string-to-number (or (cdr (assoc 'length enclosure))
+ "-1")))
+ (type (cdr (assoc 'type enclosure))))
+ (cond ((> length 1048576)
+ (insert (format "Enclosed file (%s, %1.2f MBytes)" type
+ (/ length 1048576))))
+ ((> length 1024)
+ (insert (format "Enclosed file (%s, %1.2f KBytes)" type
+ (/ length 1024))))
+ ((> length 0)
+ (insert (format "Enclosed file (%s, %1.2f Bytes)" type
+ length)))
+ (t
+ (insert (format "Enclosed file (%s, unknown size)" type))))
+ (add-text-properties beg (point)
+ (list 'mouse-face 'highlight
+ 'nt-link url
+ 'help-echo (format
+ "mouse-2: visit (%s)" url)
+ 'keymap keymap
+ 'nt-face 'enclosure
+ 'nt-type 'desc))
+ (insert "\n")))))
+
+(defun newsticker--print-extra-elements (item keymap)
+ "Insert extra-elements of ITEM in a pretty form into the current buffer.
+KEYMAP is applied."
+ (let ((ignored-elements '(items link title description content
+ content:encoded dc:subject
+ dc:date entry item guid pubDate
+ published updated
+ enclosure))
+ (left-column-width 1))
+ (mapc (lambda (extra-element)
+ (when (listp extra-element) ;; take care of broken xml
+ ;; data, 2007-05-25
+ (unless (memq (car extra-element) ignored-elements)
+ (setq left-column-width (max left-column-width
+ (length (symbol-name
+ (car
extra-element))))))))
+ (newsticker--extra item))
+ (mapc (lambda (extra-element)
+ (when (listp extra-element) ;; take care of broken xml
+ ;; data, 2007-05-25
+ (unless (memq (car extra-element) ignored-elements)
+ (newsticker--do-print-extra-element extra-element
+ left-column-width
+ keymap))))
+ (newsticker--extra item))))
+
+(defun newsticker--do-print-extra-element (extra-element width keymap)
+ "Actually print an EXTRA-ELEMENT using the given WIDTH.
+KEYMAP is applied."
+ (let ((name (symbol-name (car extra-element))))
+ (insert (format "%s: " name))
+ (insert (make-string (- width (length name)) ? )))
+ (let (;;(attributes (cadr extra-element)) ;FIXME!!!!
+ (contents (cddr extra-element)))
+ (cond ((listp contents)
+ (mapc (lambda (i)
+ (if (and (stringp i)
+ (string-match "^http://.*"; i))
+ (let ((pos (point)))
+ (insert i " ") ; avoid self-reference from the
+ ; nt-link thing
+ (add-text-properties
+ pos (point)
+ (list 'mouse-face 'highlight
+ 'nt-link i
+ 'help-echo
+ (format "mouse-2: visit (%s)" i)
+ 'keymap keymap)))
+ (insert (format "%s" i))))
+ contents))
+ (t
+ (insert (format "%s" contents))))
+ (insert "\n")))
+
+(defun newsticker--image-read (feed-name-symbol disabled)
+ "Read the cached image for FEED-NAME-SYMBOL from disk.
+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 "/"
+ (symbol-name feed-name-symbol)))
+ (img nil))
+ (when (file-exists-p image-name)
+ (condition-case error-data
+ (setq img (create-image
+ image-name nil nil
+ :conversion (and newsticker-enable-logo-manipulations
+ disabled
+ 'disabled)
+ :mask (and newsticker-enable-logo-manipulations
+ 'heuristic)
+ :ascent 70))
+ (error
+ (message "Error: cannot create image for %s: %s"
+ feed-name-symbol error-data))))
+ img))
+
+;; the functions we need for retrieval and display
+;;;###autoload
+(defun newsticker-show-news ()
+ "Start reading news. You may want to bind this to a key."
+ (interactive)
+ (newsticker-start t) ;; will start only if not running
+ (funcall newsticker-frontend))
+
+;; ======================================================================
+;;; Toolbar
+;; ======================================================================
+(defconst newsticker--next-item-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * next_xpm[] = {
+\"24 24 42 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #7EB6DE\",
+\"@ c #82BBE2\",
+\"# c #85BEE4\",
+\"$ c #88C1E7\",
+\"% c #8AC3E8\",
+\"& c #87C1E6\",
+\"* c #8AC4E9\",
+\"= c #8CC6EA\",
+\"- c #8CC6EB\",
+\"; c #88C2E7\",
+\"> c #8BC5E9\",
+\", c #8DC7EB\",
+\"' c #87C0E6\",
+\") c #8AC4E8\",
+\"! c #8BC5EA\",
+\"~ c #8BC4E9\",
+\"{ c #88C1E6\",
+\"] c #89C3E8\",
+\"^ c #86BFE5\",
+\"/ c #83BBE2\",
+\"( c #82BBE1\",
+\"_ c #86C0E5\",
+\": c #87C0E5\",
+\"< c #83BCE2\",
+\"[ c #81B9E0\",
+\"} c #81BAE1\",
+\"| c #78B0D9\",
+\"1 c #7BB3DB\",
+\"2 c #7DB5DD\",
+\"3 c #7DB6DD\",
+\"4 c #72A9D4\",
+\"5 c #75ACD6\",
+\"6 c #76AED7\",
+\"7 c #77AFD8\",
+\"8 c #6BA1CD\",
+\"9 c #6EA4CF\",
+\"0 c #6FA6D1\",
+\"a c #6298C6\",
+\"b c #659BC8\",
+\"c c #5C91C0\",
+\" \",
+\" \",
+\" . \",
+\" .. \",
+\" .+. \",
+\" address@hidden \",
+\" .#$%. \",
+\" .&*=-. \",
+\" .;>,,,. \",
+\" .;>,,,=. \",
+\" .')!==~;. \",
+\" .#{]*%;^/. \",
+\" .(#_':#<. \",
+\" .+[@</}. \",
+\" .|1232. \",
+\" .4567. \",
+\" .890. \",
+\" .ab. \",
+\" .c. \",
+\" .. \",
+\" . \",
+\" \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the next item button."))
+
+(defconst newsticker--previous-item-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * previous_xpm[] = {
+\"24 24 39 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #7BB3DB\",
+\"@ c #83BCE2\",
+\"# c #7FB8DF\",
+\"$ c #89C2E7\",
+\"% c #86BFE5\",
+\"& c #83BBE2\",
+\"* c #8CC6EA\",
+\"= c #8BC4E9\",
+\"- c #88C2E7\",
+\"; c #85BEE4\",
+\"> c #8DC7EB\",
+\", c #89C3E8\",
+\"' c #8AC4E8\",
+\") c #8BC5EA\",
+\"! c #88C1E6\",
+\"~ c #8AC4E9\",
+\"{ c #8AC3E8\",
+\"] c #86C0E5\",
+\"^ c #87C0E6\",
+\"/ c #87C0E5\",
+\"( c #82BBE2\",
+\"_ c #81BAE1\",
+\": c #7FB7DF\",
+\"< c #7DB6DD\",
+\"[ c #7DB5DD\",
+\"} c #7CB4DC\",
+\"| c #79B1DA\",
+\"1 c #76ADD7\",
+\"2 c #77AFD8\",
+\"3 c #73AAD4\",
+\"4 c #70A7D1\",
+\"5 c #6EA5D0\",
+\"6 c #6CA2CE\",
+\"7 c #689ECB\",
+\"8 c #6399C7\",
+\"9 c #6095C4\",
+\"0 c #5C90C0\",
+\" \",
+\" \",
+\" . \",
+\" .. \",
+\" .+. \",
+\" address@hidden \",
+\" .$%&. \",
+\" .*=-;. \",
+\" .>>*,%. \",
+\" .>>>*,%. \",
+\" .')**=-;. \",
+\" .;!,~{-%&. \",
+\" .;]^/;@#. \",
+\" .(@&_:+. \",
+\" .<[}|1. \",
+\" .2134. \",
+\" .567. \",
+\" .89. \",
+\" .0. \",
+\" .. \",
+\" . \",
+\" \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the previous item button."))
+
+(defconst newsticker--previous-feed-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * prev_feed_xpm[] = {
+\"24 24 52 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #70A7D2\",
+\"@ c #75ADD6\",
+\"# c #71A8D3\",
+\"$ c #79B1DA\",
+\"% c #7BB3DB\",
+\"& c #7DB5DD\",
+\"* c #83BBE2\",
+\"= c #7EB6DE\",
+\"- c #78B0D9\",
+\"; c #7FB7DE\",
+\"> c #88C2E7\",
+\", c #85BEE4\",
+\"' c #80B9E0\",
+\") c #80B8DF\",
+\"! c #8CC6EA\",
+\"~ c #89C3E8\",
+\"{ c #86BFE5\",
+\"] c #81BAE1\",
+\"^ c #7CB4DC\",
+\"/ c #7FB8DF\",
+\"( c #8DC7EB\",
+\"_ c #7BB3DC\",
+\": c #7EB7DE\",
+\"< c #8BC4E9\",
+\"[ c #8AC4E9\",
+\"} c #8AC3E8\",
+\"| c #87C0E6\",
+\"1 c #87C0E5\",
+\"2 c #83BCE2\",
+\"3 c #75ACD6\",
+\"4 c #7FB7DF\",
+\"5 c #77AED8\",
+\"6 c #71A8D2\",
+\"7 c #70A7D1\",
+\"8 c #76ADD7\",
+\"9 c #6CA2CE\",
+\"0 c #699FCC\",
+\"a c #73AAD4\",
+\"b c #6BA1CD\",
+\"c c #669CC9\",
+\"d c #6298C5\",
+\"e c #689ECB\",
+\"f c #6499C7\",
+\"g c #6095C3\",
+\"h c #5C91C0\",
+\"i c #5E93C2\",
+\"j c #5B90C0\",
+\"k c #588CBC\",
+\"l c #578CBC\",
+\"m c #5589BA\",
+\" \",
+\" \",
+\" ... . \",
+\" .+. .. \",
+\" address@hidden .#. \",
+\" .$. address@hidden \",
+\" .&. .*=-. \",
+\" .;. .>,'%. \",
+\" .). .!~{]^. \",
+\" ./. .(!~{]_. \",
+\" .:. .!!<>,'%. \",
+\" .&. .~[}>{*=-. \",
+\" .$. .|1,2/address@hidden \",
+\" .3. .*]4%56. \",
+\" .7. .^$8#9. \",
+\" .0. .a7bc. \",
+\" .d. .efg. \",
+\" .h. .ij. \",
+\" .k. .l. \",
+\" .m. .. \",
+\" ... . \",
+\" \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the previous feed button."))
+
+(defconst newsticker--next-feed-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * next_feed_xpm[] = {
+\"24 24 57 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #6CA2CE\",
+\"@ c #75ADD6\",
+\"# c #71A8D3\",
+\"$ c #79B1DA\",
+\"% c #7EB7DE\",
+\"& c #7DB5DD\",
+\"* c #81BAE1\",
+\"= c #85BEE4\",
+\"- c #78B0D9\",
+\"; c #7FB7DE\",
+\"> c #83BCE3\",
+\", c #87C1E6\",
+\"' c #8AC4E9\",
+\") c #7BB3DB\",
+\"! c #80B8DF\",
+\"~ c #88C2E7\",
+\"{ c #8BC5E9\",
+\"] c #8DC7EB\",
+\"^ c #7CB4DC\",
+\"/ c #7FB8DF\",
+\"( c #84BDE3\",
+\"_ c #7BB3DC\",
+\": c #83BCE2\",
+\"< c #87C0E6\",
+\"[ c #8AC4E8\",
+\"} c #8BC5EA\",
+\"| c #8CC6EA\",
+\"1 c #88C1E6\",
+\"2 c #89C3E8\",
+\"3 c #8AC3E8\",
+\"4 c #7EB6DE\",
+\"5 c #82BBE1\",
+\"6 c #86C0E5\",
+\"7 c #87C0E5\",
+\"8 c #75ACD6\",
+\"9 c #7AB2DA\",
+\"0 c #81B9E0\",
+\"a c #82BBE2\",
+\"b c #71A8D2\",
+\"c c #70A7D1\",
+\"d c #74ACD6\",
+\"e c #699FCC\",
+\"f c #6EA5D0\",
+\"g c #72A9D4\",
+\"h c #669CC9\",
+\"i c #6298C5\",
+\"j c #679DCA\",
+\"k c #6BA1CD\",
+\"l c #6095C3\",
+\"m c #5C91C0\",
+\"n c #5F94C2\",
+\"o c #5B90C0\",
+\"p c #588CBC\",
+\"q c #578CBC\",
+\"r c #5589BA\",
+\" \",
+\" \",
+\" . ... \",
+\" .. .+. \",
+\" address@hidden .#. \",
+\" .$%. address@hidden \",
+\" .&*=. .-. \",
+\" .;>,'. .). \",
+\" .!=~{]. .^. \",
+\" ./(~{]]. ._. \",
+\" .%:<[}||. .). \",
+\" .&*=12'3~. .-. \",
+\" .$45=6<7. address@hidden \",
+\" .8940a:. .b. \",
+\" .cd-)&. .+. \",
+\" .efg8. .h. \",
+\" .ijk. .l. \",
+\" .mn. .o. \",
+\" .p. .q. \",
+\" .. .r. \",
+\" . ... \",
+\" \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the next feed button."))
+
+(defconst newsticker--mark-read-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * mark_read_xpm[] = {
+\"24 24 44 1\",
+\" c None\",
+\". c #C20000\",
+\"+ c #BE0000\",
+\"@ c #C70000\",
+\"# c #CE0000\",
+\"$ c #C90000\",
+\"% c #BD0000\",
+\"& c #CB0000\",
+\"* c #D10000\",
+\"= c #D70000\",
+\"- c #D30000\",
+\"; c #CD0000\",
+\"> c #C60000\",
+\", c #D40000\",
+\"' c #DA0000\",
+\") c #DE0000\",
+\"! c #DB0000\",
+\"~ c #D60000\",
+\"{ c #D00000\",
+\"] c #DC0000\",
+\"^ c #E00000\",
+\"/ c #E40000\",
+\"( c #E10000\",
+\"_ c #DD0000\",
+\": c #D80000\",
+\"< c #E50000\",
+\"[ c #E70000\",
+\"} c #E60000\",
+\"| c #E20000\",
+\"1 c #E90000\",
+\"2 c #E80000\",
+\"3 c #E30000\",
+\"4 c #DF0000\",
+\"5 c #D90000\",
+\"6 c #CC0000\",
+\"7 c #C10000\",
+\"8 c #C30000\",
+\"9 c #BF0000\",
+\"0 c #B90000\",
+\"a c #BC0000\",
+\"b c #BB0000\",
+\"c c #B80000\",
+\"d c #B50000\",
+\"e c #B70000\",
+\" \",
+\" \",
+\" \",
+\" . + \",
+\" address@hidden $.% \",
+\" &*= -;> \",
+\" ,') !~{ \",
+\" ]^/ (_: \",
+\" (<[ }|) \",
+\" <[1 2<| \",
+\" }222[< \",
+\" }}}< \",
+\" 333| \",
+\" _4^4)] \",
+\" ~:' 5=- \",
+\" 6{- *#$ \",
+\" 7>$ @89 \",
+\" 0a+ %bc \",
+\" ddc edd \",
+\" ddd ddd \",
+\" d d \",
+\" \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the next feed button."))
+
+(defconst newsticker--mark-immortal-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * mark_immortal_xpm[] = {
+\"24 24 93 2\",
+\" c None\",
+\". c #171717\",
+\"+ c #030303\",
+\"@ c #000000\",
+\"# c #181818\",
+\"$ c #090909\",
+\"% c #FFC960\",
+\"& c #FFCB61\",
+\"* c #FFCB62\",
+\"= c #FFC961\",
+\"- c #FFC75F\",
+\"; c #FFC65E\",
+\"> c #FFCA61\",
+\", c #FFCD63\",
+\"' c #FFCF65\",
+\") c #FFD065\",
+\"! c #FFCE64\",
+\"~ c #FFC35C\",
+\"{ c #FFC45D\",
+\"] c #FFD166\",
+\"^ c #FFD267\",
+\"/ c #FFD368\",
+\"( c #FFD167\",
+\"_ c #FFC05A\",
+\": c #010101\",
+\"< c #040404\",
+\"[ c #FFCC62\",
+\"} c #FFD569\",
+\"| c #FFD56A\",
+\"1 c #FFC860\",
+\"2 c #FFC25B\",
+\"3 c #FFBB56\",
+\"4 c #020202\",
+\"5 c #060606\",
+\"6 c #FFC15B\",
+\"7 c #FFC85F\",
+\"8 c #FFD469\",
+\"9 c #FFD66A\",
+\"0 c #FFBC57\",
+\"a c #1B1B1B\",
+\"b c #070707\",
+\"c c #FFBA55\",
+\"d c #FFB451\",
+\"e c #FFB954\",
+\"f c #FFB350\",
+\"g c #FFB652\",
+\"h c #FFBE58\",
+\"i c #FFCD64\",
+\"j c #FFD066\",
+\"k c #FFC059\",
+\"l c #FFB14E\",
+\"m c #0B0B0B\",
+\"n c #FFBB55\",
+\"o c #FFC15A\",
+\"p c #FFB552\",
+\"q c #FFAD4B\",
+\"r c #080808\",
+\"s c #FFAF4C\",
+\"t c #FFB853\",
+\"u c #FFA948\",
+\"v c #050505\",
+\"w c #FFB04E\",
+\"x c #FFB753\",
+\"y c #FFBC56\",
+\"z c #FFC55D\",
+\"A c #FFC55E\",
+\"B c #FFC45C\",
+\"C c #FFBD57\",
+\"D c #FFB854\",
+\"E c #FFB34F\",
+\"F c #FFAB4A\",
+\"G c #FFA545\",
+\"H c #FFAA49\",
+\"I c #FFB04D\",
+\"J c #FFB551\",
+\"K c #FFBF58\",
+\"L c #FFB24F\",
+\"M c #FFAC4A\",
+\"N c #FFA646\",
+\"O c #FFA344\",
+\"P c #FFA848\",
+\"Q c #FFB14F\",
+\"R c #FFAF4D\",
+\"S c #FFA546\",
+\"T c #FFA243\",
+\"U c #FFA445\",
+\"V c #FFAE4C\",
+\"W c #FFA444\",
+\"X c #FFA142\",
+\"Y c #FF9F41\",
+\"Z c #0A0A0A\",
+\"` c #FF9E40\",
+\" . c #FF9F40\",
+\" \",
+\" \",
+\" \",
+\" . + @ @ + # \",
+\" $ @ % & * * = - + + \",
+\" @ ; > , ' ) ' ! * - ~ @ \",
+\" @ { > ! ] ^ / / ( ' * ; _ : \",
+\" < _ ; [ ) / } | } / ] , 1 2 3 4 \",
+\" 5 6 7 , ] 8 9 9 9 } ^ ! = ~ 0 a \",
+\" b c 6 - , ] 8 9 9 9 } ^ ! % ~ 0 d 5 \",
+\" : e _ ; * ) / 8 } } / ] , 1 2 3 f 5 \",
+\" : g h { = i j ^ / ^ ] ! * ; k e l m \",
+\" : f n o ; > , ' ) ' ! * - 2 0 p q r \",
+\" : s g 0 6 ; % > * * = - ~ h t l u r \",
+\" v u w x y k ~ z A z B o C D E F G b \",
+\" 5 H I J e 0 h K h C c x L M N . \",
+\" 4 O P q Q d g x g J L R H S T < \",
+\" @ T U P F q V q M H N W X + \",
+\" @ Y T O W G G W O X Y @ \",
+\" 4 Z ` Y Y Y .` 4 4 \",
+\" 5 : : @ @ Z \",
+\" \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the next feed button."))
+
+(defconst newsticker--narrow-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * narrow_xpm[] = {
+\"24 24 48 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #969696\",
+\"@ c #9E9E9E\",
+\"# c #A4A4A4\",
+\"$ c #AAAAAA\",
+\"% c #AEAEAE\",
+\"& c #B1B1B1\",
+\"* c #B3B3B3\",
+\"= c #B4B4B4\",
+\"- c #B2B2B2\",
+\"; c #AFAFAF\",
+\"> c #ABABAB\",
+\", c #A6A6A6\",
+\"' c #A0A0A0\",
+\") c #989898\",
+\"! c #909090\",
+\"~ c #73AAD4\",
+\"{ c #7AB2DA\",
+\"] c #7FB8DF\",
+\"^ c #84BDE3\",
+\"/ c #88C2E7\",
+\"( c #8BC5E9\",
+\"_ c #8DC7EB\",
+\": c #8CC6EA\",
+\"< c #89C3E8\",
+\"[ c #86BFE5\",
+\"} c #81BAE1\",
+\"| c #7BB3DC\",
+\"1 c #75ACD6\",
+\"2 c #6DA4CF\",
+\"3 c #979797\",
+\"4 c #A3A3A3\",
+\"5 c #A8A8A8\",
+\"6 c #ADADAD\",
+\"7 c #ACACAC\",
+\"8 c #A9A9A9\",
+\"9 c #A5A5A5\",
+\"0 c #9A9A9A\",
+\"a c #929292\",
+\"b c #8C8C8C\",
+\"c c #808080\",
+\"d c #818181\",
+\"e c #838383\",
+\"f c #848484\",
+\"g c #858585\",
+\"h c #868686\",
+\"i c #828282\",
+\" \",
+\" \",
+\" \",
+\" .................. \",
+\" address@hidden&*=*-;>,')!. \",
+\" .................. \",
+\" \",
+\" \",
+\" .................. \",
+\" .~{]^/(___:<[}|12. \",
+\" .................. \",
+\" \",
+\" \",
+\" .................. \",
+\" address@hidden>666789'0ab. \",
+\" .................. \",
+\" \",
+\" \",
+\" .................. \",
+\" .cccdefghhgficccc. \",
+\" .................. \",
+\" \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the next feed button."))
+
+(defconst newsticker--get-all-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * get_all_xpm[] = {
+\"24 24 70 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #F3DA00\",
+\"@ c #F5DF00\",
+\"# c #F7E300\",
+\"$ c #F9E700\",
+\"% c #FAEA00\",
+\"& c #FBEC00\",
+\"* c #FBED00\",
+\"= c #FCEE00\",
+\"- c #FAEB00\",
+\"; c #F9E800\",
+\"> c #F8E500\",
+\", c #F6E000\",
+\"' c #F4DB00\",
+\") c #F1D500\",
+\"! c #EFD000\",
+\"~ c #B7CA00\",
+\"{ c #BFD100\",
+\"] c #C5D700\",
+\"^ c #CBDB00\",
+\"/ c #CFDF00\",
+\"( c #D2E200\",
+\"_ c #D4E400\",
+\": c #D3E300\",
+\"< c #D0E000\",
+\"[ c #CCDD00\",
+\"} c #C7D800\",
+\"| c #C1D300\",
+\"1 c #BACC00\",
+\"2 c #B1C500\",
+\"3 c #A8BC00\",
+\"4 c #20A900\",
+\"5 c #22AF00\",
+\"6 c #24B500\",
+\"7 c #26B900\",
+\"8 c #27BC00\",
+\"9 c #27BE00\",
+\"0 c #28BF00\",
+\"a c #27BD00\",
+\"b c #26BA00\",
+\"c c #25B600\",
+\"d c #23B100\",
+\"e c #21AB00\",
+\"f c #1FA400\",
+\"g c #1C9B00\",
+\"h c #21AA00\",
+\"i c #24B300\",
+\"j c #25B800\",
+\"k c #25B700\",
+\"l c #24B400\",
+\"m c #23B000\",
+\"n c #1FA500\",
+\"o c #1D9E00\",
+\"p c #20A800\",
+\"q c #21AC00\",
+\"r c #23B200\",
+\"s c #22AD00\",
+\"t c #1D9F00\",
+\"u c #20A700\",
+\"v c #1EA100\",
+\"w c #1C9C00\",
+\"x c #1DA000\",
+\"y c #1B9800\",
+\"z c #1A9600\",
+\"A c #1A9700\",
+\"B c #1A9500\",
+\"C c #199200\",
+\"D c #189100\",
+\"E c #178C00\",
+\" \",
+\" \",
+\" \",
+\" \",
+\" ................... \",
+\" address@hidden&*=*&-;>,')!. \",
+\" ................... \",
+\" \",
+\" ................... \",
+\" .~{]^/(___:<[}|123. \",
+\" ................... \",
+\" \",
+\" ................... \",
+\" .45678909abcdefg. \",
+\" .h5icj7jklmeno. \",
+\" .pq5drrmshft. \",
+\" .fu4h4pnvw. \",
+\" .oxvxtwy. \",
+\" .zAAzB. \",
+\" .CCD. \",
+\" .E. \",
+\" . \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the next feed button."))
+
+(defconst newsticker--update-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * update_xpm[] = {
+\"24 24 37 1\",
+\" c None\",
+\". c #076D00\",
+\"+ c #0A8600\",
+\"@ c #0A8800\",
+\"# c #098400\",
+\"$ c #087200\",
+\"% c #087900\",
+\"& c #098500\",
+\"* c #098100\",
+\"= c #087600\",
+\"- c #097E00\",
+\"; c #097F00\",
+\"> c #0A8700\",
+\", c #0A8C00\",
+\"' c #097C00\",
+\") c #098300\",
+\"! c #0A8900\",
+\"~ c #0A8E00\",
+\"{ c #0B9200\",
+\"] c #087700\",
+\"^ c #076E00\",
+\"/ c #076C00\",
+\"( c #076B00\",
+\"_ c #076A00\",
+\": c #076900\",
+\"< c #076800\",
+\"[ c #066700\",
+\"} c #066500\",
+\"| c #066400\",
+\"1 c #066300\",
+\"2 c #066600\",
+\"3 c #066200\",
+\"4 c #076700\",
+\"5 c #065E00\",
+\"6 c #066100\",
+\"7 c #065F00\",
+\"8 c #066000\",
+\" \",
+\" \",
+\" \",
+\" . +@@@+# \",
+\" $% &@ +* \",
+\" =-# ; \",
+\" %*>, ' \",
+\" ')!~{ = \",
+\" ]$ \",
+\" ^ ^ \",
+\" . . \",
+\" / ( \",
+\" _ : \",
+\" < [ \",
+\" } | \",
+\" [[ \",
+\" 1 $.:23 \",
+\" 3 4}35 \",
+\" 6 655 \",
+\" 76 85 55 \",
+\" 5555555 5 \",
+\" \",
+\" \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the update button."))
+
+(defconst newsticker--browse-image
+ (if (fboundp 'create-image)
+ (create-image "/* XPM */
+static char * visit_xpm[] = {
+\"24 24 39 1\",
+\" c None\",
+\". c #000000\",
+\"+ c #FFFFFF\",
+\"@ c #00E63D\",
+\"# c #00E83E\",
+\"$ c #00E73D\",
+\"% c #00E93E\",
+\"& c #00E63C\",
+\"* c #00E53C\",
+\"= c #00E23B\",
+\"- c #00E33B\",
+\"; c #00E83D\",
+\"> c #00E13A\",
+\", c #00DD38\",
+\"' c #00DE38\",
+\") c #00E23A\",
+\"! c #00E43C\",
+\"~ c #00DF39\",
+\"{ c #00DB37\",
+\"] c #00D634\",
+\"^ c #00D734\",
+\"/ c #00E039\",
+\"( c #00DC37\",
+\"_ c #00D835\",
+\": c #00D332\",
+\"< c #00CD2F\",
+\"[ c #00DB36\",
+\"} c #00D433\",
+\"| c #00CF30\",
+\"1 c #00DA36\",
+\"2 c #00D936\",
+\"3 c #00D533\",
+\"4 c #00D131\",
+\"5 c #00CE2F\",
+\"6 c #00CC2F\",
+\"7 c #00CA2D\",
+\"8 c #00C62B\",
+\"9 c #00C52A\",
+\"0 c #00BE27\",
+\" \",
+\" \",
+\" . \",
+\" .+. \",
+\" .+++. \",
+\" .++.++. \",
+\" address@hidden \",
+\" .++.##$.++. \",
+\" .++.%%%#&.++. \",
+\" .++.$%%%#*=.++. \",
+\" .++.-@;##$*>,.++. \",
+\" .++.')!&@@*=~{].++. \",
+\" .++.^{~>---)/(_:<.++. \",
+\" .++.^[,~/~'(_}|.++. \",
+\" .++.]_1[12^:|.++. \",
+\" .++.:}33:45.++. \",
+\" .++.<5567.++. \",
+\" .++.889.++. \",
+\" .++.0.++. \",
+\" .++.++. \",
+\" .+++. \",
+\" .+. \",
+\" . \",
+\" \"};
+"
+ 'xpm t)
+ "Image for the browse button."))
+
+(provide 'newsticker-reader)
+;;; newsticker-reader.el ends here
- [Emacs-diffs] Changes to newsticker-reader.el,
Ulf Jasper <=