emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to newsticker-ticker.el


From: Ulf Jasper
Subject: [Emacs-diffs] Changes to newsticker-ticker.el
Date: Fri, 13 Jun 2008 17:08:26 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Ulf Jasper <u11>        08/06/13 17:08:25

Index: newsticker-ticker.el
===================================================================
RCS file: newsticker-ticker.el
diff -N newsticker-ticker.el
--- newsticker-ticker.el        12 Jun 2008 05:49:26 -0000      1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,293 +0,0 @@
-;; newsticker-ticker.el --- modeline ticker for newsticker.
-
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
-
-;; Author:      Ulf Jasper <address@hidden>
-;; Filename:    newsticker-ticker.el
-;; URL:         http://www.nongnu.org/newsticker
-;; Keywords:    News, RSS, Atom
-;; Time-stamp:  "7. Juni 2008, 15:12:27 (ulf)"
-
-;; ======================================================================
-
-;; This file is part of GNU Emacs.
-
-;; 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)
-
-(defvar newsticker--ticker-timer nil
-  "Timer for newsticker ticker.")
-
-;;;###autoload
-(defun newsticker-ticker-running-p ()
-  "Check whether newsticker's actual ticker is running.
-Return t if ticker is running, nil otherwise.  Newsticker is
-considered to be running if the newsticker timer list is not
-empty."
-  (timerp newsticker--ticker-timer))
-
-;; customization group ticker
-(defgroup newsticker-ticker nil
-  "Settings for the headline ticker."
-  :group 'newsticker)
-
-(defun newsticker--set-customvar-ticker (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 -- restart ticker
-    (when (newsticker-running-p)
-      (message "Restarting ticker")
-      (newsticker-stop-ticker)
-      (newsticker--ticker-text-setup)
-      (newsticker-start-ticker)
-      (message ""))))
-
-(defcustom newsticker-ticker-interval
-  0.3
-  "Time interval for displaying news items in the echo area (seconds).
-If equal or less than 0 no messages are shown in the echo area.  For
-smooth display (see `newsticker-scroll-smoothly') a value of 0.3 seems
-reasonable.  For non-smooth display a value of 10 is a good starting
-point."
-  :type 'number
-  :set 'newsticker--set-customvar-ticker
-  :group 'newsticker-ticker)
-
-(defcustom newsticker-scroll-smoothly
-  t
-  "Decides whether to flash or scroll news items.
-If t the news headlines are scrolled (more-or-less) smoothly in the echo
-area.  If nil one headline after another is displayed in the echo area.
-The variable `newsticker-ticker-interval' determines how fast this
-display moves/changes and whether headlines are shown in the echo area
-at all.  If you change `newsticker-scroll-smoothly' you should also change
-`newsticker-ticker-interval'."
-  :type 'boolean
-  :group 'newsticker-ticker)
-
-(defcustom newsticker-hide-immortal-items-in-echo-area
-  t
-  "Decides whether to show immortal/non-expiring news items in the ticker.
-If t the echo area will not show immortal items.  See also
-`newsticker-hide-old-items-in-echo-area'."
-  :type 'boolean
-  :set 'newsticker--set-customvar-ticker
-  :group 'newsticker-ticker)
-
-(defcustom newsticker-hide-old-items-in-echo-area
-  t
-  "Decides whether to show only the newest news items in the ticker.
-If t the echo area will show only new items, i.e. only items which have
-been added between the last two retrievals."
-  :type 'boolean
-  :set 'newsticker--set-customvar-ticker
-  :group 'newsticker-ticker)
-
-(defcustom newsticker-hide-obsolete-items-in-echo-area
-  t
-  "Decides whether to show obsolete items items in the ticker.
-If t the echo area will not show obsolete items.  See also
-`newsticker-hide-old-items-in-echo-area'."
-  :type 'boolean
-  :set 'newsticker--set-customvar-ticker
-  :group 'newsticker-ticker)
-
-(defun newsticker--display-tick ()
-  "Called from the display timer.
-This function calls a display function, according to the variable
-`newsticker-scroll-smoothly'."
-  (if newsticker-scroll-smoothly
-      (newsticker--display-scroll)
-    (newsticker--display-jump)))
-
-(defsubst newsticker--echo-area-clean-p ()
-  "Check whether somebody is using the echo area / minibuffer.
-Return t if echo area and minibuffer are unused."
-  (not (or (active-minibuffer-window)
-           (and (current-message)
-                (not (string= (current-message)
-                              newsticker--prev-message))))))
-
-(defun newsticker--display-jump ()
-  "Called from the display timer.
-This function displays the next ticker item in the echo area, unless
-there is another message displayed or the minibuffer is active."
-  (let ((message-log-max nil));; prevents message text from being logged
-    (when (newsticker--echo-area-clean-p)
-      (setq newsticker--item-position (1+ newsticker--item-position))
-      (when (>= newsticker--item-position (length newsticker--item-list))
-        (setq newsticker--item-position 0))
-      (setq newsticker--prev-message
-            (nth newsticker--item-position newsticker--item-list))
-      (message "%s" newsticker--prev-message))))
-
-(defun newsticker--display-scroll ()
-  "Called from the display timer.
-This function scrolls the ticker items in the echo area, unless
-there is another message displayed or the minibuffer is active."
-  (when (newsticker--echo-area-clean-p)
-    (let* ((width (- (frame-width) 1))
-           (message-log-max nil);; prevents message text from being logged
-           (i newsticker--item-position)
-           subtext
-           (s-text newsticker--scrollable-text)
-           (l (length s-text)))
-      ;; don't show anything if there is nothing to show
-      (unless (< (length s-text) 1)
-        ;; repeat the ticker string if it is shorter than frame width
-        (while (< (length s-text) width)
-          (setq s-text (concat s-text s-text)))
-        ;; get the width of the printed string
-        (setq l (length s-text))
-        (cond ((< i (- l width))
-               (setq subtext (substring s-text i (+ i width))))
-              (t
-               (setq subtext (concat
-                              (substring s-text i l)
-                              (substring s-text 0 (- width (- l i)))))))
-        ;; Take care of multibyte strings, for which (string-width) is
-        ;; larger than (length).
-        ;; Actually, such strings may be smaller than (frame-width)
-        ;; because return values of (string-width) are too large:
-        ;; (string-width "<japanese character>") => 2
-        (let ((t-width (1- (length subtext))))
-          (while (> (string-width subtext) width)
-            (setq subtext (substring subtext 0 t-width))
-            (setq t-width (1- t-width))))
-        ;; show the ticker text and save current position
-        (message "%s" subtext)
-        (setq newsticker--prev-message subtext)
-        (setq newsticker--item-position (1+ i))
-        (when (>= newsticker--item-position l)
-          (setq newsticker--item-position 0))))))
-
-;;;###autoload
-(defun newsticker-start-ticker ()
-  "Start newsticker's ticker (but not the news retrieval).
-Start display timer for the actual ticker if wanted and not
-running already."
-  (interactive)
-  (if (and (> newsticker-ticker-interval 0)
-           (not newsticker--ticker-timer))
-      (setq newsticker--ticker-timer
-            (run-at-time newsticker-ticker-interval
-                         newsticker-ticker-interval
-                         'newsticker--display-tick))))
-
-(defun newsticker-stop-ticker ()
-  "Stop newsticker's ticker (but not the news retrieval)."
-  (interactive)
-  (when newsticker--ticker-timer
-    (cancel-timer newsticker--ticker-timer)
-    (setq newsticker--ticker-timer nil)))
-
-;; ======================================================================
-;;; Manipulation of ticker text
-;; ======================================================================
-(defun newsticker--ticker-text-setup ()
-  "Build the ticker text which is scrolled or flashed in the echo area."
-  ;; reset scrollable text
-  (setq newsticker--scrollable-text "")
-  (setq newsticker--item-list nil)
-  (setq newsticker--item-position 0)
-  ;; build scrollable text from cache data
-  (let ((have-something nil))
-    (mapc
-     (lambda (feed)
-       (let ((feed-name (symbol-name (car feed))))
-         (let ((num-new (newsticker--stat-num-items (car feed) 'new))
-               (num-old (newsticker--stat-num-items (car feed) 'old))
-               (num-imm (newsticker--stat-num-items (car feed) 'immortal))
-               (num-obs (newsticker--stat-num-items (car feed) 'obsolete)))
-           (when (or (> num-new 0)
-                     (and (> num-old 0)
-                          (not newsticker-hide-old-items-in-echo-area))
-                     (and (> num-imm 0)
-                          (not newsticker-hide-immortal-items-in-echo-area))
-                     (and (> num-obs 0)
-                          (not newsticker-hide-obsolete-items-in-echo-area)))
-             (setq have-something t)
-             (mapc
-              (lambda (item)
-                (let ((title (replace-regexp-in-string
-                              "[\r\n]+" " "
-                              (newsticker--title item)))
-                      (age (newsticker--age item)))
-                  (unless (string= title newsticker--error-headline)
-                    (when
-                        (or (eq age 'new)
-                            (and (eq age 'old)
-                                 (not newsticker-hide-old-items-in-echo-area))
-                            (and (eq age 'obsolete)
-                                 (not
-                                  newsticker-hide-obsolete-items-in-echo-area))
-                            (and (eq age 'immortal)
-                                 (not
-                                  
newsticker-hide-immortal-items-in-echo-area)))
-                      (setq title (newsticker--remove-whitespace title))
-                      ;; add to flash list
-                      (add-to-list 'newsticker--item-list
-                                   (concat feed-name ": " title) t)
-                      ;; and to the scrollable text
-                      (setq newsticker--scrollable-text
-                            (concat newsticker--scrollable-text
-                                    " " feed-name ": " title " +++"))))))
-                (cdr feed))))))
-     newsticker--cache)
-    (when have-something
-      (setq newsticker--scrollable-text
-            (concat "+++ "
-                    (format-time-string "%A, %H:%M"
-                                        newsticker--latest-update-time)
-                    " ++++++" newsticker--scrollable-text)))))
-
-(defun newsticker--ticker-text-remove (feed title)
-  "Remove the item of FEED with TITLE from the ticker text."
-  ;; reset scrollable text
-  (setq newsticker--item-position 0)
-  (let ((feed-name (symbol-name feed))
-        (t-title (replace-regexp-in-string "[\r\n]+" " " title)))
-    ;; remove from flash list
-    (setq newsticker--item-list (remove (concat feed-name ": " t-title)
-                                        newsticker--item-list))
-    ;; and from the scrollable text
-    (setq newsticker--scrollable-text
-          (replace-regexp-in-string
-           (regexp-quote (concat " " feed-name ": " t-title " +++"))
-           ""
-           newsticker--scrollable-text))
-    (if (string-match (concat "^\\+\\+\\+ [A-Z][a-z]+, "
-                              "[012]?[0-9]:[0-9][0-9] \\+\\+\\+\\+\\+\\+$")
-                              newsticker--scrollable-text)
-        (setq newsticker--scrollable-text ""))))
-
-(provide 'newsticker-ticker)
-
-;; arch-tag: faee3ebb-749b-4935-9835-7f36d4b700f0
-;;; newsticker-ticker.el ends here




reply via email to

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