emacs/lisp/net/newst-treeview.el

2184 lines
92 KiB
EmacsLisp
Raw Normal View History

;;; newst-treeview.el --- Treeview frontend for newsticker. -*- lexical-binding:t -*-
2008-06-08 15:36:18 +00:00
;; Copyright (C) 2008-2018 Free Software Foundation, Inc.
2008-06-08 15:36:18 +00:00
;; Author: Ulf Jasper <ulf.jasper@web.de>
2008-06-13 17:08:25 +00:00
;; Filename: newst-treeview.el
2008-06-08 15:36:18 +00:00
;; Created: 2007
;; Keywords: News, RSS, Atom
;; Package: newsticker
2008-06-08 15:36:18 +00:00
;; ======================================================================
2008-06-10 03:20:38 +00:00
;; This file is part of GNU Emacs.
2008-06-08 15:36:18 +00:00
;; 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 <https://www.gnu.org/licenses/>.
2008-06-08 15:36:18 +00:00
;; ======================================================================
;;; Commentary:
;; See newsticker.el
;; ======================================================================
;;; History:
2008-06-10 03:15:43 +00:00
;;
2008-06-08 15:36:18 +00:00
;; ======================================================================
;;; Code:
2009-12-06 19:49:04 +00:00
(require 'newst-reader)
2008-06-08 15:36:18 +00:00
(require 'widget)
(require 'tree-widget)
(require 'wid-edit)
;; ======================================================================
;;; Customization
;; ======================================================================
(defgroup newsticker-treeview nil
"Settings for the tree view reader."
:group 'newsticker-reader)
(defface newsticker-treeview-face
Face cleanups. Remove some uses of old-style face spec and :bold/:italic. * faces.el (set-face-attribute): Doc fix. (modify-face): Don't use :bold and :italic. (error, warning, success): Tweak definitions. * cus-edit.el (custom-modified, custom-invalid, custom-rogue) (custom-modified, custom-set, custom-changed, custom-themed) (custom-saved, custom-button, custom-button-mouse) (custom-button-pressed, custom-state, custom-comment-tag) (custom-variable-tag, custom-group-tag-1, custom-group-tag) (custom-group-subtitle): Use new-style face specs. (custom-invalid-face, custom-rogue-face, custom-modified-face) (custom-set-face, custom-changed-face, custom-saved-face) (custom-button-face, custom-button-pressed-face) (custom-documentation-face, custom-state-face) (custom-comment-face, custom-comment-tag-face) (custom-variable-tag-face, custom-variable-button-face) (custom-face-tag-face, custom-group-tag-face-1) (custom-group-tag-face): Remove obsolete face alias. * epa.el (epa-validity-high, epa-validity-medium) (epa-validity-low, epa-mark, epa-field-name, epa-string) (epa-field-name, epa-field-body): * font-lock.el (font-lock-comment-face, font-lock-string-face) (font-lock-keyword-face, font-lock-builtin-face) (font-lock-function-name-face, font-lock-variable-name-face) (font-lock-type-face, font-lock-constant-face): * ido.el (ido-first-match, ido-only-match, ido-subdir) (ido-virtual, ido-indicator, ido-incomplete-regexp): * speedbar.el (speedbar-button-face, speedbar-file-face) (speedbar-directory-face, speedbar-tag-face) (speedbar-selected-face, speedbar-highlight-face) (speedbar-separator-face): * whitespace.el (whitespace-newline, whitespace-space) (whitespace-hspace, whitespace-tab, whitespace-trailing) (whitespace-line, whitespace-space-before-tab) (whitespace-space-after-tab, whitespace-indentation) (whitespace-empty): * emulation/cua-base.el (cua-global-mark): * eshell/em-prompt.el (eshell-prompt): * net/newst-plainview.el (newsticker-new-item-face) (newsticker-old-item-face, newsticker-immortal-item-face) (newsticker-obsolete-item-face, newsticker-date-face) (newsticker-statistics-face, newsticker-default-face): * net/newst-reader.el (newsticker-feed-face) (newsticker-extra-face, newsticker-enclosure-face): * net/newst-treeview.el (newsticker-treeview-face) (newsticker-treeview-new-face, newsticker-treeview-old-face) (newsticker-treeview-immortal-face) (newsticker-treeview-obsolete-face) (newsticker-treeview-selection-face): * net/rcirc.el (rcirc-my-nick, rcirc-other-nick) (rcirc-bright-nick, rcirc-server, rcirc-timestamp) (rcirc-nick-in-message, rcirc-nick-in-message-full-line) (rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword): * nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator) (nxml-outline-active-indicator, nxml-outline-ellipsis): * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial) (mpuz-text): * progmodes/vera-mode.el (vera-font-lock-number) (vera-font-lock-function, vera-font-lock-interface): * textmodes/table.el (table-cell): Use new-style face specs, and don't use the old :bold and :italic attributes. * erc-button.el (erc-button): * erc-goodies.el (erc-bold-face, erc-inverse-face) (erc-underline-face, fg:erc-color-*): * erc-match.el (erc-current-nick-face, erc-dangerous-host-face) (erc-pal-face, erc-fool-face, erc-keyword-face): * erc-stamp.el (erc-timestamp-face): Likewise. * erc.el (erc-direct-msg-face, erc-header-line, erc-input-face) (erc-command-indicator-face, erc-notice-face, erc-action-face) (erc-error-face, erc-my-nick-face, erc-nick-default-face) (erc-nick-msg-face): Use new-style face specs, and avoid :bold. * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class) (ebrowse-member-attribute, ebrowse-default, ebrowse-file-name) (ebrowse-member-class, ebrowse-progress): Likewise. (ebrowse-tree-mark-face, ebrowse-root-class-face) (ebrowse-file-name-face, ebrowse-default-face) (ebrowse-member-attribute-face, ebrowse-member-class-face) (ebrowse-progress-face): Remove obsolete faces. * progmodes/flymake.el (flymake-errline, flymake-warnline): Inherit from error and warning faces respectively. * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): Likewise. (flyspell-incorrect-face, flyspell-duplicate-face): Remove obsolete aliases. * display.texi (Face Attributes): Font family does not accept wildcards. De-document obsolete :bold and :italic attributes. (Defining Faces): Use new-style face spec format.
2012-06-09 00:39:49 +08:00
'((((class color) (background dark)) :foreground "white")
(((class color) (background light)) :foreground "black"))
2008-06-08 15:36:18 +00:00
"Face for newsticker tree."
:group 'newsticker-treeview)
(defface newsticker-treeview-new-face
Face cleanups. Remove some uses of old-style face spec and :bold/:italic. * faces.el (set-face-attribute): Doc fix. (modify-face): Don't use :bold and :italic. (error, warning, success): Tweak definitions. * cus-edit.el (custom-modified, custom-invalid, custom-rogue) (custom-modified, custom-set, custom-changed, custom-themed) (custom-saved, custom-button, custom-button-mouse) (custom-button-pressed, custom-state, custom-comment-tag) (custom-variable-tag, custom-group-tag-1, custom-group-tag) (custom-group-subtitle): Use new-style face specs. (custom-invalid-face, custom-rogue-face, custom-modified-face) (custom-set-face, custom-changed-face, custom-saved-face) (custom-button-face, custom-button-pressed-face) (custom-documentation-face, custom-state-face) (custom-comment-face, custom-comment-tag-face) (custom-variable-tag-face, custom-variable-button-face) (custom-face-tag-face, custom-group-tag-face-1) (custom-group-tag-face): Remove obsolete face alias. * epa.el (epa-validity-high, epa-validity-medium) (epa-validity-low, epa-mark, epa-field-name, epa-string) (epa-field-name, epa-field-body): * font-lock.el (font-lock-comment-face, font-lock-string-face) (font-lock-keyword-face, font-lock-builtin-face) (font-lock-function-name-face, font-lock-variable-name-face) (font-lock-type-face, font-lock-constant-face): * ido.el (ido-first-match, ido-only-match, ido-subdir) (ido-virtual, ido-indicator, ido-incomplete-regexp): * speedbar.el (speedbar-button-face, speedbar-file-face) (speedbar-directory-face, speedbar-tag-face) (speedbar-selected-face, speedbar-highlight-face) (speedbar-separator-face): * whitespace.el (whitespace-newline, whitespace-space) (whitespace-hspace, whitespace-tab, whitespace-trailing) (whitespace-line, whitespace-space-before-tab) (whitespace-space-after-tab, whitespace-indentation) (whitespace-empty): * emulation/cua-base.el (cua-global-mark): * eshell/em-prompt.el (eshell-prompt): * net/newst-plainview.el (newsticker-new-item-face) (newsticker-old-item-face, newsticker-immortal-item-face) (newsticker-obsolete-item-face, newsticker-date-face) (newsticker-statistics-face, newsticker-default-face): * net/newst-reader.el (newsticker-feed-face) (newsticker-extra-face, newsticker-enclosure-face): * net/newst-treeview.el (newsticker-treeview-face) (newsticker-treeview-new-face, newsticker-treeview-old-face) (newsticker-treeview-immortal-face) (newsticker-treeview-obsolete-face) (newsticker-treeview-selection-face): * net/rcirc.el (rcirc-my-nick, rcirc-other-nick) (rcirc-bright-nick, rcirc-server, rcirc-timestamp) (rcirc-nick-in-message, rcirc-nick-in-message-full-line) (rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword): * nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator) (nxml-outline-active-indicator, nxml-outline-ellipsis): * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial) (mpuz-text): * progmodes/vera-mode.el (vera-font-lock-number) (vera-font-lock-function, vera-font-lock-interface): * textmodes/table.el (table-cell): Use new-style face specs, and don't use the old :bold and :italic attributes. * erc-button.el (erc-button): * erc-goodies.el (erc-bold-face, erc-inverse-face) (erc-underline-face, fg:erc-color-*): * erc-match.el (erc-current-nick-face, erc-dangerous-host-face) (erc-pal-face, erc-fool-face, erc-keyword-face): * erc-stamp.el (erc-timestamp-face): Likewise. * erc.el (erc-direct-msg-face, erc-header-line, erc-input-face) (erc-command-indicator-face, erc-notice-face, erc-action-face) (erc-error-face, erc-my-nick-face, erc-nick-default-face) (erc-nick-msg-face): Use new-style face specs, and avoid :bold. * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class) (ebrowse-member-attribute, ebrowse-default, ebrowse-file-name) (ebrowse-member-class, ebrowse-progress): Likewise. (ebrowse-tree-mark-face, ebrowse-root-class-face) (ebrowse-file-name-face, ebrowse-default-face) (ebrowse-member-attribute-face, ebrowse-member-class-face) (ebrowse-progress-face): Remove obsolete faces. * progmodes/flymake.el (flymake-errline, flymake-warnline): Inherit from error and warning faces respectively. * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): Likewise. (flyspell-incorrect-face, flyspell-duplicate-face): Remove obsolete aliases. * display.texi (Face Attributes): Font family does not accept wildcards. De-document obsolete :bold and :italic attributes. (Defining Faces): Use new-style face spec format.
2012-06-09 00:39:49 +08:00
'((t :inherit newsticker-treeview-face :weight bold))
2008-06-08 15:36:18 +00:00
"Face for newsticker tree."
:group 'newsticker-treeview)
(defface newsticker-treeview-old-face
Face cleanups. Remove some uses of old-style face spec and :bold/:italic. * faces.el (set-face-attribute): Doc fix. (modify-face): Don't use :bold and :italic. (error, warning, success): Tweak definitions. * cus-edit.el (custom-modified, custom-invalid, custom-rogue) (custom-modified, custom-set, custom-changed, custom-themed) (custom-saved, custom-button, custom-button-mouse) (custom-button-pressed, custom-state, custom-comment-tag) (custom-variable-tag, custom-group-tag-1, custom-group-tag) (custom-group-subtitle): Use new-style face specs. (custom-invalid-face, custom-rogue-face, custom-modified-face) (custom-set-face, custom-changed-face, custom-saved-face) (custom-button-face, custom-button-pressed-face) (custom-documentation-face, custom-state-face) (custom-comment-face, custom-comment-tag-face) (custom-variable-tag-face, custom-variable-button-face) (custom-face-tag-face, custom-group-tag-face-1) (custom-group-tag-face): Remove obsolete face alias. * epa.el (epa-validity-high, epa-validity-medium) (epa-validity-low, epa-mark, epa-field-name, epa-string) (epa-field-name, epa-field-body): * font-lock.el (font-lock-comment-face, font-lock-string-face) (font-lock-keyword-face, font-lock-builtin-face) (font-lock-function-name-face, font-lock-variable-name-face) (font-lock-type-face, font-lock-constant-face): * ido.el (ido-first-match, ido-only-match, ido-subdir) (ido-virtual, ido-indicator, ido-incomplete-regexp): * speedbar.el (speedbar-button-face, speedbar-file-face) (speedbar-directory-face, speedbar-tag-face) (speedbar-selected-face, speedbar-highlight-face) (speedbar-separator-face): * whitespace.el (whitespace-newline, whitespace-space) (whitespace-hspace, whitespace-tab, whitespace-trailing) (whitespace-line, whitespace-space-before-tab) (whitespace-space-after-tab, whitespace-indentation) (whitespace-empty): * emulation/cua-base.el (cua-global-mark): * eshell/em-prompt.el (eshell-prompt): * net/newst-plainview.el (newsticker-new-item-face) (newsticker-old-item-face, newsticker-immortal-item-face) (newsticker-obsolete-item-face, newsticker-date-face) (newsticker-statistics-face, newsticker-default-face): * net/newst-reader.el (newsticker-feed-face) (newsticker-extra-face, newsticker-enclosure-face): * net/newst-treeview.el (newsticker-treeview-face) (newsticker-treeview-new-face, newsticker-treeview-old-face) (newsticker-treeview-immortal-face) (newsticker-treeview-obsolete-face) (newsticker-treeview-selection-face): * net/rcirc.el (rcirc-my-nick, rcirc-other-nick) (rcirc-bright-nick, rcirc-server, rcirc-timestamp) (rcirc-nick-in-message, rcirc-nick-in-message-full-line) (rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword): * nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator) (nxml-outline-active-indicator, nxml-outline-ellipsis): * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial) (mpuz-text): * progmodes/vera-mode.el (vera-font-lock-number) (vera-font-lock-function, vera-font-lock-interface): * textmodes/table.el (table-cell): Use new-style face specs, and don't use the old :bold and :italic attributes. * erc-button.el (erc-button): * erc-goodies.el (erc-bold-face, erc-inverse-face) (erc-underline-face, fg:erc-color-*): * erc-match.el (erc-current-nick-face, erc-dangerous-host-face) (erc-pal-face, erc-fool-face, erc-keyword-face): * erc-stamp.el (erc-timestamp-face): Likewise. * erc.el (erc-direct-msg-face, erc-header-line, erc-input-face) (erc-command-indicator-face, erc-notice-face, erc-action-face) (erc-error-face, erc-my-nick-face, erc-nick-default-face) (erc-nick-msg-face): Use new-style face specs, and avoid :bold. * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class) (ebrowse-member-attribute, ebrowse-default, ebrowse-file-name) (ebrowse-member-class, ebrowse-progress): Likewise. (ebrowse-tree-mark-face, ebrowse-root-class-face) (ebrowse-file-name-face, ebrowse-default-face) (ebrowse-member-attribute-face, ebrowse-member-class-face) (ebrowse-progress-face): Remove obsolete faces. * progmodes/flymake.el (flymake-errline, flymake-warnline): Inherit from error and warning faces respectively. * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): Likewise. (flyspell-incorrect-face, flyspell-duplicate-face): Remove obsolete aliases. * display.texi (Face Attributes): Font family does not accept wildcards. De-document obsolete :bold and :italic attributes. (Defining Faces): Use new-style face spec format.
2012-06-09 00:39:49 +08:00
'((t :inherit newsticker-treeview-face))
2008-06-08 15:36:18 +00:00
"Face for newsticker tree."
:group 'newsticker-treeview)
(defface newsticker-treeview-immortal-face
Face cleanups. Remove some uses of old-style face spec and :bold/:italic. * faces.el (set-face-attribute): Doc fix. (modify-face): Don't use :bold and :italic. (error, warning, success): Tweak definitions. * cus-edit.el (custom-modified, custom-invalid, custom-rogue) (custom-modified, custom-set, custom-changed, custom-themed) (custom-saved, custom-button, custom-button-mouse) (custom-button-pressed, custom-state, custom-comment-tag) (custom-variable-tag, custom-group-tag-1, custom-group-tag) (custom-group-subtitle): Use new-style face specs. (custom-invalid-face, custom-rogue-face, custom-modified-face) (custom-set-face, custom-changed-face, custom-saved-face) (custom-button-face, custom-button-pressed-face) (custom-documentation-face, custom-state-face) (custom-comment-face, custom-comment-tag-face) (custom-variable-tag-face, custom-variable-button-face) (custom-face-tag-face, custom-group-tag-face-1) (custom-group-tag-face): Remove obsolete face alias. * epa.el (epa-validity-high, epa-validity-medium) (epa-validity-low, epa-mark, epa-field-name, epa-string) (epa-field-name, epa-field-body): * font-lock.el (font-lock-comment-face, font-lock-string-face) (font-lock-keyword-face, font-lock-builtin-face) (font-lock-function-name-face, font-lock-variable-name-face) (font-lock-type-face, font-lock-constant-face): * ido.el (ido-first-match, ido-only-match, ido-subdir) (ido-virtual, ido-indicator, ido-incomplete-regexp): * speedbar.el (speedbar-button-face, speedbar-file-face) (speedbar-directory-face, speedbar-tag-face) (speedbar-selected-face, speedbar-highlight-face) (speedbar-separator-face): * whitespace.el (whitespace-newline, whitespace-space) (whitespace-hspace, whitespace-tab, whitespace-trailing) (whitespace-line, whitespace-space-before-tab) (whitespace-space-after-tab, whitespace-indentation) (whitespace-empty): * emulation/cua-base.el (cua-global-mark): * eshell/em-prompt.el (eshell-prompt): * net/newst-plainview.el (newsticker-new-item-face) (newsticker-old-item-face, newsticker-immortal-item-face) (newsticker-obsolete-item-face, newsticker-date-face) (newsticker-statistics-face, newsticker-default-face): * net/newst-reader.el (newsticker-feed-face) (newsticker-extra-face, newsticker-enclosure-face): * net/newst-treeview.el (newsticker-treeview-face) (newsticker-treeview-new-face, newsticker-treeview-old-face) (newsticker-treeview-immortal-face) (newsticker-treeview-obsolete-face) (newsticker-treeview-selection-face): * net/rcirc.el (rcirc-my-nick, rcirc-other-nick) (rcirc-bright-nick, rcirc-server, rcirc-timestamp) (rcirc-nick-in-message, rcirc-nick-in-message-full-line) (rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword): * nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator) (nxml-outline-active-indicator, nxml-outline-ellipsis): * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial) (mpuz-text): * progmodes/vera-mode.el (vera-font-lock-number) (vera-font-lock-function, vera-font-lock-interface): * textmodes/table.el (table-cell): Use new-style face specs, and don't use the old :bold and :italic attributes. * erc-button.el (erc-button): * erc-goodies.el (erc-bold-face, erc-inverse-face) (erc-underline-face, fg:erc-color-*): * erc-match.el (erc-current-nick-face, erc-dangerous-host-face) (erc-pal-face, erc-fool-face, erc-keyword-face): * erc-stamp.el (erc-timestamp-face): Likewise. * erc.el (erc-direct-msg-face, erc-header-line, erc-input-face) (erc-command-indicator-face, erc-notice-face, erc-action-face) (erc-error-face, erc-my-nick-face, erc-nick-default-face) (erc-nick-msg-face): Use new-style face specs, and avoid :bold. * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class) (ebrowse-member-attribute, ebrowse-default, ebrowse-file-name) (ebrowse-member-class, ebrowse-progress): Likewise. (ebrowse-tree-mark-face, ebrowse-root-class-face) (ebrowse-file-name-face, ebrowse-default-face) (ebrowse-member-attribute-face, ebrowse-member-class-face) (ebrowse-progress-face): Remove obsolete faces. * progmodes/flymake.el (flymake-errline, flymake-warnline): Inherit from error and warning faces respectively. * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): Likewise. (flyspell-incorrect-face, flyspell-duplicate-face): Remove obsolete aliases. * display.texi (Face Attributes): Font family does not accept wildcards. De-document obsolete :bold and :italic attributes. (Defining Faces): Use new-style face spec format.
2012-06-09 00:39:49 +08:00
'((default :inherit newsticker-treeview-face :slant italic)
(((class color) (background dark)) :foreground "orange")
(((class color) (background light)) :foreground "blue"))
2008-06-08 15:36:18 +00:00
"Face for newsticker tree."
:group 'newsticker-treeview)
(defface newsticker-treeview-obsolete-face
Face cleanups. Remove some uses of old-style face spec and :bold/:italic. * faces.el (set-face-attribute): Doc fix. (modify-face): Don't use :bold and :italic. (error, warning, success): Tweak definitions. * cus-edit.el (custom-modified, custom-invalid, custom-rogue) (custom-modified, custom-set, custom-changed, custom-themed) (custom-saved, custom-button, custom-button-mouse) (custom-button-pressed, custom-state, custom-comment-tag) (custom-variable-tag, custom-group-tag-1, custom-group-tag) (custom-group-subtitle): Use new-style face specs. (custom-invalid-face, custom-rogue-face, custom-modified-face) (custom-set-face, custom-changed-face, custom-saved-face) (custom-button-face, custom-button-pressed-face) (custom-documentation-face, custom-state-face) (custom-comment-face, custom-comment-tag-face) (custom-variable-tag-face, custom-variable-button-face) (custom-face-tag-face, custom-group-tag-face-1) (custom-group-tag-face): Remove obsolete face alias. * epa.el (epa-validity-high, epa-validity-medium) (epa-validity-low, epa-mark, epa-field-name, epa-string) (epa-field-name, epa-field-body): * font-lock.el (font-lock-comment-face, font-lock-string-face) (font-lock-keyword-face, font-lock-builtin-face) (font-lock-function-name-face, font-lock-variable-name-face) (font-lock-type-face, font-lock-constant-face): * ido.el (ido-first-match, ido-only-match, ido-subdir) (ido-virtual, ido-indicator, ido-incomplete-regexp): * speedbar.el (speedbar-button-face, speedbar-file-face) (speedbar-directory-face, speedbar-tag-face) (speedbar-selected-face, speedbar-highlight-face) (speedbar-separator-face): * whitespace.el (whitespace-newline, whitespace-space) (whitespace-hspace, whitespace-tab, whitespace-trailing) (whitespace-line, whitespace-space-before-tab) (whitespace-space-after-tab, whitespace-indentation) (whitespace-empty): * emulation/cua-base.el (cua-global-mark): * eshell/em-prompt.el (eshell-prompt): * net/newst-plainview.el (newsticker-new-item-face) (newsticker-old-item-face, newsticker-immortal-item-face) (newsticker-obsolete-item-face, newsticker-date-face) (newsticker-statistics-face, newsticker-default-face): * net/newst-reader.el (newsticker-feed-face) (newsticker-extra-face, newsticker-enclosure-face): * net/newst-treeview.el (newsticker-treeview-face) (newsticker-treeview-new-face, newsticker-treeview-old-face) (newsticker-treeview-immortal-face) (newsticker-treeview-obsolete-face) (newsticker-treeview-selection-face): * net/rcirc.el (rcirc-my-nick, rcirc-other-nick) (rcirc-bright-nick, rcirc-server, rcirc-timestamp) (rcirc-nick-in-message, rcirc-nick-in-message-full-line) (rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword): * nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator) (nxml-outline-active-indicator, nxml-outline-ellipsis): * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial) (mpuz-text): * progmodes/vera-mode.el (vera-font-lock-number) (vera-font-lock-function, vera-font-lock-interface): * textmodes/table.el (table-cell): Use new-style face specs, and don't use the old :bold and :italic attributes. * erc-button.el (erc-button): * erc-goodies.el (erc-bold-face, erc-inverse-face) (erc-underline-face, fg:erc-color-*): * erc-match.el (erc-current-nick-face, erc-dangerous-host-face) (erc-pal-face, erc-fool-face, erc-keyword-face): * erc-stamp.el (erc-timestamp-face): Likewise. * erc.el (erc-direct-msg-face, erc-header-line, erc-input-face) (erc-command-indicator-face, erc-notice-face, erc-action-face) (erc-error-face, erc-my-nick-face, erc-nick-default-face) (erc-nick-msg-face): Use new-style face specs, and avoid :bold. * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class) (ebrowse-member-attribute, ebrowse-default, ebrowse-file-name) (ebrowse-member-class, ebrowse-progress): Likewise. (ebrowse-tree-mark-face, ebrowse-root-class-face) (ebrowse-file-name-face, ebrowse-default-face) (ebrowse-member-attribute-face, ebrowse-member-class-face) (ebrowse-progress-face): Remove obsolete faces. * progmodes/flymake.el (flymake-errline, flymake-warnline): Inherit from error and warning faces respectively. * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): Likewise. (flyspell-incorrect-face, flyspell-duplicate-face): Remove obsolete aliases. * display.texi (Face Attributes): Font family does not accept wildcards. De-document obsolete :bold and :italic attributes. (Defining Faces): Use new-style face spec format.
2012-06-09 00:39:49 +08:00
'((t :inherit newsticker-treeview-face :strike-through t))
2008-06-08 15:36:18 +00:00
"Face for newsticker tree."
:group 'newsticker-treeview)
(defface newsticker-treeview-selection-face
'((((class color) (background dark)) :background "#4444aa")
Face cleanups. Remove some uses of old-style face spec and :bold/:italic. * faces.el (set-face-attribute): Doc fix. (modify-face): Don't use :bold and :italic. (error, warning, success): Tweak definitions. * cus-edit.el (custom-modified, custom-invalid, custom-rogue) (custom-modified, custom-set, custom-changed, custom-themed) (custom-saved, custom-button, custom-button-mouse) (custom-button-pressed, custom-state, custom-comment-tag) (custom-variable-tag, custom-group-tag-1, custom-group-tag) (custom-group-subtitle): Use new-style face specs. (custom-invalid-face, custom-rogue-face, custom-modified-face) (custom-set-face, custom-changed-face, custom-saved-face) (custom-button-face, custom-button-pressed-face) (custom-documentation-face, custom-state-face) (custom-comment-face, custom-comment-tag-face) (custom-variable-tag-face, custom-variable-button-face) (custom-face-tag-face, custom-group-tag-face-1) (custom-group-tag-face): Remove obsolete face alias. * epa.el (epa-validity-high, epa-validity-medium) (epa-validity-low, epa-mark, epa-field-name, epa-string) (epa-field-name, epa-field-body): * font-lock.el (font-lock-comment-face, font-lock-string-face) (font-lock-keyword-face, font-lock-builtin-face) (font-lock-function-name-face, font-lock-variable-name-face) (font-lock-type-face, font-lock-constant-face): * ido.el (ido-first-match, ido-only-match, ido-subdir) (ido-virtual, ido-indicator, ido-incomplete-regexp): * speedbar.el (speedbar-button-face, speedbar-file-face) (speedbar-directory-face, speedbar-tag-face) (speedbar-selected-face, speedbar-highlight-face) (speedbar-separator-face): * whitespace.el (whitespace-newline, whitespace-space) (whitespace-hspace, whitespace-tab, whitespace-trailing) (whitespace-line, whitespace-space-before-tab) (whitespace-space-after-tab, whitespace-indentation) (whitespace-empty): * emulation/cua-base.el (cua-global-mark): * eshell/em-prompt.el (eshell-prompt): * net/newst-plainview.el (newsticker-new-item-face) (newsticker-old-item-face, newsticker-immortal-item-face) (newsticker-obsolete-item-face, newsticker-date-face) (newsticker-statistics-face, newsticker-default-face): * net/newst-reader.el (newsticker-feed-face) (newsticker-extra-face, newsticker-enclosure-face): * net/newst-treeview.el (newsticker-treeview-face) (newsticker-treeview-new-face, newsticker-treeview-old-face) (newsticker-treeview-immortal-face) (newsticker-treeview-obsolete-face) (newsticker-treeview-selection-face): * net/rcirc.el (rcirc-my-nick, rcirc-other-nick) (rcirc-bright-nick, rcirc-server, rcirc-timestamp) (rcirc-nick-in-message, rcirc-nick-in-message-full-line) (rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword): * nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator) (nxml-outline-active-indicator, nxml-outline-ellipsis): * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial) (mpuz-text): * progmodes/vera-mode.el (vera-font-lock-number) (vera-font-lock-function, vera-font-lock-interface): * textmodes/table.el (table-cell): Use new-style face specs, and don't use the old :bold and :italic attributes. * erc-button.el (erc-button): * erc-goodies.el (erc-bold-face, erc-inverse-face) (erc-underline-face, fg:erc-color-*): * erc-match.el (erc-current-nick-face, erc-dangerous-host-face) (erc-pal-face, erc-fool-face, erc-keyword-face): * erc-stamp.el (erc-timestamp-face): Likewise. * erc.el (erc-direct-msg-face, erc-header-line, erc-input-face) (erc-command-indicator-face, erc-notice-face, erc-action-face) (erc-error-face, erc-my-nick-face, erc-nick-default-face) (erc-nick-msg-face): Use new-style face specs, and avoid :bold. * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class) (ebrowse-member-attribute, ebrowse-default, ebrowse-file-name) (ebrowse-member-class, ebrowse-progress): Likewise. (ebrowse-tree-mark-face, ebrowse-root-class-face) (ebrowse-file-name-face, ebrowse-default-face) (ebrowse-member-attribute-face, ebrowse-member-class-face) (ebrowse-progress-face): Remove obsolete faces. * progmodes/flymake.el (flymake-errline, flymake-warnline): Inherit from error and warning faces respectively. * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): Likewise. (flyspell-incorrect-face, flyspell-duplicate-face): Remove obsolete aliases. * display.texi (Face Attributes): Font family does not accept wildcards. De-document obsolete :bold and :italic attributes. (Defining Faces): Use new-style face spec format.
2012-06-09 00:39:49 +08:00
(((class color) (background light)) :background "#bbbbff"))
2008-06-08 15:36:18 +00:00
"Face for newsticker selection."
:group 'newsticker-treeview)
(defcustom newsticker-treeview-date-format
"%d.%m.%y, %H:%M"
"Format for the date column in the treeview list buffer.
See `format-time-string' for a list of valid specifiers."
:version "25.1"
:type 'string
:group 'newsticker-treeview)
2008-06-08 15:36:18 +00:00
(defcustom newsticker-treeview-own-frame
nil
"Decides whether newsticker treeview creates and uses its own frame."
2008-06-08 15:36:18 +00:00
:type 'boolean
:group 'newsticker-treeview)
(defcustom newsticker-treeview-treewindow-width
30
"Width of tree window in treeview layout.
See also `newsticker-treeview-listwindow-height'."
:type 'integer
:group 'newsticker-treeview)
(defcustom newsticker-treeview-listwindow-height
10
"Height of list window in treeview layout.
See also `newsticker-treeview-treewindow-width'."
:type 'integer
:group 'newsticker-treeview)
2008-06-08 15:36:18 +00:00
(defcustom newsticker-treeview-automatically-mark-displayed-items-as-old
t
"Decides whether to automatically mark displayed items as old.
If t an item is marked as old as soon as it is displayed. This
applies to newsticker only."
:type 'boolean
:group 'newsticker-treeview)
(defvar newsticker-groups
'("Feeds")
"List of feed groups, used in the treeview frontend.
First element is a string giving the group name. Remaining
elements are either strings giving a feed name or lists having
the same structure as `newsticker-groups'. (newsticker-groups :=
groupdefinition, groupdefinition := groupname groupcontent*,
groupcontent := feedname | groupdefinition)
Example: (\"Topmost group\" \"feed1\" (\"subgroup1\" \"feed 2\")
\"feed3\")")
2008-06-08 15:36:18 +00:00
(defcustom newsticker-groups-filename
nil
"Name of the newsticker groups settings file."
:version "25.1" ; changed default value to nil
:type '(choice (const nil) string)
2008-06-08 15:36:18 +00:00
:group 'newsticker-treeview)
Use declare forms, where possible, to mark obsolete functions. * lisp/allout.el (allout-passphrase-hint-string): Likewise. (allout-init): Use a declare form to mark obsolete. * lisp/calendar/calendar.el (calendar-version): * lisp/calendar/icalendar.el (icalendar-extract-ical-from-buffer) (icalendar-convert-diary-to-ical): * lisp/cus-edit.el (custom-mode): * lisp/ansi-color.el (ansi-color-unfontify-region): * lisp/international/latin1-disp.el (latin1-char-displayable-p): * lisp/progmodes/cwarn.el (turn-on-cwarn-mode): * lisp/progmodes/which-func.el (which-func-update-1): Use define-obsolete-function-alias. * lisp/bookmark.el (bookmark-jump-noselect): Use a declare form to mark this function obsolete. * lisp/calendar/cal-x.el (calendar-two-frame-setup) (calendar-only-one-frame-setup, calendar-one-frame-setup): * lisp/calendar/calendar.el (american-calendar, european-calendar) (calendar-for-loop): * lisp/comint.el (comint-dynamic-simple-complete) (comint-dynamic-complete-as-filename, comint-unquote-filename): * lisp/desktop.el (desktop-load-default): * lisp/dired-x.el (dired-omit-here-always) (dired-hack-local-variables, dired-default-directory): * lisp/emacs-lisp/derived.el (derived-mode-class): * lisp/emacs-lisp/timer.el (timer-set-time-with-usecs): * lisp/emacs-lock.el (toggle-emacs-lock): * lisp/epa.el (epa-display-verify-result): * lisp/epg.el (epg-sign-keys, epg-start-sign-keys) (epg-passphrase-callback-function): * lisp/eshell/esh-util.el (eshell-for): * lisp/eshell/eshell.el (eshell-remove-from-window-buffer-names) (eshell-add-to-window-buffer-names): * lisp/files.el (locate-file-completion): * lisp/imenu.el (imenu-example--create-c-index) (imenu-example--create-lisp-index) (imenu-example--lisp-extract-index-name) (imenu-example--name-and-position): * lisp/international/mule-cmds.el (princ-list): * lisp/international/mule-diag.el (decode-codepage-char): * lisp/international/mule-util.el (detect-coding-with-priority): * lisp/iswitchb.el (iswitchb-read-buffer): * lisp/mail/mailalias.el (mail-complete): * lisp/mail/sendmail.el (mail-sent-via): * lisp/mouse.el (mouse-popup-menubar-stuff, mouse-popup-menubar) (mouse-major-mode-menu): * lisp/password-cache.el (password-read-and-add): * lisp/pcomplete.el (pcomplete-parse-comint-arguments): * lisp/progmodes/sh-script.el (sh-maybe-here-document): * lisp/replace.el (query-replace-regexp-eval): * lisp/savehist.el (savehist-load): * lisp/simple.el (choose-completion-delete-max-match): * lisp/term.el (term-dynamic-simple-complete): * lisp/vc/ediff-init.el (ediff-check-version): * lisp/vc/ediff-wind.el (ediff-choose-window-setup-function-automatically): * lisp/vc/vc.el (vc-diff-switches-list): * lisp/view.el (view-return-to-alist-update): Likewise. * lisp/iswitchb.el (iswitchb-read-buffer): Move code of iswitchb-define-mode-map here, and delete that obsolete function. * lisp/subr.el (eval-next-after-load, makehash, insert-string) (assoc-ignore-representation, assoc-ignore-case): Use declare to mark obsolete. (mode-line-inverse-video): Variable deleted. * lisp/emacs-lisp/byte-run.el (make-obsolete): Doc fix; emphasize that this applies to functions. * lisp/erc/erc.el (erc-send-command): Use define-obsolete-function-alias. * lisp/international/mule-util.el (string-to-sequence): Remove. * lisp/net/newst-backend.el (newsticker-cache-filename): * lisp/net/newst-treeview.el (newsticker-groups-filename): Fix incorrect obsolescence declaration. * lisp/net/snmp-mode.el (snmp-font-lock-keywords-3): Don't use obsolete font-lock-reference-face. * lisp/url/url-parse.el (url-recreate-url-attributes): * lisp/url/url-util.el (url-generate-unique-filename): Use declare to mark obsolete. * src/xdisp.c (mode_line_inverse_video): Delete obsolete variable.
2012-09-25 12:13:02 +08:00
(make-obsolete-variable 'newsticker-groups-filename 'newsticker-dir "23.1")
2008-06-08 15:36:18 +00:00
;; ======================================================================
;;; internal variables
;; ======================================================================
(defvar newsticker--treeview-windows nil)
(defvar newsticker--treeview-buffers nil)
2008-11-24 19:40:35 +00:00
(defvar newsticker--treeview-current-feed nil
"Feed name of currently shown item.")
2008-06-08 15:36:18 +00:00
(defvar newsticker--treeview-current-vfeed nil)
(defvar newsticker--treeview-list-show-feed nil)
(defvar newsticker--saved-window-config nil)
(defvar newsticker--selection-overlay nil
"Highlight the selected tree node.")
(defvar newsticker--tree-selection-overlay nil
"Highlight the selected list item.")
(defvar newsticker--frame nil "Special frame for newsticker windows.")
(defvar newsticker--treeview-list-sort-order 'sort-by-time)
(defvar newsticker--treeview-current-node-id nil)
(defvar newsticker--treeview-current-tree nil)
(defvar newsticker--treeview-feed-tree nil)
(defvar newsticker--treeview-vfeed-tree nil)
;; maps for the clickable portions
(defvar newsticker--treeview-url-keymap
(let ((map (make-sparse-keymap 'newsticker--treeview-url-keymap)))
(define-key map [mouse-1] 'newsticker-treeview-mouse-browse-url)
(define-key map [mouse-2] 'newsticker-treeview-mouse-browse-url)
(define-key map "\n" 'newsticker-treeview-browse-url)
(define-key map "\C-m" 'newsticker-treeview-browse-url)
(define-key map [(control return)] 'newsticker-handle-url)
map)
"Key map for click-able headings in the newsticker treeview buffers.")
;; ======================================================================
;;; short cuts
;; ======================================================================
(defsubst newsticker--treeview-tree-buffer ()
"Return the tree buffer of the newsticker treeview."
(nth 0 newsticker--treeview-buffers))
(defsubst newsticker--treeview-list-buffer ()
"Return the list buffer of the newsticker treeview."
(nth 1 newsticker--treeview-buffers))
(defsubst newsticker--treeview-item-buffer ()
"Return the item buffer of the newsticker treeview."
(nth 2 newsticker--treeview-buffers))
(defsubst newsticker--treeview-tree-window ()
"Return the tree window of the newsticker treeview."
(nth 0 newsticker--treeview-windows))
(defsubst newsticker--treeview-list-window ()
"Return the list window of the newsticker treeview."
(nth 1 newsticker--treeview-windows))
(defsubst newsticker--treeview-item-window ()
"Return the item window of the newsticker treeview."
(nth 2 newsticker--treeview-windows))
;; ======================================================================
;;; utility functions
;; ======================================================================
(defun newsticker--treeview-get-id (parent i)
"Create an id for a newsticker treeview node.
PARENT is the node's parent, I is an integer."
;;(message "newsticker--treeview-get-id %s"
;; (format "%s-%d" (widget-get parent :nt-id) i))
(format "%s-%d" (widget-get parent :nt-id) i))
(defun newsticker--treeview-ids-eq (id1 id2)
"Return non-nil if ids ID1 and ID2 are equal."
;;(message "%s/%s" (or id1 -1) (or id2 -1))
(and id1 id2 (string= id1 id2)))
(defun newsticker--treeview-nodes-eq (node1 node2)
"Compare treeview nodes NODE1 and NODE2 for equality.
Nodes are equal if the have the same newsticker-id. Note that
during re-tagging and collapsing/expanding nodes change, while
their id stays constant."
(let ((id1 (widget-get node1 :nt-id))
(id2 (widget-get node2 :nt-id)))
;;(message "%s/%s %s/%s" (widget-get node1 :tag) (widget-get node2 :tag)
;; (or id1 -1) (or id2 -1))
(or (newsticker--treeview-ids-eq id1 id2)
(string= (widget-get node1 :nt-feed) (widget-get node2 :nt-feed)))))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-do-get-node-of-feed (feed-name startnode)
2011-11-15 18:37:37 +01:00
"Recursively search node for feed FEED-NAME starting from STARTNODE."
2008-06-08 15:36:18 +00:00
;;(message "%s/%s" feed-name (widget-get startnode :nt-feed))
(if (string= feed-name (or (widget-get startnode :nt-feed)
(widget-get startnode :nt-vfeed)))
(throw 'found startnode)
(let ((children (widget-get startnode :children)))
(dolist (w children)
(newsticker--treeview-do-get-node-of-feed feed-name w)))))
(defun newsticker--treeview-get-node-of-feed (feed-name)
"Return node for feed FEED-NAME in newsticker treeview tree."
(catch 'found
(newsticker--treeview-do-get-node-of-feed feed-name
newsticker--treeview-feed-tree)
(newsticker--treeview-do-get-node-of-feed feed-name
newsticker--treeview-vfeed-tree)))
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(defun newsticker--treeview-do-get-node-by-id (id startnode)
2011-11-15 18:37:37 +01:00
"Recursively search node with ID starting from STARTNODE."
2008-06-08 15:36:18 +00:00
(if (newsticker--treeview-ids-eq id (widget-get startnode :nt-id))
(throw 'found startnode)
(let ((children (widget-get startnode :children)))
(dolist (w children)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(newsticker--treeview-do-get-node-by-id id w)))))
2008-06-08 15:36:18 +00:00
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(defun newsticker--treeview-get-node-by-id (id)
2008-06-08 15:36:18 +00:00
"Return node with ID in newsticker treeview tree."
(catch 'found
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(newsticker--treeview-do-get-node-by-id id newsticker--treeview-feed-tree)
(newsticker--treeview-do-get-node-by-id id newsticker--treeview-vfeed-tree)))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-get-current-node ()
"Return current node in newsticker treeview tree."
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(newsticker--treeview-get-node-by-id newsticker--treeview-current-node-id))
2008-06-08 15:36:18 +00:00
;; ======================================================================
(unless (fboundp 'declare-function) (defmacro declare-function (&rest _)))
(declare-function w3m-toggle-inline-images "ext:w3m" (&optional force no-cache))
(defvar w3m-fill-column)
(defvar w3-maximum-line-length)
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-render-text (start end)
"Render text between markers START and END."
(if newsticker-html-renderer
(condition-case error-data
;; Need to save selected window in order to prevent mixing
;; up contents of the item buffer. This happens with shr
;; which does some smart optimizations that apparently
;; interfere with our own, maybe not-so-smart, optimizations.
(save-selected-window
(save-excursion
(set-marker-insertion-type end t)
;; check whether it is necessary to call html renderer
;; (regexp inspired by htmlr.el)
(goto-char start)
(when (re-search-forward
"</?[A-Za-z1-6]*\\|&#?[A-Za-z0-9]+;" end t)
;; (message "%s" (newsticker--title item))
(let ((w3m-fill-column (if newsticker-use-full-width
-1 fill-column))
(w3-maximum-line-length
(if newsticker-use-full-width nil fill-column)))
(select-window (newsticker--treeview-item-window))
(save-excursion
(funcall newsticker-html-renderer start end)))
;;(cond ((eq newsticker-html-renderer 'w3m-region)
;; (add-text-properties start end (list 'keymap
;; w3m-minor-mode-map)))
;;((eq newsticker-html-renderer 'w3-region)
;;(add-text-properties start end (list 'keymap w3-mode-map))))
(if (eq newsticker-html-renderer 'w3m-region)
(w3m-toggle-inline-images t))
t)))
2008-06-08 15:36:18 +00:00
(error
(message "Error: HTML rendering failed: %s, %s"
(car error-data) (cdr error-data))
nil))
nil))
;; ======================================================================
;;; List window
;; ======================================================================
(defun newsticker--treeview-list-add-item (item feed &optional show-feed)
"Add news ITEM for FEED to newsticker treeview list window.
If string SHOW-FEED is non-nil it is shown in the item string."
(setq newsticker--treeview-list-show-feed show-feed)
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
2008-06-08 15:36:18 +00:00
(let* ((inhibit-read-only t)
pos1 pos2)
(goto-char (point-max))
(setq pos1 (point-marker))
(insert " ")
(insert (propertize " " 'display '(space :align-to 2)))
(insert (if show-feed
(concat
(substring
(format "%-10s" (newsticker--real-feed-name
feed))
0 10)
(propertize " " 'display '(space :align-to 12)))
""))
(insert (format-time-string newsticker-treeview-date-format
2008-06-08 15:36:18 +00:00
(newsticker--time item)))
(insert (propertize " " 'display
(list 'space :align-to (if show-feed 28 18))))
(setq pos2 (point-marker))
(insert (newsticker--title item))
(insert "\n")
(newsticker--treeview-render-text pos2 (point-marker))
(goto-char pos2)
(while (search-forward "\n" nil t)
(replace-match " "))
(let ((map (make-sparse-keymap)))
(dolist (key'([mouse-1] [mouse-3]))
(define-key map key 'newsticker-treeview-tree-click))
2008-06-08 15:36:18 +00:00
(define-key map "\n" 'newsticker-treeview-show-item)
(define-key map "\C-m" 'newsticker-treeview-show-item)
(add-text-properties pos1 (point-max)
(list :nt-item item
:nt-feed feed
:nt-link (newsticker--link item)
'mouse-face 'highlight
'keymap map
'help-echo (buffer-substring pos2
(point-max)))))
2008-06-08 15:36:18 +00:00
(insert "\n"))))
(defun newsticker--treeview-list-clear ()
"Clear the newsticker treeview list window."
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
2008-06-08 15:36:18 +00:00
(let ((inhibit-read-only t))
(erase-buffer)
(kill-all-local-variables)
(remove-overlays))))
(defun newsticker--treeview-list-items-with-age-callback (widget
_changed-widget
2008-06-08 15:36:18 +00:00
&rest ages)
"Fill newsticker treeview list window with items of certain age.
This is a callback function for the treeview nodes.
Argument WIDGET is the calling treeview widget.
Argument CHANGED-WIDGET is the widget that actually has changed.
Optional argument AGES is the list of ages that are to be shown."
(newsticker--treeview-list-clear)
(widget-put widget :nt-selected t)
(apply #'newsticker--treeview-list-items-with-age ages))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-list-items-with-age (&rest ages)
"Actually fill newsticker treeview list window with items of certain age.
AGES is the list of ages that are to be shown."
(mapc (lambda (feed)
(let ((feed-name-symbol (intern (car feed))))
(mapc (lambda (item)
(when (memq (newsticker--age item) ages)
(newsticker--treeview-list-add-item
item feed-name-symbol t)))
(newsticker--treeview-list-sort-items
(cdr (newsticker--cache-get-feed feed-name-symbol))))))
(append newsticker-url-list-defaults newsticker-url-list))
(newsticker--treeview-list-update nil))
(defun newsticker--treeview-list-new-items (widget changed-widget
&optional _event)
2008-06-08 15:36:18 +00:00
"Fill newsticker treeview list window with new items.
This is a callback function for the treeview nodes.
Argument WIDGET is the calling treeview widget.
Argument CHANGED-WIDGET is the widget that actually has changed.
Optional argument EVENT is the mouse event that triggered this action."
2008-06-08 15:36:18 +00:00
(newsticker--treeview-list-items-with-age-callback widget changed-widget
'new)
(newsticker--treeview-item-show-text
"New items"
"This is a virtual feed containing all new items"))
(defun newsticker--treeview-list-immortal-items (widget changed-widget
&optional _event)
2008-06-08 15:36:18 +00:00
"Fill newsticker treeview list window with immortal items.
This is a callback function for the treeview nodes.
Argument WIDGET is the calling treeview widget.
Argument CHANGED-WIDGET is the widget that actually has changed.
Optional argument EVENT is the mouse event that triggered this action."
2008-06-08 15:36:18 +00:00
(newsticker--treeview-list-items-with-age-callback widget changed-widget
'immortal)
(newsticker--treeview-item-show-text
"Immortal items"
"This is a virtual feed containing all immortal items."))
(defun newsticker--treeview-list-obsolete-items (widget changed-widget
&optional _event)
2008-06-08 15:36:18 +00:00
"Fill newsticker treeview list window with obsolete items.
This is a callback function for the treeview nodes.
Argument WIDGET is the calling treeview widget.
Argument CHANGED-WIDGET is the widget that actually has changed.
Optional argument EVENT is the mouse event that triggered this action."
2008-06-08 15:36:18 +00:00
(newsticker--treeview-list-items-with-age-callback widget changed-widget
'obsolete)
(newsticker--treeview-item-show-text
"Obsolete items"
"This is a virtual feed containing all obsolete items."))
(defun newsticker--treeview-list-all-items (widget changed-widget
&optional event)
"Fill newsticker treeview list window with all items.
This is a callback function for the treeview nodes.
Argument WIDGET is the calling treeview widget.
Argument CHANGED-WIDGET is the widget that actually has changed.
Optional argument EVENT is the mouse event that triggered this action."
2008-06-08 15:36:18 +00:00
(newsticker--treeview-list-items-with-age-callback widget changed-widget
event 'new 'old
'obsolete 'immortal)
(newsticker--treeview-item-show-text
"All items"
"This is a virtual feed containing all items."))
(defun newsticker--treeview-list-items-v (vfeed-name)
"List items for virtual feed VFEED-NAME."
(when vfeed-name
(cond ((string-match "\\*new\\*" vfeed-name)
(newsticker--treeview-list-items-with-age 'new))
((string-match "\\*immortal\\*" vfeed-name)
(newsticker--treeview-list-items-with-age 'immortal))
((string-match "\\*old\\*" vfeed-name)
(newsticker--treeview-list-items-with-age 'old nil)))
(newsticker--treeview-list-update nil)
))
(defun newsticker--treeview-list-items (feed-name)
"List items for feed FEED-NAME."
(when feed-name
(if (newsticker--treeview-virtual-feed-p feed-name)
(newsticker--treeview-list-items-v feed-name)
(mapc (lambda (item)
(if (eq (newsticker--age item) 'feed)
(newsticker--treeview-item-show item (intern feed-name))
(newsticker--treeview-list-add-item item
(intern feed-name))))
(newsticker--treeview-list-sort-items
(cdr (newsticker--cache-get-feed (intern feed-name)))))
(newsticker--treeview-list-update nil))))
(defun newsticker--treeview-list-feed-items (widget _changed-widget
&optional _event)
2008-06-08 15:36:18 +00:00
"Callback function for listing feed items.
Argument WIDGET is the calling treeview widget.
Argument CHANGED-WIDGET is the widget that actually has changed.
Optional argument EVENT is the mouse event that triggered this action."
2008-06-08 15:36:18 +00:00
(newsticker--treeview-list-clear)
(widget-put widget :nt-selected t)
(let ((feed-name (widget-get widget :nt-feed))
(vfeed-name (widget-get widget :nt-vfeed)))
(if feed-name
(newsticker--treeview-list-items feed-name)
(newsticker--treeview-list-items-v vfeed-name))))
(defun newsticker--treeview-list-compare-item-by-age (item1 item2)
"Compare two news items ITEM1 and ITEM2 wrt age."
(catch 'result
(let ((age1 (newsticker--age item1))
(age2 (newsticker--age item2)))
(cond ((eq age1 'new)
t)
((eq age1 'immortal)
(cond ((eq age2 'new)
t)
((eq age2 'immortal)
t)
(t
nil)))
((eq age1 'old)
(cond ((eq age2 'new)
nil)
((eq age2 'immortal)
nil)
((eq age2 'old)
nil)
(t
t)))
(t
nil)))))
(defun newsticker--treeview-list-compare-item-by-age-reverse (item1 item2)
"Compare two news items ITEM1 and ITEM2 wrt age in reverse order."
(newsticker--treeview-list-compare-item-by-age item2 item1))
(defun newsticker--treeview-list-compare-item-by-time (item1 item2)
"Compare two news items ITEM1 and ITEM2 wrt time values."
(newsticker--cache-item-compare-by-time item1 item2))
(defun newsticker--treeview-list-compare-item-by-time-reverse (item1 item2)
"Compare two news items ITEM1 and ITEM2 wrt time values in reverse order."
(newsticker--cache-item-compare-by-time item2 item1))
(defun newsticker--treeview-list-compare-item-by-title (item1 item2)
"Compare two news items ITEM1 and ITEM2 wrt title."
(newsticker--cache-item-compare-by-title item1 item2))
(defun newsticker--treeview-list-compare-item-by-title-reverse (item1 item2)
"Compare two news items ITEM1 and ITEM2 wrt title in reverse order."
(newsticker--cache-item-compare-by-title item2 item1))
(defun newsticker--treeview-list-sort-items (items)
"Return sorted copy of list ITEMS.
The sort function is chosen according to the value of
`newsticker--treeview-list-sort-order'."
(let ((sort-fun
(cond ((eq newsticker--treeview-list-sort-order 'sort-by-age)
'newsticker--treeview-list-compare-item-by-age)
((eq newsticker--treeview-list-sort-order
'sort-by-age-reverse)
'newsticker--treeview-list-compare-item-by-age-reverse)
((eq newsticker--treeview-list-sort-order 'sort-by-time)
'newsticker--treeview-list-compare-item-by-time)
((eq newsticker--treeview-list-sort-order
'sort-by-time-reverse)
'newsticker--treeview-list-compare-item-by-time-reverse)
((eq newsticker--treeview-list-sort-order 'sort-by-title)
'newsticker--treeview-list-compare-item-by-title)
((eq newsticker--treeview-list-sort-order
'sort-by-title-reverse)
'newsticker--treeview-list-compare-item-by-title-reverse)
(t
'newsticker--treeview-list-compare-item-by-title))))
(sort (copy-sequence items) sort-fun)))
(defun newsticker--treeview-list-update-faces ()
"Update faces in the treeview list buffer."
(let (pos-sel)
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
(save-excursion
(let ((inhibit-read-only t))
(goto-char (point-min))
(while (not (eobp))
(let* ((pos (point-at-eol))
(item (get-text-property (point) :nt-item))
(age (newsticker--age item))
(selected (get-text-property (point) :nt-selected))
(face (cond ((eq age 'new)
'newsticker-treeview-new-face)
((eq age 'old)
'newsticker-treeview-old-face)
((eq age 'immortal)
'newsticker-treeview-immortal-face)
((eq age 'obsolete)
'newsticker-treeview-obsolete-face)
(t
'bold))))
(put-text-property (point) pos 'face face)
(if selected
(move-overlay newsticker--selection-overlay (point)
(1+ pos) ;include newline
(current-buffer)))
(if selected (setq pos-sel (point)))
(forward-line 1)
(beginning-of-line)))))) ;; FIXME!?
2008-06-08 15:36:18 +00:00
(when pos-sel
(if (window-live-p (newsticker--treeview-list-window))
(set-window-point (newsticker--treeview-list-window) pos-sel)))))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-list-clear-highlight ()
"Clear the highlight in the treeview list buffer."
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
2008-06-08 15:36:18 +00:00
(let ((inhibit-read-only t))
(put-text-property (point-min) (point-max) :nt-selected nil))
(newsticker--treeview-list-update-faces)))
(defun newsticker--treeview-list-update-highlight ()
"Update the highlight in the treeview list buffer."
(newsticker--treeview-list-clear-highlight)
(with-current-buffer (newsticker--treeview-list-buffer)
(let ((inhibit-read-only t))
(put-text-property (point-at-bol) (point-at-eol) :nt-selected t))
(newsticker--treeview-list-update-faces)))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-list-highlight-start ()
"Return position of selection in treeview list buffer."
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
2009-12-04 19:27:42 +00:00
(save-excursion
(goto-char (point-min))
(next-single-property-change (point) :nt-selected))))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-list-update (clear-buffer)
"Update the faces and highlight in the treeview list buffer.
If CLEAR-BUFFER is non-nil the list buffer is completely erased."
(save-excursion
(if (window-live-p (newsticker--treeview-list-window))
(set-window-buffer (newsticker--treeview-list-window)
(newsticker--treeview-list-buffer)))
2008-06-08 15:36:18 +00:00
(set-buffer (newsticker--treeview-list-buffer))
(if clear-buffer
(let ((inhibit-read-only t))
(erase-buffer)))
(newsticker-treeview-list-mode)
(newsticker--treeview-list-update-faces)
(goto-char (point-min))))
(defvar newsticker-treeview-list-sort-button-map
(let ((map (make-sparse-keymap)))
(define-key map [header-line mouse-1]
'newsticker--treeview-list-sort-by-column)
(define-key map [header-line mouse-2]
'newsticker--treeview-list-sort-by-column)
map)
"Local keymap for newsticker treeview list window sort buttons.")
(defun newsticker--treeview-list-sort-by-column (&optional event)
2008-06-08 15:36:18 +00:00
"Sort the newsticker list window buffer by the column clicked on.
Optional argument EVENT is the mouse event that triggered this action."
2008-06-08 15:36:18 +00:00
(interactive (list last-input-event))
(if event (mouse-select-window event))
(let* ((pos (event-start event))
2008-06-08 15:36:18 +00:00
(obj (posn-object pos))
(sort-order (if obj
(get-text-property (cdr obj) 'sort-order (car obj))
(get-text-property (posn-point pos) 'sort-order))))
(setq newsticker--treeview-list-sort-order
(cond ((eq sort-order 'sort-by-age)
(if (eq newsticker--treeview-list-sort-order 'sort-by-age)
'sort-by-age-reverse
'sort-by-age))
((eq sort-order 'sort-by-time)
(if (eq newsticker--treeview-list-sort-order 'sort-by-time)
'sort-by-time-reverse
'sort-by-time))
((eq sort-order 'sort-by-title)
(if (eq newsticker--treeview-list-sort-order 'sort-by-title)
'sort-by-title-reverse
'sort-by-title))))
(newsticker-treeview-update)))
(defun newsticker-treeview-list-make-sort-button (name sort-order)
"Create propertized string for headerline button.
NAME is the button text, SORT-ORDER is the associated sort order
for the button."
(let ((face (if (string-match (symbol-name sort-order)
(symbol-name
newsticker--treeview-list-sort-order))
'bold
'header-line)))
(propertize name
'sort-order sort-order
'help-echo (concat "Sort by " name)
'mouse-face 'highlight
'face face
'keymap newsticker-treeview-list-sort-button-map)))
2009-12-04 19:27:42 +00:00
(defun newsticker--treeview-list-select (item)
"Select ITEM in treeview's list buffer."
(newsticker--treeview-list-clear-highlight)
(save-current-buffer
(set-buffer (newsticker--treeview-list-buffer))
(goto-char (point-min))
(catch 'found
(while t
(let ((it (get-text-property (point) :nt-item)))
(when (eq it item)
(newsticker--treeview-list-update-highlight)
(newsticker--treeview-list-update-faces)
(newsticker--treeview-item-show
item (get-text-property (point) :nt-feed))
(throw 'found t)))
(forward-line 1)
(when (eobp)
(goto-char (point-min))
(throw 'found nil))))))
2009-12-04 19:27:42 +00:00
2008-06-08 15:36:18 +00:00
;; ======================================================================
;;; item window
;; ======================================================================
(defun newsticker--treeview-item-show-text (title description)
"Show text in treeview item buffer consisting of TITLE and DESCRIPTION."
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-item-buffer)
2008-06-08 15:36:18 +00:00
(when (fboundp 'w3m-process-stop)
(w3m-process-stop (current-buffer)))
(let ((inhibit-read-only t))
(erase-buffer)
(kill-all-local-variables)
(remove-overlays)
(insert title)
(put-text-property (point-min) (point) 'face 'newsticker-feed-face)
(insert "\n\n" description)
(when newsticker-justification
(fill-region (point-min) (point-max) newsticker-justification))
2009-12-04 19:27:42 +00:00
(newsticker-treeview-item-mode)
2008-06-08 15:36:18 +00:00
(goto-char (point-min)))))
2008-11-24 19:40:35 +00:00
(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))
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-item-buffer)
2008-06-08 15:36:18 +00:00
(when (fboundp 'w3m-process-stop)
(w3m-process-stop (current-buffer)))
(let ((inhibit-read-only t)
(is-rendered-HTML nil)
pos
(marker1 (make-marker))
(marker2 (make-marker)))
(erase-buffer)
(kill-all-local-variables)
(remove-overlays)
2008-11-24 19:40:35 +00:00
(when (and item feed-name-symbol)
(let ((wwidth (1- (if (window-live-p (newsticker--treeview-item-window))
(window-width (newsticker--treeview-item-window))
fill-column))))
2008-06-08 15:36:18 +00:00
(if newsticker-use-full-width
(set (make-local-variable 'fill-column) wwidth))
(set (make-local-variable 'fill-column) (min fill-column
wwidth)))
(let ((desc (newsticker--desc item)))
(insert "\n" (or desc "[No Description]")))
(set-marker marker1 (1+ (point-min)))
(set-marker marker2 (point-max))
(setq is-rendered-HTML (newsticker--treeview-render-text marker1
marker2))
(when (and newsticker-justification
(not is-rendered-HTML))
(fill-region marker1 marker2 newsticker-justification))
2008-06-10 03:15:43 +00:00
2009-12-04 19:27:42 +00:00
(newsticker-treeview-item-mode)
2008-06-08 15:36:18 +00:00
(goto-char (point-min))
;; insert logo at top
(let* ((newsticker-enable-logo-manipulations nil)
Newsticker: Show feedicons in treeview. Small fix in opml export. * etc/images/newsticker/README: Add rss-feed.png, rss-feed.svg. * etc/images/newsticker/rss-feed.png: New. * etc/images/newsticker/rss-feed.svg: New. * lisp/net/newst-backend.el: Require url-parse. (newsticker--get-news-by-wget): Store feed name as process property. (newsticker--sentinel): Read feed name from process property. (newsticker--sentinel-work): Rename argument name to feed-name. Rename variable imageurl to image-url. Pick icon url from Atom 1.0 data. Launch download of feed icon. (newsticker--get-icon-url-atom-1.0): New. (newsticker--unxml) (newsticker--unxml-node) (newsticker--unxml-attribute): Documentation. (newsticker--icons-dir): New. (newsticker--image-get): New arguments FILENAME and DIRECTORY. Use `url-retrieve' if `newsticker-retrieval-method' is 'intern. (newsticker--image-download-by-wget): New. Use process properties for storing informations. (newsticker--image-sentinel): Read informations from process properties. (newsticker--image-save) (newsticker--image-remove) (newsticker--image-download-by-url) (newsticker--image-download-by-url-callback): New. (newsticker-opml-export): Handle url list entries containing a function instead of an url string. * lisp/net/newst-reader.el (newsticker-html-renderer): Whitespace. (newsticker--print-extra-elements) (newsticker--do-print-extra-element): Documentation (newsticker--image-read): Optionally limit image height. Use imagemagick if possible. (newsticker--icon-read): New. * lisp/net/newst-treeview.el (newsticker--treeview-item-show): Limit height of feed logo. (newsticker--treeview-tree-expand): Use feed icons in treeview. (newsticker--tree-widget-icon-create): New. Set the tree widget icon. (newsticker--tree-widget-leaf-icon): Use feed icon.
2014-10-19 18:50:15 +02:00
(img (newsticker--image-read feed-name-symbol nil 40)))
2008-06-08 15:36:18 +00:00
(if (and (display-images-p) img)
(newsticker--insert-image img (car item))
2008-11-24 19:40:35 +00:00
(insert (newsticker--real-feed-name feed-name-symbol))))
2008-06-08 15:36:18 +00:00
(add-text-properties (point-min) (point)
(list 'face 'newsticker-feed-face
'mouse-face 'highlight
'help-echo "Visit in web browser."
:nt-link (newsticker--link item)
'keymap newsticker--treeview-url-keymap))
(setq pos (point))
2008-06-10 03:15:43 +00:00
2008-06-08 15:36:18 +00:00
(insert "\n\n")
;; insert title
(setq pos (point))
(insert (newsticker--title item) "\n")
(set-marker marker1 pos)
(set-marker marker2 (point))
(newsticker--treeview-render-text marker1 marker2)
(put-text-property pos (point) 'face 'newsticker-treeview-new-face)
(goto-char marker2)
(delete-char -1)
(insert "\n")
(put-text-property marker2 (point) 'face 'newsticker-treeview-face)
(set-marker marker2 (point))
(when newsticker-justification
(fill-region marker1 marker2 newsticker-justification))
(goto-char marker2)
(add-text-properties marker1 (1- (point))
(list 'mouse-face 'highlight
'help-echo "Visit in web browser."
:nt-link (newsticker--link item)
'keymap newsticker--treeview-url-keymap))
(insert (format-time-string newsticker-date-format
(newsticker--time item)))
(insert "\n")
(setq pos (point))
(insert "\n")
;; insert enclosures and rest at bottom
(goto-char (point-max))
(insert "\n\n")
(setq pos (point))
(newsticker--insert-enclosure item newsticker--treeview-url-keymap)
(put-text-property pos (point) 'face 'newsticker-enclosure-face)
(setq pos (point))
(insert "\n")
Newsticker: Use libxml instead of `xml-parse-region'. Fix some glitches. Clean up. * lisp/net/newst-backend.el: Remove Time-stamp. Rename variable `newsticker--download-logos' to `newsticker-download-logos' and make it customizable. (newsticker--sentinel-work): Move xml-workarounds to function `newsticker--do-xml-workarounds', call unless libxml-parser is used. Allow single quote in regexp for encoding. Use libxml-parser if available, else fall back to `xml-parse-region'. Take care of possibly missing namespace prefixes (like "RDF" instead of "rdf:RDF") when checking xml nodes and attributes (as libxml correctly removes the prefixes). Always use Atom 1.0 as fallback feed type. Rename `newsticker--download-logos' to `newsticker-download-logos' (newsticker--unxml, newsticker--unxml-node) (newsticker--unxml-attribute): New. (newsticker--parse-atom-1.0): Call `unxml' in case that embedded HTML code has become part of the xml parse tree. (newsticker--parse-rss-1.0, newsticker--parse-rss-2.0): Take care of possibly missing namespace prefixes. (newsticker--parse-generic-items): Code formatting. Typo. (newsticker--images-dir): Add trailing slash. (newsticker--image-get): Fix error message. * lisp/net/newst-plainview.el: Remove Time-stamp. * lisp/net/newst-reader.el: Remove Time-stamp. (newsticker-download-logos): Rename variable `newsticker--download-logos' to `newsticker-download-logos' and make it customizable. (newsticker--print-extra-elements): Add optional parameter 'htmlish for using html markup. Amend list of ignored elements. (newsticker--do-print-extra-element): Add parameter 'htmlish for using html markup. * lisp/net/newst-ticker.el: Remove Time-stamp. * lisp/net/newst-treeview.el (newsticker--treeview-item-show): Use html for formatting extra elements. * lisp/net/newsticker.el: Remove Time-stamp, Version. (newsticker-version): Make obsolete.
2014-10-01 19:20:00 +02:00
(set-marker marker1 pos)
(newsticker--print-extra-elements item newsticker--treeview-url-keymap t)
(set-marker marker2 (point))
(newsticker--treeview-render-text marker1 marker2)
(put-text-property marker1 marker2 'face 'newsticker-extra-face)
2008-06-08 15:36:18 +00:00
(goto-char (point-min)))))
(if (and newsticker-treeview-automatically-mark-displayed-items-as-old
item
(memq (newsticker--age item) '(new obsolete)))
(let ((newsticker-treeview-automatically-mark-displayed-items-as-old nil))
(newsticker-treeview-mark-item-old t)
(newsticker--treeview-list-update-faces)))
(if (window-live-p (newsticker--treeview-item-window))
(set-window-point (newsticker--treeview-item-window) 1)))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-item-update ()
"Update the treeview item buffer and window."
(save-excursion
(if (window-live-p (newsticker--treeview-item-window))
(set-window-buffer (newsticker--treeview-item-window)
(newsticker--treeview-item-buffer)))
2008-06-08 15:36:18 +00:00
(set-buffer (newsticker--treeview-item-buffer))
(let ((inhibit-read-only t))
(erase-buffer))
2009-12-04 19:27:42 +00:00
(newsticker-treeview-item-mode)))
2008-06-08 15:36:18 +00:00
;; ======================================================================
;;; Tree window
;; ======================================================================
(defun newsticker--treeview-tree-expand (tree)
"Expand TREE.
Callback function for tree widget that adds nodes for feeds and subgroups."
(tree-widget-set-theme "folder")
(let ((group (widget-get tree :nt-group))
(i 0)
(nt-id ""))
(mapcar (lambda (g)
(setq nt-id (newsticker--treeview-get-id tree i))
(setq i (1+ i))
(if (listp g)
(let* ((g-name (car g)))
`(tree-widget
:tag ,(newsticker--treeview-tree-get-tag g-name nil nt-id)
:expander newsticker--treeview-tree-expand
:expander-p (lambda (&rest ignore) t)
:nt-group ,(cdr g)
:nt-feed ,g-name
:nt-id ,nt-id
Newsticker: Show feedicons in treeview. Small fix in opml export. * etc/images/newsticker/README: Add rss-feed.png, rss-feed.svg. * etc/images/newsticker/rss-feed.png: New. * etc/images/newsticker/rss-feed.svg: New. * lisp/net/newst-backend.el: Require url-parse. (newsticker--get-news-by-wget): Store feed name as process property. (newsticker--sentinel): Read feed name from process property. (newsticker--sentinel-work): Rename argument name to feed-name. Rename variable imageurl to image-url. Pick icon url from Atom 1.0 data. Launch download of feed icon. (newsticker--get-icon-url-atom-1.0): New. (newsticker--unxml) (newsticker--unxml-node) (newsticker--unxml-attribute): Documentation. (newsticker--icons-dir): New. (newsticker--image-get): New arguments FILENAME and DIRECTORY. Use `url-retrieve' if `newsticker-retrieval-method' is 'intern. (newsticker--image-download-by-wget): New. Use process properties for storing informations. (newsticker--image-sentinel): Read informations from process properties. (newsticker--image-save) (newsticker--image-remove) (newsticker--image-download-by-url) (newsticker--image-download-by-url-callback): New. (newsticker-opml-export): Handle url list entries containing a function instead of an url string. * lisp/net/newst-reader.el (newsticker-html-renderer): Whitespace. (newsticker--print-extra-elements) (newsticker--do-print-extra-element): Documentation (newsticker--image-read): Optionally limit image height. Use imagemagick if possible. (newsticker--icon-read): New. * lisp/net/newst-treeview.el (newsticker--treeview-item-show): Limit height of feed logo. (newsticker--treeview-tree-expand): Use feed icons in treeview. (newsticker--tree-widget-icon-create): New. Set the tree widget icon. (newsticker--tree-widget-leaf-icon): Use feed icon.
2014-10-19 18:50:15 +02:00
:leaf-icon newsticker--tree-widget-leaf-icon
2008-06-08 15:36:18 +00:00
:keep (:nt-feed :num-new :nt-id :open);; :nt-group
:open nil))
(let ((tag (newsticker--treeview-tree-get-tag g nil nt-id)))
`(item :tag ,tag
:leaf-icon newsticker--tree-widget-leaf-icon
:nt-feed ,g
:action newsticker--treeview-list-feed-items
:nt-id ,nt-id
:keep (:nt-id)
:open t))))
group)))
Newsticker: Show feedicons in treeview. Small fix in opml export. * etc/images/newsticker/README: Add rss-feed.png, rss-feed.svg. * etc/images/newsticker/rss-feed.png: New. * etc/images/newsticker/rss-feed.svg: New. * lisp/net/newst-backend.el: Require url-parse. (newsticker--get-news-by-wget): Store feed name as process property. (newsticker--sentinel): Read feed name from process property. (newsticker--sentinel-work): Rename argument name to feed-name. Rename variable imageurl to image-url. Pick icon url from Atom 1.0 data. Launch download of feed icon. (newsticker--get-icon-url-atom-1.0): New. (newsticker--unxml) (newsticker--unxml-node) (newsticker--unxml-attribute): Documentation. (newsticker--icons-dir): New. (newsticker--image-get): New arguments FILENAME and DIRECTORY. Use `url-retrieve' if `newsticker-retrieval-method' is 'intern. (newsticker--image-download-by-wget): New. Use process properties for storing informations. (newsticker--image-sentinel): Read informations from process properties. (newsticker--image-save) (newsticker--image-remove) (newsticker--image-download-by-url) (newsticker--image-download-by-url-callback): New. (newsticker-opml-export): Handle url list entries containing a function instead of an url string. * lisp/net/newst-reader.el (newsticker-html-renderer): Whitespace. (newsticker--print-extra-elements) (newsticker--do-print-extra-element): Documentation (newsticker--image-read): Optionally limit image height. Use imagemagick if possible. (newsticker--icon-read): New. * lisp/net/newst-treeview.el (newsticker--treeview-item-show): Limit height of feed logo. (newsticker--treeview-tree-expand): Use feed icons in treeview. (newsticker--tree-widget-icon-create): New. Set the tree widget icon. (newsticker--tree-widget-leaf-icon): Use feed icon.
2014-10-19 18:50:15 +02:00
(defun newsticker--tree-widget-icon-create (icon)
"Create the ICON widget."
(let* ((g (widget-get (widget-get icon :node) :nt-feed))
(ico (and g (newsticker--icon-read (intern g)))))
(if ico
(progn
(widget-put icon :tag-glyph ico)
(widget-default-create icon)
;; Insert space between the icon and the node widget.
(insert-char ? 1)
(put-text-property
(1- (point)) (point)
'display (list 'space :width tree-widget-space-width)))
;; fallback: default icon
(widget-put icon :leaf-icon 'tree-widget-leaf-icon)
(tree-widget-icon-create icon))))
(defun newsticker--treeview-tree-expand-status (tree &optional _changed-widget
_event)
2008-06-08 15:36:18 +00:00
"Expand the vfeed TREE.
Optional arguments CHANGED-WIDGET and EVENT are ignored."
(tree-widget-set-theme "folder")
(list `(item :tag ,(newsticker--treeview-tree-get-tag nil "new")
:nt-vfeed "new"
:action newsticker--treeview-list-new-items
:nt-id ,(newsticker--treeview-get-id tree 0)
:keep (:nt-id))
`(item :tag ,(newsticker--treeview-tree-get-tag nil "immortal")
:nt-vfeed "immortal"
:action newsticker--treeview-list-immortal-items
:nt-id ,(newsticker--treeview-get-id tree 1)
:keep (:nt-id))
`(item :tag ,(newsticker--treeview-tree-get-tag nil "obsolete")
:nt-vfeed "obsolete"
:action newsticker--treeview-list-obsolete-items
:nt-id ,(newsticker--treeview-get-id tree 2)
:keep (:nt-id))
`(item :tag ,(newsticker--treeview-tree-get-tag nil "all")
:nt-vfeed "all"
:action newsticker--treeview-list-all-items
:nt-id ,(newsticker--treeview-get-id tree 3)
:keep (:nt-id))))
(defun newsticker--treeview-virtual-feed-p (feed-name)
"Return non-nil if FEED-NAME is a virtual feed."
(string-match "\\*.*\\*" feed-name))
(define-widget 'newsticker--tree-widget-leaf-icon 'tree-widget-icon
"Icon for a tree-widget leaf node."
:tag "O"
:glyph-name "leaf"
Newsticker: Show feedicons in treeview. Small fix in opml export. * etc/images/newsticker/README: Add rss-feed.png, rss-feed.svg. * etc/images/newsticker/rss-feed.png: New. * etc/images/newsticker/rss-feed.svg: New. * lisp/net/newst-backend.el: Require url-parse. (newsticker--get-news-by-wget): Store feed name as process property. (newsticker--sentinel): Read feed name from process property. (newsticker--sentinel-work): Rename argument name to feed-name. Rename variable imageurl to image-url. Pick icon url from Atom 1.0 data. Launch download of feed icon. (newsticker--get-icon-url-atom-1.0): New. (newsticker--unxml) (newsticker--unxml-node) (newsticker--unxml-attribute): Documentation. (newsticker--icons-dir): New. (newsticker--image-get): New arguments FILENAME and DIRECTORY. Use `url-retrieve' if `newsticker-retrieval-method' is 'intern. (newsticker--image-download-by-wget): New. Use process properties for storing informations. (newsticker--image-sentinel): Read informations from process properties. (newsticker--image-save) (newsticker--image-remove) (newsticker--image-download-by-url) (newsticker--image-download-by-url-callback): New. (newsticker-opml-export): Handle url list entries containing a function instead of an url string. * lisp/net/newst-reader.el (newsticker-html-renderer): Whitespace. (newsticker--print-extra-elements) (newsticker--do-print-extra-element): Documentation (newsticker--image-read): Optionally limit image height. Use imagemagick if possible. (newsticker--icon-read): New. * lisp/net/newst-treeview.el (newsticker--treeview-item-show): Limit height of feed logo. (newsticker--treeview-tree-expand): Use feed icons in treeview. (newsticker--tree-widget-icon-create): New. Set the tree widget icon. (newsticker--tree-widget-leaf-icon): Use feed icon.
2014-10-19 18:50:15 +02:00
:create 'newsticker--tree-widget-icon-create
2008-06-08 15:36:18 +00:00
:button-face 'default)
(defun newsticker--treeview-tree-update ()
"Update treeview tree buffer and window."
(save-excursion
(if (window-live-p (newsticker--treeview-tree-window))
(set-window-buffer (newsticker--treeview-tree-window)
(newsticker--treeview-tree-buffer)))
2008-06-08 15:36:18 +00:00
(set-buffer (newsticker--treeview-tree-buffer))
(kill-all-local-variables)
(let ((inhibit-read-only t))
(erase-buffer)
(tree-widget-set-theme "folder")
(setq newsticker--treeview-feed-tree
(widget-create 'tree-widget
:tag (newsticker--treeview-propertize-tag
"Feeds" 0 "feeds")
:expander 'newsticker--treeview-tree-expand
:expander-p (lambda (&rest _) t)
2008-06-08 15:36:18 +00:00
:leaf-icon 'newsticker--tree-widget-leaf-icon
:nt-group (cdr newsticker-groups)
:nt-id "feeds"
:keep '(:nt-id)
:open t))
(setq newsticker--treeview-vfeed-tree
(widget-create 'tree-widget
:tag (newsticker--treeview-propertize-tag
"Virtual Feeds" 0 "vfeeds")
:expander 'newsticker--treeview-tree-expand-status
:expander-p (lambda (&rest _) t)
2008-06-08 15:36:18 +00:00
:leaf-icon 'newsticker--tree-widget-leaf-icon
:nt-id "vfeeds"
:keep '(:nt-id)
:open t))
(use-local-map widget-keymap)
(widget-setup))
(newsticker-treeview-mode)))
(defun newsticker--treeview-propertize-tag (tag &optional num-new nt-id feed
vfeed)
"Return propertized copy of string TAG.
Optional argument NUM-NEW is used for choosing face, other
arguments NT-ID, FEED, and VFEED are added as properties."
;;(message "newsticker--treeview-propertize-tag `%s' %s" feed nt-id)
2008-06-08 15:36:18 +00:00
(let ((face 'newsticker-treeview-face)
(map (make-sparse-keymap)))
(if (and num-new (> num-new 0))
(setq face 'newsticker-treeview-new-face))
(dolist (key '([mouse-1] [mouse-3]))
(define-key map key 'newsticker-treeview-tree-click))
2008-06-08 15:36:18 +00:00
(define-key map "\n" 'newsticker-treeview-tree-do-click)
(define-key map "\C-m" 'newsticker-treeview-tree-do-click)
(propertize tag 'face face 'keymap map
:nt-id nt-id
:nt-feed feed
:nt-vfeed vfeed
'help-echo tag
2008-06-08 15:36:18 +00:00
'mouse-face 'highlight)))
(defun newsticker--treeview-tree-get-tag (feed-name vfeed-name
&optional nt-id)
"Return a tag string for either FEED-NAME or, if it is nil, for VFEED-NAME.
Optional argument NT-ID is added to the tag's properties."
(let (tag (num-new 0))
(cond (vfeed-name
(cond ((string= vfeed-name "new")
(setq num-new (newsticker--stat-num-items-total 'new))
(setq tag (format "New items (%d)" num-new)))
((string= vfeed-name "immortal")
(setq num-new (newsticker--stat-num-items-total 'immortal))
(setq tag (format "Immortal items (%d)" num-new)))
((string= vfeed-name "obsolete")
(setq num-new (newsticker--stat-num-items-total 'obsolete))
(setq tag (format "Obsolete items (%d)" num-new)))
((string= vfeed-name "all")
(setq num-new (newsticker--stat-num-items-total))
(setq tag (format "All items (%d)" num-new)))))
(feed-name
(setq num-new (newsticker--stat-num-items-for-group
(intern feed-name) 'new 'immortal))
(setq tag
(format "%s (%d)"
(newsticker--real-feed-name (intern feed-name))
num-new))))
(if tag
(newsticker--treeview-propertize-tag tag num-new
nt-id
feed-name vfeed-name))))
(defun newsticker--stat-num-items-for-group (feed-name-symbol &rest ages)
"Count number of items in feed FEED-NAME-SYMBOL that have an age matching AGES."
;;(message "newsticker--stat-num-items-for-group %s %s" feed-name-symbol ages)
(let ((result (apply #'newsticker--stat-num-items feed-name-symbol ages)))
2008-06-08 15:36:18 +00:00
(mapc (lambda (f-n)
(setq result (+ result
(apply #'newsticker--stat-num-items (intern f-n)
2008-06-08 15:36:18 +00:00
ages))))
(newsticker--group-get-feeds
(newsticker--group-get-group (symbol-name feed-name-symbol)) t))
result))
(defun newsticker--treeview-count-node-items (feed &optional isvirtual)
"Count number of relevant items for a treeview node.
FEED gives the name of the feed or group. If ISVIRTUAL is non-nil
the feed is a virtual feed."
(let* ((num-new 0))
(if feed
(if isvirtual
(cond ((string= feed "new")
(setq num-new (newsticker--stat-num-items-total 'new)))
((string= feed "immortal")
(setq num-new (newsticker--stat-num-items-total 'immortal)))
((string= feed "obsolete")
(setq num-new (newsticker--stat-num-items-total 'obsolete)))
((string= feed "all")
(setq num-new (newsticker--stat-num-items-total))))
(setq num-new (newsticker--stat-num-items-for-group
(intern feed) 'new 'immortal))))
num-new))
(defun newsticker--treeview-tree-update-tag (w &optional recursive
&rest _ignore)
2008-06-08 15:36:18 +00:00
"Update tag for tree widget W.
If RECURSIVE is non-nil recursively update parent widgets as
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."
(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)))
(nt-id (or (widget-get w :nt-id) (widget-get parent :nt-id)))
(num-new (newsticker--treeview-count-node-items (or feed vfeed)
vfeed))
(tag (newsticker--treeview-tree-get-tag feed vfeed nt-id))
(n (widget-get w :node)))
(if parent
(if recursive
(newsticker--treeview-tree-update-tag parent)))
(when tag
(when n
(widget-put n :tag tag))
(widget-put w :num-new num-new)
(widget-put w :tag tag)
(when (marker-position (widget-get w :from))
(let ((p (point)))
2008-06-08 15:36:18 +00:00
;; FIXME: This moves point!!!!
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-tree-buffer)
2008-06-08 15:36:18 +00:00
(widget-value-set w (widget-value w)))
(goto-char p))))))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-tree-do-update-tags (widget)
"Actually recursively update tags for WIDGET."
(save-excursion
(let ((children (widget-get widget :children)))
(dolist (w children)
(newsticker--treeview-tree-do-update-tags w))
(newsticker--treeview-tree-update-tag widget))))
(defun newsticker--treeview-tree-update-tags (&rest _ignore)
2008-06-08 15:36:18 +00:00
"Update all tags of all trees.
Arguments are ignored."
2008-06-08 15:36:18 +00:00
(save-current-buffer
(set-buffer (newsticker--treeview-tree-buffer))
(let ((inhibit-read-only t))
(newsticker--treeview-tree-do-update-tags
newsticker--treeview-feed-tree)
(newsticker--treeview-tree-do-update-tags
newsticker--treeview-vfeed-tree))
(tree-widget-set-theme "folder")))
(defun newsticker--treeview-tree-update-highlight ()
"Update highlight in tree buffer."
(let ((pos (widget-get (newsticker--treeview-get-current-node) :from)))
(unless (or (integerp pos) (and (markerp pos) (marker-position pos)))
(setq pos (widget-get (widget-get
(newsticker--treeview-get-current-node)
:parent) :from)))
(when (or (integerp pos) (and (markerp pos) (marker-position pos)))
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-tree-buffer)
2008-06-08 15:36:18 +00:00
(goto-char pos)
(move-overlay newsticker--tree-selection-overlay
(point-at-bol) (1+ (point-at-eol))
2008-06-08 15:36:18 +00:00
(current-buffer)))
(if (window-live-p (newsticker--treeview-tree-window))
(set-window-point (newsticker--treeview-tree-window) pos)))))
2008-06-08 15:36:18 +00:00
;; ======================================================================
;;; Toolbar
;; ======================================================================
(defvar newsticker-treeview-tool-bar-map
(if (featurep 'xemacs)
nil
(if (boundp 'tool-bar-map)
(let ((tool-bar-map (make-sparse-keymap)))
(tool-bar-add-item "newsticker/prev-feed"
'newsticker-treeview-prev-feed
'newsticker-treeview-prev-feed
:help "Go to previous feed"
;;:enable '(newsticker-previous-feed-available-p) FIXME
)
(tool-bar-add-item "newsticker/prev-item"
'newsticker-treeview-prev-item
'newsticker-treeview-prev-item
:help "Go to previous item"
;;:enable '(newsticker-previous-item-available-p) FIXME
)
(tool-bar-add-item "newsticker/next-item"
'newsticker-treeview-next-item
'newsticker-treeview-next-item
:visible t
:help "Go to next item"
;;:enable '(newsticker-next-item-available-p) FIXME
)
(tool-bar-add-item "newsticker/next-feed"
'newsticker-treeview-next-feed
'newsticker-treeview-next-feed
:help "Go to next feed"
;;:enable '(newsticker-next-feed-available-p) FIXME
)
(tool-bar-add-item "newsticker/mark-immortal"
'newsticker-treeview-toggle-item-immortal
'newsticker-treeview-toggle-item-immortal
:help "Toggle current item as immortal"
;;:enable '(newsticker-item-not-immortal-p) FIXME
)
(tool-bar-add-item "newsticker/mark-read"
'newsticker-treeview-mark-item-old
'newsticker-treeview-mark-item-old
:help "Mark current item as read"
;;:enable '(newsticker-item-not-old-p) FIXME
)
(tool-bar-add-item "newsticker/get-all"
'newsticker-get-all-news
'newsticker-get-all-news
:help "Get news for all feeds")
(tool-bar-add-item "newsticker/update"
'newsticker-treeview-update
'newsticker-treeview-update
:help "Update newsticker buffer")
(tool-bar-add-item "newsticker/browse-url"
'newsticker-browse-url
'newsticker-browse-url
:help "Browse URL for item at point")
;; standard icons / actions
(define-key tool-bar-map [newsticker-sep-1]
(list 'menu-item "--double-line"))
(tool-bar-add-item "close"
'newsticker-treeview-quit
'newsticker-treeview-quit
:help "Close newsticker")
(tool-bar-add-item "preferences"
'newsticker-customize
'newsticker-customize
:help "Customize newsticker")
tool-bar-map))))
2008-06-08 15:36:18 +00:00
;; ======================================================================
;;; actions
;; ======================================================================
(defun newsticker-treeview-mouse-browse-url (event)
"Call `browse-url' for the link of the item at which the EVENT occurred."
(interactive "e")
(save-excursion
(switch-to-buffer (window-buffer (posn-window (event-end event))))
(let ((url (get-text-property (posn-point (event-end event))
:nt-link)))
(when url
(browse-url url)
(if newsticker-automatically-mark-visited-items-as-old
(newsticker-treeview-mark-item-old))))))
(defun newsticker-treeview-browse-url ()
"Call `browse-url' for the link of the item at point."
(interactive)
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
2008-06-08 15:36:18 +00:00
(let ((url (get-text-property (point) :nt-link)))
(when url
(browse-url url)
(if newsticker-automatically-mark-visited-items-as-old
(newsticker-treeview-mark-item-old))))))
(defun newsticker--treeview-buffer-init ()
"Initialize all treeview buffers."
(setq newsticker--treeview-buffers nil)
(add-to-list 'newsticker--treeview-buffers
(get-buffer-create "*Newsticker Tree*") t)
(add-to-list 'newsticker--treeview-buffers
(get-buffer-create "*Newsticker List*") t)
(add-to-list 'newsticker--treeview-buffers
(get-buffer-create "*Newsticker Item*") t)
(unless newsticker--selection-overlay
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(setq buffer-undo-list t)
2008-06-08 15:36:18 +00:00
(setq newsticker--selection-overlay (make-overlay (point-min)
(point-max)))
(overlay-put newsticker--selection-overlay 'face
'newsticker-treeview-selection-face)))
(unless newsticker--tree-selection-overlay
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-tree-buffer)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(setq buffer-undo-list t)
2008-06-08 15:36:18 +00:00
(setq newsticker--tree-selection-overlay (make-overlay (point-min)
(point-max)))
(overlay-put newsticker--tree-selection-overlay 'face
'newsticker-treeview-selection-face)))
(newsticker--treeview-tree-update)
(newsticker--treeview-list-update t)
(newsticker--treeview-item-update))
(defun newsticker-treeview-update ()
"Update all treeview buffers and windows.
Note: does not update the layout."
2008-06-08 15:36:18 +00:00
(interactive)
2009-12-04 19:27:42 +00:00
(let ((cur-item (newsticker--treeview-get-selected-item)))
(if (newsticker--group-manage-orphan-feeds)
(newsticker--treeview-tree-update))
2009-12-04 19:27:42 +00:00
(newsticker--treeview-list-update t)
(newsticker--treeview-item-update)
(newsticker--treeview-tree-update-tags)
(cond (newsticker--treeview-current-feed
(newsticker--treeview-list-items newsticker--treeview-current-feed))
(newsticker--treeview-current-vfeed
(newsticker--treeview-list-items-with-age
(intern newsticker--treeview-current-vfeed))))
(newsticker--treeview-tree-update-highlight)
(newsticker--treeview-list-update-highlight)
(let ((cur-feed (or newsticker--treeview-current-feed
newsticker--treeview-current-vfeed)))
(if (and cur-feed cur-item)
(newsticker--treeview-list-select cur-item)))))
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview-quit ()
"Quit newsticker treeview."
(interactive)
(setq newsticker--sentinel-callback nil)
(bury-buffer "*Newsticker Tree*")
(bury-buffer "*Newsticker List*")
(bury-buffer "*Newsticker Item*")
(set-window-configuration newsticker--saved-window-config)
(when newsticker--frame
(if (frame-live-p newsticker--frame)
(delete-frame newsticker--frame))
(setq newsticker--frame nil))
(newsticker-treeview-save))
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview-save ()
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
"Save treeview group settings."
2008-06-08 15:36:18 +00:00
(interactive)
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(let ((coding-system-for-write 'utf-8)
(buf (find-file-noselect (concat newsticker-dir "/groups"))))
(when buf
(with-current-buffer buf
2008-06-08 15:36:18 +00:00
(setq buffer-undo-list t)
(erase-buffer)
(insert ";; -*- coding: utf-8 -*-\n")
(insert (prin1-to-string newsticker-groups))
(save-buffer)
(kill-buffer)))))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-load ()
"Load treeview settings."
(let* ((coding-system-for-read 'utf-8)
2008-11-24 19:40:35 +00:00
(filename
(or (and newsticker-groups-filename
(not (string=
(expand-file-name newsticker-groups-filename)
(expand-file-name (concat newsticker-dir "/groups"))))
(file-exists-p newsticker-groups-filename)
2008-11-24 19:40:35 +00:00
(y-or-n-p
More-conservative ‘format’ quote restyling Instead of restyling curved quotes for every call to ‘format’, create a new function ‘format-message’ that does the restyling, and using the new function instead of ‘format’ only in contexts where this seems appropriate. Problem reported by Dmitry Gutov and Andreas Schwab in: http://lists.gnu.org/archive/html/emacs-devel/2015-08/msg00826.html http://lists.gnu.org/archive/html/emacs-devel/2015-08/msg00827.html * doc/lispref/commands.texi (Using Interactive): * doc/lispref/control.texi (Signaling Errors, Signaling Errors): * doc/lispref/display.texi (Displaying Messages, Progress): * doc/lispref/elisp.texi: * doc/lispref/help.texi (Keys in Documentation): * doc/lispref/minibuf.texi (Minibuffer Misc): * doc/lispref/strings.texi (Formatting Strings): * etc/NEWS: Document the changes. * lisp/abbrev.el (expand-region-abbrevs): * lisp/apropos.el (apropos-library): * lisp/calc/calc-ext.el (calc-record-message) (calc-user-function-list): * lisp/calc/calc-help.el (calc-describe-key, calc-full-help): * lisp/calc/calc-lang.el (math-read-big-balance): * lisp/calc/calc-store.el (calc-edit-variable): * lisp/calc/calc-units.el (math-build-units-table-buffer): * lisp/calc/calc-yank.el (calc-edit-mode): * lisp/calendar/icalendar.el (icalendar-export-region) (icalendar--add-diary-entry): * lisp/cedet/mode-local.el (mode-local-print-binding) (mode-local-describe-bindings-2): * lisp/cedet/semantic/complete.el (semantic-completion-message): * lisp/cedet/semantic/edit.el (semantic-parse-changes-failed): * lisp/cedet/semantic/wisent/comp.el (wisent-log): * lisp/cedet/srecode/insert.el (srecode-insert-show-error-report): * lisp/descr-text.el (describe-text-properties-1, describe-char): * lisp/dframe.el (dframe-message): * lisp/dired-aux.el (dired-query): * lisp/emacs-lisp/byte-opt.el (byte-compile-log-lap-1): * lisp/emacs-lisp/bytecomp.el (byte-compile-log) (byte-compile-log-file, byte-compile-warn, byte-compile-form): * lisp/emacs-lisp/cconv.el (cconv-convert, cconv--analyze-use) (cconv-analyze-form): * lisp/emacs-lisp/check-declare.el (check-declare-warn): * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): * lisp/emacs-lisp/cl-macs.el (cl-symbol-macrolet): * lisp/emacs-lisp/edebug.el (edebug-format): * lisp/emacs-lisp/eieio-core.el (eieio-oref): * lisp/emacs-lisp/eldoc.el (eldoc-minibuffer-message) (eldoc-message): * lisp/emacs-lisp/elint.el (elint-file, elint-log): * lisp/emacs-lisp/find-func.el (find-function-library): * lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning): * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): * lisp/emacs-lisp/nadvice.el (advice--make-docstring): * lisp/emacs-lisp/package.el (package-compute-transaction) (package-install-button-action, package-delete-button-action) (package-menu--list-to-prompt): * lisp/emacs-lisp/timer.el (timer-event-handler): * lisp/emacs-lisp/warnings.el (lwarn, warn): * lisp/emulation/viper-cmd.el: (viper-toggle-parse-sexp-ignore-comments) (viper-kill-buffer, viper-brac-function): * lisp/emulation/viper-macs.el (viper-record-kbd-macro): * lisp/facemenu.el (facemenu-add-new-face): * lisp/faces.el (face-documentation, read-face-name) (face-read-string, read-face-font, describe-face): * lisp/files.el (find-alternate-file, hack-local-variables) (hack-one-local-variable--obsolete, write-file) (basic-save-buffer, delete-directory): * lisp/format.el (format-write-file, format-find-file) (format-insert-file): * lisp/help-fns.el (help-fns--key-bindings) (help-fns--compiler-macro, help-fns--obsolete) (help-fns--interactive-only, describe-function-1) (describe-variable): * lisp/help.el (describe-mode): * lisp/info-xref.el (info-xref-output): * lisp/info.el (Info-virtual-index-find-node) (Info-virtual-index, info-apropos): * lisp/international/kkc.el (kkc-error): * lisp/international/mule-cmds.el: (select-safe-coding-system-interactively) (select-safe-coding-system, describe-input-method): * lisp/international/mule-conf.el (code-offset): * lisp/international/mule-diag.el (describe-character-set) (list-input-methods-1): * lisp/international/quail.el (quail-error): * lisp/minibuffer.el (minibuffer-message): * lisp/mpc.el (mpc--debug): * lisp/msb.el (msb--choose-menu): * lisp/net/ange-ftp.el (ange-ftp-message): * lisp/net/gnutls.el (gnutls-message-maybe): * lisp/net/newst-backend.el (newsticker--sentinel-work): * lisp/net/newst-treeview.el (newsticker--treeview-load): * lisp/net/nsm.el (nsm-query-user): * lisp/net/rlogin.el (rlogin): * lisp/net/soap-client.el (soap-warning): * lisp/net/tramp.el (tramp-debug-message): * lisp/nxml/nxml-outln.el (nxml-report-outline-error): * lisp/nxml/nxml-parse.el (nxml-parse-error): * lisp/nxml/rng-cmpct.el (rng-c-error): * lisp/nxml/rng-match.el (rng-compile-error): * lisp/nxml/rng-uri.el (rng-uri-error): * lisp/obsolete/iswitchb.el (iswitchb-possible-new-buffer): * lisp/org/org-ctags.el: (org-ctags-ask-rebuild-tags-file-then-find-tag): * lisp/proced.el (proced-log): * lisp/progmodes/ebnf2ps.el (ebnf-log): * lisp/progmodes/flymake.el (flymake-log): * lisp/progmodes/vhdl-mode.el (vhdl-warning-when-idle): * lisp/replace.el (occur-1): * lisp/simple.el (execute-extended-command) (undo-outer-limit-truncate, define-alternatives): * lisp/startup.el (command-line): * lisp/subr.el (error, user-error, add-to-list): * lisp/tutorial.el (tutorial--describe-nonstandard-key) (tutorial--find-changed-keys): * src/callint.c (Fcall_interactively): * src/editfns.c (Fmessage, Fmessage_box): Restyle the quotes of format strings intended for use as a diagnostic, when restyling seems appropriate. * lisp/subr.el (format-message): New function. * src/doc.c (Finternal__text_restyle): New function. (syms_of_doc): Define it.
2015-08-23 22:38:02 -07:00
(format-message
Go back to grave quoting in source-code docstrings etc. This reverts almost all my recent changes to use curved quotes in docstrings and/or strings used for error diagnostics. There are a few exceptions, e.g., Bahá’í proper names. * admin/unidata/unidata-gen.el (unidata-gen-table): * lisp/abbrev.el (expand-region-abbrevs): * lisp/align.el (align-region): * lisp/allout.el (allout-mode, allout-solicit-alternate-bullet) (outlineify-sticky): * lisp/apropos.el (apropos-library): * lisp/bookmark.el (bookmark-default-annotation-text): * lisp/button.el (button-category-symbol, button-put) (make-text-button): * lisp/calc/calc-aent.el (math-read-if, math-read-factor): * lisp/calc/calc-embed.el (calc-do-embedded): * lisp/calc/calc-ext.el (calc-user-function-list): * lisp/calc/calc-graph.el (calc-graph-show-dumb): * lisp/calc/calc-help.el (calc-describe-key) (calc-describe-thing, calc-full-help): * lisp/calc/calc-lang.el (calc-c-language) (math-parse-fortran-vector-end, math-parse-tex-sum) (math-parse-eqn-matrix, math-parse-eqn-prime) (calc-yacas-language, calc-maxima-language, calc-giac-language) (math-read-giac-subscr, math-read-math-subscr) (math-read-big-rec, math-read-big-balance): * lisp/calc/calc-misc.el (calc-help, report-calc-bug): * lisp/calc/calc-mode.el (calc-auto-why, calc-save-modes) (calc-auto-recompute): * lisp/calc/calc-prog.el (calc-fix-token-name) (calc-read-parse-table-part, calc-user-define-invocation) (math-do-arg-check): * lisp/calc/calc-store.el (calc-edit-variable): * lisp/calc/calc-units.el (math-build-units-table-buffer): * lisp/calc/calc-vec.el (math-read-brackets): * lisp/calc/calc-yank.el (calc-edit-mode): * lisp/calc/calc.el (calc, calc-do, calc-user-invocation): * lisp/calendar/appt.el (appt-display-message): * lisp/calendar/diary-lib.el (diary-check-diary-file) (diary-mail-entries, diary-from-outlook): * lisp/calendar/icalendar.el (icalendar-export-region) (icalendar--convert-float-to-ical) (icalendar--convert-date-to-ical) (icalendar--convert-ical-to-diary) (icalendar--convert-recurring-to-diary) (icalendar--add-diary-entry): * lisp/calendar/time-date.el (format-seconds): * lisp/calendar/timeclock.el (timeclock-mode-line-display) (timeclock-make-hours-explicit, timeclock-log-data): * lisp/calendar/todo-mode.el (todo-prefix, todo-delete-category) (todo-item-mark, todo-check-format) (todo-insert-item--next-param, todo-edit-item--next-key) (todo-mode): * lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules): * lisp/cedet/mode-local.el (describe-mode-local-overload) (mode-local-print-binding, mode-local-describe-bindings-2): * lisp/cedet/semantic/complete.el (semantic-displayor-show-request): * lisp/cedet/srecode/srt-mode.el (srecode-macro-help): * lisp/cus-start.el (standard): * lisp/cus-theme.el (describe-theme-1): * lisp/custom.el (custom-add-dependencies, custom-check-theme) (custom--sort-vars-1, load-theme): * lisp/descr-text.el (describe-text-properties-1, describe-char): * lisp/dired-x.el (dired-do-run-mail): * lisp/dired.el (dired-log): * lisp/emacs-lisp/advice.el (ad-read-advised-function) (ad-read-advice-class, ad-read-advice-name, ad-enable-advice) (ad-disable-advice, ad-remove-advice, ad-set-argument) (ad-set-arguments, ad--defalias-fset, ad-activate) (ad-deactivate): * lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand) (byte-compile-unfold-lambda, byte-optimize-form-code-walker) (byte-optimize-while, byte-optimize-apply): * lisp/emacs-lisp/byte-run.el (defun, defsubst): * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode) (byte-compile-log-file, byte-compile-format-warn) (byte-compile-nogroup-warn, byte-compile-arglist-warn) (byte-compile-cl-warn) (byte-compile-warn-about-unresolved-functions) (byte-compile-file, byte-compile--declare-var) (byte-compile-file-form-defmumble, byte-compile-form) (byte-compile-normal-call, byte-compile-check-variable) (byte-compile-variable-ref, byte-compile-variable-set) (byte-compile-subr-wrong-args, byte-compile-setq-default) (byte-compile-negation-optimizer) (byte-compile-condition-case--old) (byte-compile-condition-case--new, byte-compile-save-excursion) (byte-compile-defvar, byte-compile-autoload) (byte-compile-lambda-form) (byte-compile-make-variable-buffer-local, display-call-tree) (batch-byte-compile): * lisp/emacs-lisp/cconv.el (cconv-convert, cconv--analyze-use): * lisp/emacs-lisp/chart.el (chart-space-usage): * lisp/emacs-lisp/check-declare.el (check-declare-scan) (check-declare-warn, check-declare-file) (check-declare-directory): * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine) (checkdoc-message-text-engine): * lisp/emacs-lisp/cl-extra.el (cl-parse-integer) (cl--describe-class): * lisp/emacs-lisp/cl-generic.el (cl-defgeneric) (cl--generic-describe, cl-generic-generalizers): * lisp/emacs-lisp/cl-macs.el (cl--parse-loop-clause, cl-tagbody) (cl-symbol-macrolet): * lisp/emacs-lisp/cl.el (cl-unload-function, flet): * lisp/emacs-lisp/copyright.el (copyright) (copyright-update-directory): * lisp/emacs-lisp/edebug.el (edebug-read-list): * lisp/emacs-lisp/eieio-base.el (eieio-persistent-read): * lisp/emacs-lisp/eieio-core.el (eieio--slot-override) (eieio-oref): * lisp/emacs-lisp/eieio-opt.el (eieio-help-constructor): * lisp/emacs-lisp/eieio-speedbar.el: (eieio-speedbar-child-make-tag-lines) (eieio-speedbar-child-description): * lisp/emacs-lisp/eieio.el (defclass, change-class): * lisp/emacs-lisp/elint.el (elint-file, elint-get-top-forms) (elint-init-form, elint-check-defalias-form) (elint-check-let-form): * lisp/emacs-lisp/ert.el (ert-get-test, ert-results-mode-menu) (ert-results-pop-to-backtrace-for-test-at-point) (ert-results-pop-to-messages-for-test-at-point) (ert-results-pop-to-should-forms-for-test-at-point) (ert-describe-test): * lisp/emacs-lisp/find-func.el (find-function-search-for-symbol) (find-function-library): * lisp/emacs-lisp/generator.el (iter-yield): * lisp/emacs-lisp/gv.el (gv-define-simple-setter): * lisp/emacs-lisp/lisp-mnt.el (lm-verify): * lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning): * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): * lisp/emacs-lisp/nadvice.el (advice--make-docstring) (advice--make, define-advice): * lisp/emacs-lisp/package-x.el (package-upload-file): * lisp/emacs-lisp/package.el (package-version-join) (package-disabled-p, package-activate-1, package-activate) (package--download-one-archive) (package--download-and-read-archives) (package-compute-transaction, package-install-from-archive) (package-install, package-install-selected-packages) (package-delete, package-autoremove, describe-package-1) (package-install-button-action, package-delete-button-action) (package-menu-hide-package, package-menu--list-to-prompt) (package-menu--perform-transaction) (package-menu--find-and-notify-upgrades): * lisp/emacs-lisp/pcase.el (pcase-exhaustive, pcase--u1): * lisp/emacs-lisp/re-builder.el (reb-enter-subexp-mode): * lisp/emacs-lisp/ring.el (ring-previous, ring-next): * lisp/emacs-lisp/rx.el (rx-check, rx-anything) (rx-check-any-string, rx-check-any, rx-check-not, rx-=) (rx-repeat, rx-check-backref, rx-syntax, rx-check-category) (rx-form): * lisp/emacs-lisp/smie.el (smie-config-save): * lisp/emacs-lisp/subr-x.el (internal--check-binding): * lisp/emacs-lisp/tabulated-list.el (tabulated-list-put-tag): * lisp/emacs-lisp/testcover.el (testcover-1value): * lisp/emacs-lisp/timer.el (timer-event-handler): * lisp/emulation/viper-cmd.el (viper-toggle-parse-sexp-ignore-comments) (viper-toggle-search-style, viper-kill-buffer) (viper-brac-function): * lisp/emulation/viper-macs.el (viper-record-kbd-macro): * lisp/env.el (setenv): * lisp/erc/erc-button.el (erc-nick-popup): * lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login, english): * lisp/eshell/em-dirs.el (eshell/cd): * lisp/eshell/em-glob.el (eshell-glob-regexp) (eshell-glob-entries): * lisp/eshell/em-pred.el (eshell-parse-modifiers): * lisp/eshell/esh-opt.el (eshell-show-usage): * lisp/facemenu.el (facemenu-add-new-face) (facemenu-add-new-color): * lisp/faces.el (read-face-name, read-face-font, describe-face) (x-resolve-font-name): * lisp/files-x.el (modify-file-local-variable): * lisp/files.el (locate-user-emacs-file, find-alternate-file) (set-auto-mode, hack-one-local-variable--obsolete) (dir-locals-set-directory-class, write-file, basic-save-buffer) (delete-directory, copy-directory, recover-session) (recover-session-finish, insert-directory) (file-modes-char-to-who, file-modes-symbolic-to-number) (move-file-to-trash): * lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer): * lisp/find-cmd.el (find-generic, find-to-string): * lisp/finder.el (finder-commentary): * lisp/font-lock.el (font-lock-fontify-buffer): * lisp/format.el (format-write-file, format-find-file) (format-insert-file): * lisp/frame.el (get-device-terminal, select-frame-by-name): * lisp/fringe.el (fringe--check-style): * lisp/gnus/nnmairix.el (nnmairix-widget-create-query): * lisp/help-fns.el (help-fns--key-bindings) (help-fns--compiler-macro, help-fns--parent-mode) (help-fns--obsolete, help-fns--interactive-only) (describe-function-1, describe-variable): * lisp/help.el (describe-mode) (describe-minor-mode-from-indicator): * lisp/image.el (image-type): * lisp/international/ccl.el (ccl-dump): * lisp/international/fontset.el (x-must-resolve-font-name): * lisp/international/mule-cmds.el (prefer-coding-system) (select-safe-coding-system-interactively) (select-safe-coding-system, activate-input-method) (toggle-input-method, describe-current-input-method) (describe-language-environment): * lisp/international/mule-conf.el (code-offset): * lisp/international/mule-diag.el (describe-character-set) (list-input-methods-1): * lisp/mail/feedmail.el (feedmail-run-the-queue): * lisp/mouse.el (minor-mode-menu-from-indicator): * lisp/mpc.el (mpc-playlist-rename): * lisp/msb.el (msb--choose-menu): * lisp/net/ange-ftp.el (ange-ftp-shell-command): * lisp/net/imap.el (imap-interactive-login): * lisp/net/mairix.el (mairix-widget-create-query): * lisp/net/newst-backend.el (newsticker--sentinel-work): * lisp/net/newst-treeview.el (newsticker--treeview-load): * lisp/net/rlogin.el (rlogin): * lisp/obsolete/iswitchb.el (iswitchb-possible-new-buffer): * lisp/obsolete/otodo-mode.el (todo-more-important-p): * lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region): * lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region): * lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region): * lisp/org/ob-core.el (org-babel-goto-named-src-block) (org-babel-goto-named-result): * lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap): * lisp/org/ob-ref.el (org-babel-ref-resolve): * lisp/org/org-agenda.el (org-agenda-prepare): * lisp/org/org-clock.el (org-clock-notify-once-if-expired) (org-clock-resolve): * lisp/org/org-ctags.el (org-ctags-ask-rebuild-tags-file-then-find-tag): * lisp/org/org-feed.el (org-feed-parse-atom-entry): * lisp/org/org-habit.el (org-habit-parse-todo): * lisp/org/org-mouse.el (org-mouse-popup-global-menu) (org-mouse-context-menu): * lisp/org/org-table.el (org-table-edit-formulas): * lisp/org/ox.el (org-export-async-start): * lisp/proced.el (proced-log): * lisp/progmodes/ada-mode.el (ada-get-indent-case) (ada-check-matching-start, ada-goto-matching-start): * lisp/progmodes/ada-prj.el (ada-prj-display-page): * lisp/progmodes/ada-xref.el (ada-find-executable): * lisp/progmodes/ebrowse.el (ebrowse-tags-apropos): * lisp/progmodes/etags.el (etags-tags-apropos-additional): * lisp/progmodes/flymake.el (flymake-parse-err-lines) (flymake-start-syntax-check-process): * lisp/progmodes/python.el (python-shell-get-process-or-error) (python-define-auxiliary-skeleton): * lisp/progmodes/sql.el (sql-comint): * lisp/progmodes/verilog-mode.el (verilog-load-file-at-point): * lisp/progmodes/vhdl-mode.el (vhdl-widget-directory-validate): * lisp/recentf.el (recentf-open-files): * lisp/replace.el (query-replace-read-from) (occur-after-change-function, occur-1): * lisp/scroll-bar.el (scroll-bar-columns): * lisp/server.el (server-get-auth-key): * lisp/simple.el (execute-extended-command) (undo-outer-limit-truncate, list-processes--refresh) (compose-mail, set-variable, choose-completion-string) (define-alternatives): * lisp/startup.el (site-run-file, tty-handle-args, command-line) (command-line-1): * lisp/subr.el (noreturn, define-error, add-to-list) (read-char-choice, version-to-list): * lisp/term/common-win.el (x-handle-xrm-switch) (x-handle-name-switch, x-handle-args): * lisp/term/x-win.el (x-handle-parent-id, x-handle-smid): * lisp/textmodes/reftex-ref.el (reftex-label): * lisp/textmodes/reftex-toc.el (reftex-toc-rename-label): * lisp/textmodes/two-column.el (2C-split): * lisp/tutorial.el (tutorial--describe-nonstandard-key) (tutorial--find-changed-keys): * lisp/type-break.el (type-break-noninteractive-query): * lisp/wdired.el (wdired-do-renames, wdired-do-symlink-changes) (wdired-do-perm-changes): * lisp/whitespace.el (whitespace-report-region): Prefer grave quoting in source-code strings used to generate help and diagnostics. * lisp/faces.el (face-documentation): No need to convert quotes, since the result is a docstring. * lisp/info.el (Info-virtual-index-find-node) (Info-virtual-index, info-apropos): Simplify by generating only curved quotes, since info files are typically that ways nowadays anyway. * lisp/international/mule-diag.el (list-input-methods): Don’t assume text quoting style is curved. * lisp/org/org-bibtex.el (org-bibtex-fields): Revert my recent changes, going back to the old quoting style.
2015-09-07 08:41:44 -07:00
(concat "Obsolete variable `newsticker-groups-filename' "
"points to existing file \"%s\".\n"
"Read it? ")
newsticker-groups-filename))
2008-11-24 19:40:35 +00:00
newsticker-groups-filename)
(concat newsticker-dir "/groups")))
(buf (and (file-exists-p filename)
(find-file-noselect filename))))
(and newsticker-groups-filename
(file-exists-p newsticker-groups-filename)
More-conservative ‘format’ quote restyling Instead of restyling curved quotes for every call to ‘format’, create a new function ‘format-message’ that does the restyling, and using the new function instead of ‘format’ only in contexts where this seems appropriate. Problem reported by Dmitry Gutov and Andreas Schwab in: http://lists.gnu.org/archive/html/emacs-devel/2015-08/msg00826.html http://lists.gnu.org/archive/html/emacs-devel/2015-08/msg00827.html * doc/lispref/commands.texi (Using Interactive): * doc/lispref/control.texi (Signaling Errors, Signaling Errors): * doc/lispref/display.texi (Displaying Messages, Progress): * doc/lispref/elisp.texi: * doc/lispref/help.texi (Keys in Documentation): * doc/lispref/minibuf.texi (Minibuffer Misc): * doc/lispref/strings.texi (Formatting Strings): * etc/NEWS: Document the changes. * lisp/abbrev.el (expand-region-abbrevs): * lisp/apropos.el (apropos-library): * lisp/calc/calc-ext.el (calc-record-message) (calc-user-function-list): * lisp/calc/calc-help.el (calc-describe-key, calc-full-help): * lisp/calc/calc-lang.el (math-read-big-balance): * lisp/calc/calc-store.el (calc-edit-variable): * lisp/calc/calc-units.el (math-build-units-table-buffer): * lisp/calc/calc-yank.el (calc-edit-mode): * lisp/calendar/icalendar.el (icalendar-export-region) (icalendar--add-diary-entry): * lisp/cedet/mode-local.el (mode-local-print-binding) (mode-local-describe-bindings-2): * lisp/cedet/semantic/complete.el (semantic-completion-message): * lisp/cedet/semantic/edit.el (semantic-parse-changes-failed): * lisp/cedet/semantic/wisent/comp.el (wisent-log): * lisp/cedet/srecode/insert.el (srecode-insert-show-error-report): * lisp/descr-text.el (describe-text-properties-1, describe-char): * lisp/dframe.el (dframe-message): * lisp/dired-aux.el (dired-query): * lisp/emacs-lisp/byte-opt.el (byte-compile-log-lap-1): * lisp/emacs-lisp/bytecomp.el (byte-compile-log) (byte-compile-log-file, byte-compile-warn, byte-compile-form): * lisp/emacs-lisp/cconv.el (cconv-convert, cconv--analyze-use) (cconv-analyze-form): * lisp/emacs-lisp/check-declare.el (check-declare-warn): * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): * lisp/emacs-lisp/cl-macs.el (cl-symbol-macrolet): * lisp/emacs-lisp/edebug.el (edebug-format): * lisp/emacs-lisp/eieio-core.el (eieio-oref): * lisp/emacs-lisp/eldoc.el (eldoc-minibuffer-message) (eldoc-message): * lisp/emacs-lisp/elint.el (elint-file, elint-log): * lisp/emacs-lisp/find-func.el (find-function-library): * lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning): * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): * lisp/emacs-lisp/nadvice.el (advice--make-docstring): * lisp/emacs-lisp/package.el (package-compute-transaction) (package-install-button-action, package-delete-button-action) (package-menu--list-to-prompt): * lisp/emacs-lisp/timer.el (timer-event-handler): * lisp/emacs-lisp/warnings.el (lwarn, warn): * lisp/emulation/viper-cmd.el: (viper-toggle-parse-sexp-ignore-comments) (viper-kill-buffer, viper-brac-function): * lisp/emulation/viper-macs.el (viper-record-kbd-macro): * lisp/facemenu.el (facemenu-add-new-face): * lisp/faces.el (face-documentation, read-face-name) (face-read-string, read-face-font, describe-face): * lisp/files.el (find-alternate-file, hack-local-variables) (hack-one-local-variable--obsolete, write-file) (basic-save-buffer, delete-directory): * lisp/format.el (format-write-file, format-find-file) (format-insert-file): * lisp/help-fns.el (help-fns--key-bindings) (help-fns--compiler-macro, help-fns--obsolete) (help-fns--interactive-only, describe-function-1) (describe-variable): * lisp/help.el (describe-mode): * lisp/info-xref.el (info-xref-output): * lisp/info.el (Info-virtual-index-find-node) (Info-virtual-index, info-apropos): * lisp/international/kkc.el (kkc-error): * lisp/international/mule-cmds.el: (select-safe-coding-system-interactively) (select-safe-coding-system, describe-input-method): * lisp/international/mule-conf.el (code-offset): * lisp/international/mule-diag.el (describe-character-set) (list-input-methods-1): * lisp/international/quail.el (quail-error): * lisp/minibuffer.el (minibuffer-message): * lisp/mpc.el (mpc--debug): * lisp/msb.el (msb--choose-menu): * lisp/net/ange-ftp.el (ange-ftp-message): * lisp/net/gnutls.el (gnutls-message-maybe): * lisp/net/newst-backend.el (newsticker--sentinel-work): * lisp/net/newst-treeview.el (newsticker--treeview-load): * lisp/net/nsm.el (nsm-query-user): * lisp/net/rlogin.el (rlogin): * lisp/net/soap-client.el (soap-warning): * lisp/net/tramp.el (tramp-debug-message): * lisp/nxml/nxml-outln.el (nxml-report-outline-error): * lisp/nxml/nxml-parse.el (nxml-parse-error): * lisp/nxml/rng-cmpct.el (rng-c-error): * lisp/nxml/rng-match.el (rng-compile-error): * lisp/nxml/rng-uri.el (rng-uri-error): * lisp/obsolete/iswitchb.el (iswitchb-possible-new-buffer): * lisp/org/org-ctags.el: (org-ctags-ask-rebuild-tags-file-then-find-tag): * lisp/proced.el (proced-log): * lisp/progmodes/ebnf2ps.el (ebnf-log): * lisp/progmodes/flymake.el (flymake-log): * lisp/progmodes/vhdl-mode.el (vhdl-warning-when-idle): * lisp/replace.el (occur-1): * lisp/simple.el (execute-extended-command) (undo-outer-limit-truncate, define-alternatives): * lisp/startup.el (command-line): * lisp/subr.el (error, user-error, add-to-list): * lisp/tutorial.el (tutorial--describe-nonstandard-key) (tutorial--find-changed-keys): * src/callint.c (Fcall_interactively): * src/editfns.c (Fmessage, Fmessage_box): Restyle the quotes of format strings intended for use as a diagnostic, when restyling seems appropriate. * lisp/subr.el (format-message): New function. * src/doc.c (Finternal__text_restyle): New function. (syms_of_doc): Define it.
2015-08-23 22:38:02 -07:00
(y-or-n-p (format-message
(concat "Delete the file \"%s\",\nto which the obsolete "
Go back to grave quoting in source-code docstrings etc. This reverts almost all my recent changes to use curved quotes in docstrings and/or strings used for error diagnostics. There are a few exceptions, e.g., Bahá’í proper names. * admin/unidata/unidata-gen.el (unidata-gen-table): * lisp/abbrev.el (expand-region-abbrevs): * lisp/align.el (align-region): * lisp/allout.el (allout-mode, allout-solicit-alternate-bullet) (outlineify-sticky): * lisp/apropos.el (apropos-library): * lisp/bookmark.el (bookmark-default-annotation-text): * lisp/button.el (button-category-symbol, button-put) (make-text-button): * lisp/calc/calc-aent.el (math-read-if, math-read-factor): * lisp/calc/calc-embed.el (calc-do-embedded): * lisp/calc/calc-ext.el (calc-user-function-list): * lisp/calc/calc-graph.el (calc-graph-show-dumb): * lisp/calc/calc-help.el (calc-describe-key) (calc-describe-thing, calc-full-help): * lisp/calc/calc-lang.el (calc-c-language) (math-parse-fortran-vector-end, math-parse-tex-sum) (math-parse-eqn-matrix, math-parse-eqn-prime) (calc-yacas-language, calc-maxima-language, calc-giac-language) (math-read-giac-subscr, math-read-math-subscr) (math-read-big-rec, math-read-big-balance): * lisp/calc/calc-misc.el (calc-help, report-calc-bug): * lisp/calc/calc-mode.el (calc-auto-why, calc-save-modes) (calc-auto-recompute): * lisp/calc/calc-prog.el (calc-fix-token-name) (calc-read-parse-table-part, calc-user-define-invocation) (math-do-arg-check): * lisp/calc/calc-store.el (calc-edit-variable): * lisp/calc/calc-units.el (math-build-units-table-buffer): * lisp/calc/calc-vec.el (math-read-brackets): * lisp/calc/calc-yank.el (calc-edit-mode): * lisp/calc/calc.el (calc, calc-do, calc-user-invocation): * lisp/calendar/appt.el (appt-display-message): * lisp/calendar/diary-lib.el (diary-check-diary-file) (diary-mail-entries, diary-from-outlook): * lisp/calendar/icalendar.el (icalendar-export-region) (icalendar--convert-float-to-ical) (icalendar--convert-date-to-ical) (icalendar--convert-ical-to-diary) (icalendar--convert-recurring-to-diary) (icalendar--add-diary-entry): * lisp/calendar/time-date.el (format-seconds): * lisp/calendar/timeclock.el (timeclock-mode-line-display) (timeclock-make-hours-explicit, timeclock-log-data): * lisp/calendar/todo-mode.el (todo-prefix, todo-delete-category) (todo-item-mark, todo-check-format) (todo-insert-item--next-param, todo-edit-item--next-key) (todo-mode): * lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules): * lisp/cedet/mode-local.el (describe-mode-local-overload) (mode-local-print-binding, mode-local-describe-bindings-2): * lisp/cedet/semantic/complete.el (semantic-displayor-show-request): * lisp/cedet/srecode/srt-mode.el (srecode-macro-help): * lisp/cus-start.el (standard): * lisp/cus-theme.el (describe-theme-1): * lisp/custom.el (custom-add-dependencies, custom-check-theme) (custom--sort-vars-1, load-theme): * lisp/descr-text.el (describe-text-properties-1, describe-char): * lisp/dired-x.el (dired-do-run-mail): * lisp/dired.el (dired-log): * lisp/emacs-lisp/advice.el (ad-read-advised-function) (ad-read-advice-class, ad-read-advice-name, ad-enable-advice) (ad-disable-advice, ad-remove-advice, ad-set-argument) (ad-set-arguments, ad--defalias-fset, ad-activate) (ad-deactivate): * lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand) (byte-compile-unfold-lambda, byte-optimize-form-code-walker) (byte-optimize-while, byte-optimize-apply): * lisp/emacs-lisp/byte-run.el (defun, defsubst): * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode) (byte-compile-log-file, byte-compile-format-warn) (byte-compile-nogroup-warn, byte-compile-arglist-warn) (byte-compile-cl-warn) (byte-compile-warn-about-unresolved-functions) (byte-compile-file, byte-compile--declare-var) (byte-compile-file-form-defmumble, byte-compile-form) (byte-compile-normal-call, byte-compile-check-variable) (byte-compile-variable-ref, byte-compile-variable-set) (byte-compile-subr-wrong-args, byte-compile-setq-default) (byte-compile-negation-optimizer) (byte-compile-condition-case--old) (byte-compile-condition-case--new, byte-compile-save-excursion) (byte-compile-defvar, byte-compile-autoload) (byte-compile-lambda-form) (byte-compile-make-variable-buffer-local, display-call-tree) (batch-byte-compile): * lisp/emacs-lisp/cconv.el (cconv-convert, cconv--analyze-use): * lisp/emacs-lisp/chart.el (chart-space-usage): * lisp/emacs-lisp/check-declare.el (check-declare-scan) (check-declare-warn, check-declare-file) (check-declare-directory): * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine) (checkdoc-message-text-engine): * lisp/emacs-lisp/cl-extra.el (cl-parse-integer) (cl--describe-class): * lisp/emacs-lisp/cl-generic.el (cl-defgeneric) (cl--generic-describe, cl-generic-generalizers): * lisp/emacs-lisp/cl-macs.el (cl--parse-loop-clause, cl-tagbody) (cl-symbol-macrolet): * lisp/emacs-lisp/cl.el (cl-unload-function, flet): * lisp/emacs-lisp/copyright.el (copyright) (copyright-update-directory): * lisp/emacs-lisp/edebug.el (edebug-read-list): * lisp/emacs-lisp/eieio-base.el (eieio-persistent-read): * lisp/emacs-lisp/eieio-core.el (eieio--slot-override) (eieio-oref): * lisp/emacs-lisp/eieio-opt.el (eieio-help-constructor): * lisp/emacs-lisp/eieio-speedbar.el: (eieio-speedbar-child-make-tag-lines) (eieio-speedbar-child-description): * lisp/emacs-lisp/eieio.el (defclass, change-class): * lisp/emacs-lisp/elint.el (elint-file, elint-get-top-forms) (elint-init-form, elint-check-defalias-form) (elint-check-let-form): * lisp/emacs-lisp/ert.el (ert-get-test, ert-results-mode-menu) (ert-results-pop-to-backtrace-for-test-at-point) (ert-results-pop-to-messages-for-test-at-point) (ert-results-pop-to-should-forms-for-test-at-point) (ert-describe-test): * lisp/emacs-lisp/find-func.el (find-function-search-for-symbol) (find-function-library): * lisp/emacs-lisp/generator.el (iter-yield): * lisp/emacs-lisp/gv.el (gv-define-simple-setter): * lisp/emacs-lisp/lisp-mnt.el (lm-verify): * lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning): * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): * lisp/emacs-lisp/nadvice.el (advice--make-docstring) (advice--make, define-advice): * lisp/emacs-lisp/package-x.el (package-upload-file): * lisp/emacs-lisp/package.el (package-version-join) (package-disabled-p, package-activate-1, package-activate) (package--download-one-archive) (package--download-and-read-archives) (package-compute-transaction, package-install-from-archive) (package-install, package-install-selected-packages) (package-delete, package-autoremove, describe-package-1) (package-install-button-action, package-delete-button-action) (package-menu-hide-package, package-menu--list-to-prompt) (package-menu--perform-transaction) (package-menu--find-and-notify-upgrades): * lisp/emacs-lisp/pcase.el (pcase-exhaustive, pcase--u1): * lisp/emacs-lisp/re-builder.el (reb-enter-subexp-mode): * lisp/emacs-lisp/ring.el (ring-previous, ring-next): * lisp/emacs-lisp/rx.el (rx-check, rx-anything) (rx-check-any-string, rx-check-any, rx-check-not, rx-=) (rx-repeat, rx-check-backref, rx-syntax, rx-check-category) (rx-form): * lisp/emacs-lisp/smie.el (smie-config-save): * lisp/emacs-lisp/subr-x.el (internal--check-binding): * lisp/emacs-lisp/tabulated-list.el (tabulated-list-put-tag): * lisp/emacs-lisp/testcover.el (testcover-1value): * lisp/emacs-lisp/timer.el (timer-event-handler): * lisp/emulation/viper-cmd.el (viper-toggle-parse-sexp-ignore-comments) (viper-toggle-search-style, viper-kill-buffer) (viper-brac-function): * lisp/emulation/viper-macs.el (viper-record-kbd-macro): * lisp/env.el (setenv): * lisp/erc/erc-button.el (erc-nick-popup): * lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login, english): * lisp/eshell/em-dirs.el (eshell/cd): * lisp/eshell/em-glob.el (eshell-glob-regexp) (eshell-glob-entries): * lisp/eshell/em-pred.el (eshell-parse-modifiers): * lisp/eshell/esh-opt.el (eshell-show-usage): * lisp/facemenu.el (facemenu-add-new-face) (facemenu-add-new-color): * lisp/faces.el (read-face-name, read-face-font, describe-face) (x-resolve-font-name): * lisp/files-x.el (modify-file-local-variable): * lisp/files.el (locate-user-emacs-file, find-alternate-file) (set-auto-mode, hack-one-local-variable--obsolete) (dir-locals-set-directory-class, write-file, basic-save-buffer) (delete-directory, copy-directory, recover-session) (recover-session-finish, insert-directory) (file-modes-char-to-who, file-modes-symbolic-to-number) (move-file-to-trash): * lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer): * lisp/find-cmd.el (find-generic, find-to-string): * lisp/finder.el (finder-commentary): * lisp/font-lock.el (font-lock-fontify-buffer): * lisp/format.el (format-write-file, format-find-file) (format-insert-file): * lisp/frame.el (get-device-terminal, select-frame-by-name): * lisp/fringe.el (fringe--check-style): * lisp/gnus/nnmairix.el (nnmairix-widget-create-query): * lisp/help-fns.el (help-fns--key-bindings) (help-fns--compiler-macro, help-fns--parent-mode) (help-fns--obsolete, help-fns--interactive-only) (describe-function-1, describe-variable): * lisp/help.el (describe-mode) (describe-minor-mode-from-indicator): * lisp/image.el (image-type): * lisp/international/ccl.el (ccl-dump): * lisp/international/fontset.el (x-must-resolve-font-name): * lisp/international/mule-cmds.el (prefer-coding-system) (select-safe-coding-system-interactively) (select-safe-coding-system, activate-input-method) (toggle-input-method, describe-current-input-method) (describe-language-environment): * lisp/international/mule-conf.el (code-offset): * lisp/international/mule-diag.el (describe-character-set) (list-input-methods-1): * lisp/mail/feedmail.el (feedmail-run-the-queue): * lisp/mouse.el (minor-mode-menu-from-indicator): * lisp/mpc.el (mpc-playlist-rename): * lisp/msb.el (msb--choose-menu): * lisp/net/ange-ftp.el (ange-ftp-shell-command): * lisp/net/imap.el (imap-interactive-login): * lisp/net/mairix.el (mairix-widget-create-query): * lisp/net/newst-backend.el (newsticker--sentinel-work): * lisp/net/newst-treeview.el (newsticker--treeview-load): * lisp/net/rlogin.el (rlogin): * lisp/obsolete/iswitchb.el (iswitchb-possible-new-buffer): * lisp/obsolete/otodo-mode.el (todo-more-important-p): * lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region): * lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region): * lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region): * lisp/org/ob-core.el (org-babel-goto-named-src-block) (org-babel-goto-named-result): * lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap): * lisp/org/ob-ref.el (org-babel-ref-resolve): * lisp/org/org-agenda.el (org-agenda-prepare): * lisp/org/org-clock.el (org-clock-notify-once-if-expired) (org-clock-resolve): * lisp/org/org-ctags.el (org-ctags-ask-rebuild-tags-file-then-find-tag): * lisp/org/org-feed.el (org-feed-parse-atom-entry): * lisp/org/org-habit.el (org-habit-parse-todo): * lisp/org/org-mouse.el (org-mouse-popup-global-menu) (org-mouse-context-menu): * lisp/org/org-table.el (org-table-edit-formulas): * lisp/org/ox.el (org-export-async-start): * lisp/proced.el (proced-log): * lisp/progmodes/ada-mode.el (ada-get-indent-case) (ada-check-matching-start, ada-goto-matching-start): * lisp/progmodes/ada-prj.el (ada-prj-display-page): * lisp/progmodes/ada-xref.el (ada-find-executable): * lisp/progmodes/ebrowse.el (ebrowse-tags-apropos): * lisp/progmodes/etags.el (etags-tags-apropos-additional): * lisp/progmodes/flymake.el (flymake-parse-err-lines) (flymake-start-syntax-check-process): * lisp/progmodes/python.el (python-shell-get-process-or-error) (python-define-auxiliary-skeleton): * lisp/progmodes/sql.el (sql-comint): * lisp/progmodes/verilog-mode.el (verilog-load-file-at-point): * lisp/progmodes/vhdl-mode.el (vhdl-widget-directory-validate): * lisp/recentf.el (recentf-open-files): * lisp/replace.el (query-replace-read-from) (occur-after-change-function, occur-1): * lisp/scroll-bar.el (scroll-bar-columns): * lisp/server.el (server-get-auth-key): * lisp/simple.el (execute-extended-command) (undo-outer-limit-truncate, list-processes--refresh) (compose-mail, set-variable, choose-completion-string) (define-alternatives): * lisp/startup.el (site-run-file, tty-handle-args, command-line) (command-line-1): * lisp/subr.el (noreturn, define-error, add-to-list) (read-char-choice, version-to-list): * lisp/term/common-win.el (x-handle-xrm-switch) (x-handle-name-switch, x-handle-args): * lisp/term/x-win.el (x-handle-parent-id, x-handle-smid): * lisp/textmodes/reftex-ref.el (reftex-label): * lisp/textmodes/reftex-toc.el (reftex-toc-rename-label): * lisp/textmodes/two-column.el (2C-split): * lisp/tutorial.el (tutorial--describe-nonstandard-key) (tutorial--find-changed-keys): * lisp/type-break.el (type-break-noninteractive-query): * lisp/wdired.el (wdired-do-renames, wdired-do-symlink-changes) (wdired-do-perm-changes): * lisp/whitespace.el (whitespace-report-region): Prefer grave quoting in source-code strings used to generate help and diagnostics. * lisp/faces.el (face-documentation): No need to convert quotes, since the result is a docstring. * lisp/info.el (Info-virtual-index-find-node) (Info-virtual-index, info-apropos): Simplify by generating only curved quotes, since info files are typically that ways nowadays anyway. * lisp/international/mule-diag.el (list-input-methods): Don’t assume text quoting style is curved. * lisp/org/org-bibtex.el (org-bibtex-fields): Revert my recent changes, going back to the old quoting style.
2015-09-07 08:41:44 -07:00
"variable `newsticker-groups-filename' points ? ")
newsticker-groups-filename))
(delete-file newsticker-groups-filename))
2008-06-08 15:36:18 +00:00
(when buf
(set-buffer buf)
(goto-char (point-min))
(condition-case nil
(setq newsticker-groups (read buf))
(error
(message "Error while reading newsticker groups file!")
(setq newsticker-groups nil)))
(kill-buffer buf))))
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview-scroll-item ()
"Scroll current item."
(interactive)
(save-selected-window
(select-window (newsticker--treeview-item-window) t)
(scroll-up 1)))
(defun newsticker-treeview-show-item ()
"Show current item."
(interactive)
(newsticker--treeview-restore-layout)
2008-06-08 15:36:18 +00:00
(newsticker--treeview-list-update-highlight)
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
2008-06-08 15:36:18 +00:00
(beginning-of-line)
(let ((item (get-text-property (point) :nt-item))
(feed (get-text-property (point) :nt-feed)))
(newsticker--treeview-item-show item feed)))
(newsticker--treeview-tree-update-tag
(newsticker--treeview-get-current-node) t)
(newsticker--treeview-tree-update-highlight))
(defun newsticker-treeview-next-item ()
"Move to next item."
(interactive)
(newsticker--treeview-restore-layout)
2008-06-08 15:36:18 +00:00
(save-current-buffer
(set-buffer (newsticker--treeview-list-buffer))
(if (newsticker--treeview-list-highlight-start)
(forward-line 1))
(if (eobp)
(forward-line -1)))
(newsticker-treeview-show-item))
(defun newsticker-treeview-prev-item ()
"Move to previous item."
(interactive)
(newsticker--treeview-restore-layout)
2008-06-08 15:36:18 +00:00
(save-current-buffer
(set-buffer (newsticker--treeview-list-buffer))
(forward-line -1))
(newsticker-treeview-show-item))
2009-01-22 19:52:17 +00:00
(defun newsticker-treeview-next-new-or-immortal-item (&optional
current-item-counts
dont-wrap-trees)
2009-01-22 19:52:17 +00:00
"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
2009-12-04 19:27:42 +00:00
new or immortal. Will not move from virtual to ordinary feed
tree or vice versa if optional argument DONT-WRAP-TREES is non-nil."
2008-06-08 15:36:18 +00:00
(interactive)
(newsticker--treeview-restore-layout)
2008-06-08 15:36:18 +00:00
(newsticker--treeview-list-clear-highlight)
2009-01-22 19:52:17 +00:00
(unless (catch 'found
(let ((move (not current-item-counts)))
(while t
(save-current-buffer
(set-buffer (newsticker--treeview-list-buffer))
(when move (forward-line 1)
(when (eobp)
(forward-line -1)
(throw 'found nil))))
(when (memq (newsticker--age
(newsticker--treeview-get-selected-item))
'(new immortal))
(newsticker-treeview-show-item)
(throw 'found t))
(setq move t))))
(let ((wrap-trees (not dont-wrap-trees)))
(when (or (newsticker-treeview-next-feed t)
(and wrap-trees (newsticker--treeview-first-feed)))
(newsticker-treeview-next-new-or-immortal-item t t)))))
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview-prev-new-or-immortal-item ()
2009-01-22 19:52:17 +00:00
"Move to previous new or immortal item.
Will move to previous feed until an item is found."
2008-06-08 15:36:18 +00:00
(interactive)
(newsticker--treeview-restore-layout)
2008-06-08 15:36:18 +00:00
(newsticker--treeview-list-clear-highlight)
2009-01-22 19:52:17 +00:00
(unless (catch 'found
(while t
(save-current-buffer
(set-buffer (newsticker--treeview-list-buffer))
(when (bobp)
(throw 'found nil))
(forward-line -1))
(when (memq (newsticker--age
(newsticker--treeview-get-selected-item))
'(new immortal))
(newsticker-treeview-show-item)
(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))))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-get-selected-item ()
"Return item that is currently selected in list buffer."
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
2008-06-08 15:36:18 +00:00
(beginning-of-line)
(get-text-property (point) :nt-item)))
(defun newsticker-treeview-mark-item-old (&optional dont-proceed)
"Mark current item as old unless it is obsolete.
Move to next item unless DONT-PROCEED is non-nil."
(interactive)
(let ((item (newsticker--treeview-get-selected-item)))
(unless (eq (newsticker--age item) 'obsolete)
(newsticker--treeview-mark-item item 'old)))
(unless dont-proceed
(newsticker-treeview-next-item)))
(defun newsticker-treeview-toggle-item-immortal ()
"Toggle immortality of current item."
(interactive)
(let* ((item (newsticker--treeview-get-selected-item))
(new-age (if (eq (newsticker--age item) 'immortal)
'old
'immortal)))
(newsticker--treeview-mark-item item new-age)
(newsticker-treeview-next-item)))
(defun newsticker--treeview-mark-item (item new-age)
"Mark ITEM with NEW-AGE."
(when item
(setcar (nthcdr 4 item) new-age)
;; clean up ticker FIXME
)
2008-11-24 19:40:35 +00:00
(newsticker--cache-save-feed
(newsticker--cache-get-feed (intern newsticker--treeview-current-feed)))
(newsticker--treeview-tree-do-update-tags newsticker--treeview-vfeed-tree))
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview-mark-list-items-old ()
"Mark all listed items as old."
(interactive)
(let ((current-feed (or newsticker--treeview-current-feed
newsticker--treeview-current-vfeed)))
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-list-buffer)
2008-06-08 15:36:18 +00:00
(goto-char (point-min))
(while (not (eobp))
(let ((item (get-text-property (point) :nt-item)))
(unless (memq (newsticker--age item) '(immortal obsolete))
(newsticker--treeview-mark-item item 'old)))
(forward-line 1)))
(newsticker--treeview-tree-update-tags)
(if current-feed
(newsticker-treeview-jump current-feed))))
(defun newsticker-treeview-save-item ()
"Save current item."
(interactive)
(newsticker-save-item (or newsticker--treeview-current-feed
newsticker--treeview-current-vfeed)
(newsticker--treeview-get-selected-item)))
(defun newsticker-treeview-browse-url-item ()
"Convert current item to HTML and call `browse-url' on result."
(interactive)
(newsticker-browse-url-item (or newsticker--treeview-current-feed
newsticker--treeview-current-vfeed)
(newsticker--treeview-get-selected-item)))
2008-06-08 15:36:18 +00:00
(defun newsticker--treeview-set-current-node (node)
"Make NODE the current node."
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-tree-buffer)
2008-06-08 15:36:18 +00:00
(setq newsticker--treeview-current-node-id
(widget-get node :nt-id))
(setq newsticker--treeview-current-feed (widget-get node :nt-feed))
(setq newsticker--treeview-current-vfeed (widget-get node :nt-vfeed))
(newsticker--treeview-tree-update-highlight)))
(defun newsticker--treeview-get-first-child (node)
"Get first child of NODE."
(let ((children (widget-get node :children)))
(if children
(car children)
nil)))
(defun newsticker--treeview-get-second-child (node)
"Get scond child of NODE."
(let ((children (widget-get node :children)))
(if children
(car (cdr children))
nil)))
(defun newsticker--treeview-get-last-child (node)
"Get last child of NODE."
;;(message "newsticker--treeview-get-last-child %s" (widget-get node :tag))
(let ((children (widget-get node :children)))
(if children
(car (reverse children))
nil)))
(defun newsticker--treeview-get-feed-vfeed (node)
"Get (virtual) feed of NODE."
(or (widget-get node :nt-feed) (widget-get node :nt-vfeed)))
(defun newsticker--treeview-get-next-sibling (node)
"Get next sibling of NODE."
(let ((parent (widget-get node :parent)))
(catch 'found
(let ((children (widget-get parent :children)))
(while children
(if (newsticker--treeview-nodes-eq (car children) node)
(throw 'found (car (cdr children))))
(setq children (cdr children)))))))
(defun newsticker--treeview-get-prev-sibling (node)
"Get previous sibling of NODE."
(let ((parent (widget-get node :parent)))
(catch 'found
(let ((children (widget-get parent :children))
(prev nil))
(while children
(if (and (newsticker--treeview-nodes-eq (car children) node)
(widget-get prev :nt-id))
(throw 'found prev))
(setq prev (car children))
(setq children (cdr children)))))))
(defun newsticker--treeview-get-next-uncle (node)
"Get next uncle of NODE, i.e. parent's next sibling."
(let* ((parent (widget-get node :parent))
(grand-parent (widget-get parent :parent)))
(catch 'found
(let ((uncles (widget-get grand-parent :children)))
(while uncles
(if (newsticker--treeview-nodes-eq (car uncles) parent)
(throw 'found (car (cdr uncles))))
(setq uncles (cdr uncles)))))))
(defun newsticker--treeview-get-prev-uncle (node)
"Get previous uncle of NODE, i.e. parent's previous sibling."
(let* ((parent (widget-get node :parent))
(grand-parent (widget-get parent :parent)))
(catch 'found
(let ((uncles (widget-get grand-parent :children))
(prev nil))
(while uncles
(if (newsticker--treeview-nodes-eq (car uncles) parent)
(throw 'found prev))
(setq prev (car uncles))
(setq uncles (cdr uncles)))))))
(defun newsticker--treeview-get-other-tree ()
"Get other tree."
(if (and (newsticker--treeview-get-current-node)
(widget-get (newsticker--treeview-get-current-node) :nt-feed))
newsticker--treeview-vfeed-tree
newsticker--treeview-feed-tree))
(defun newsticker--treeview-activate-node (node &optional backward)
"Activate NODE.
If NODE is a tree widget the node's first subnode is activated.
If BACKWARD is non-nil the last subnode of the previous sibling
is activated."
(newsticker--treeview-set-current-node node)
(save-current-buffer
(set-buffer (newsticker--treeview-tree-buffer))
(cond ((eq (widget-type node) 'tree-widget)
(unless (widget-get node :open)
(widget-put node :open nil)
(widget-apply-action node))
(newsticker--treeview-activate-node
(if backward
(newsticker--treeview-get-last-child node)
(newsticker--treeview-get-second-child node))))
(node
(widget-apply-action node)))))
(defun newsticker--treeview-first-feed ()
2009-12-04 19:27:42 +00:00
"Jump to the depth-first feed in the `newsticker-groups' tree."
(newsticker-treeview-jump
(car (reverse (newsticker--group-get-feeds newsticker-groups t)))))
2009-01-22 19:52:17 +00:00
(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."
2008-06-08 15:36:18 +00:00
(interactive)
(newsticker--treeview-restore-layout)
2009-01-22 19:52:17 +00:00
(let ((cur (newsticker--treeview-get-current-node))
(new nil))
(setq new
(if cur
(or (newsticker--treeview-get-next-sibling cur)
(newsticker--treeview-get-next-uncle cur)
(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)))
2009-01-22 19:52:17 +00:00
nil)))
2008-06-08 15:36:18 +00:00
2009-01-22 19:52:17 +00:00
(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."
2008-06-08 15:36:18 +00:00
(interactive)
(newsticker--treeview-restore-layout)
2009-01-22 19:52:17 +00:00
(let ((cur (newsticker--treeview-get-current-node))
(new nil))
2008-06-08 15:36:18 +00:00
(if cur
2009-01-22 19:52:17 +00:00
(progn
(setq new
(if cur
(or (newsticker--treeview-get-prev-sibling cur)
(newsticker--treeview-get-prev-uncle cur)
(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)))
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview-next-page ()
"Scroll item buffer."
(interactive)
(save-selected-window
(select-window (newsticker--treeview-item-window) t)
(condition-case nil
(scroll-up nil)
(error
(goto-char (point-min))))))
(defun newsticker--treeview-unfold-node (feed-name)
"Recursively show subtree above the node that represents FEED-NAME."
(let ((node (newsticker--treeview-get-node-of-feed feed-name)))
(unless node
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(let* ((group-name (car (newsticker--group-find-parent-group
feed-name))))
2008-06-08 15:36:18 +00:00
(newsticker--treeview-unfold-node group-name))
(setq node (newsticker--treeview-get-node-of-feed feed-name)))
(when node
* textmodes/two-column.el (2C-split): * textmodes/texnfo-upd.el (texinfo-multi-file-included-list): * textmodes/tex-mode.el (tex-set-buffer-directory): * textmodes/spell.el (spell-region, spell-string): * textmodes/reftex.el (reftex-erase-buffer): (reftex-get-file-buffer-force, reftex-kill-temporary-buffers): * textmodes/reftex-toc.el (reftex-toc-promote-action): * textmodes/reftex-sel.el (reftex-get-offset, reftex-insert-docstruct) (reftex-select-item): * textmodes/reftex-ref.el (reftex-label-info-update) (reftex-offer-label-menu): * textmodes/reftex-index.el (reftex-index-change-entry) (reftex-index-phrases-info): * textmodes/reftex-global.el (reftex-create-tags-file) (reftex-save-all-document-buffers, reftex-ensure-write-access): * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite) (reftex-view-crossref-from-bibtex): * textmodes/reftex-cite.el (reftex-bibtex-selection-callback) (reftex-extract-bib-entries-from-thebibliography) (reftex-all-used-citation-keys, reftex-create-bibtex-file): * textmodes/refbib.el (r2b-capitalize-title): (r2b-convert-buffer, r2b-help): * textmodes/page-ext.el (pages-directory) (pages-directory-goto-with-mouse): * textmodes/bibtex.el (bibtex-validate-globally): * textmodes/bib-mode.el (bib-capitalize-title): * textmodes/artist.el (artist-clear-buffer, artist-system): * progmodes/xscheme.el (global-set-scheme-interaction-buffer): (local-set-scheme-interaction-buffer, xscheme-process-filter) (verify-xscheme-buffer, xscheme-enter-interaction-mode) (xscheme-enter-debugger-mode, xscheme-debugger-mode-p) (xscheme-send-control-g-interrupt, xscheme-start-process) (xscheme-process-sentinel, xscheme-cd): * progmodes/verilog-mode.el (verilog-read-always-signals) (verilog-set-define, verilog-getopt-file) (verilog-module-inside-filename-p): * progmodes/sh-script.el: * progmodes/python.el (python-pdbtrack-get-source-buffer) (python-pdbtrack-grub-for-buffer, python-execute-file): * progmodes/octave-inf.el (inferior-octave): * progmodes/idlwave.el (idlwave-scan-user-lib-files) (idlwave-shell-compile-helper-routines, idlwave-set-local) (idlwave-display-completion-list-xemacs, idlwave-list-abbrevs) (idlwave-display-completion-list-emacs, idlwave-list-load-path-shadows) (idlwave-completion-fontify-classes, idlwave-display-calling-sequence): * progmodes/idlw-shell.el (idlwave-shell-examine-display-clear) (idlwave-shell-filter, idlwave-shell-examine-highlight) (idlwave-shell-sentinel, idlwave-shell-filter-directory) (idlwave-shell-display-line, idlwave-shell-set-bp-in-module) (idlwave-shell-examine-display, idlwave-shell-run-region) (idlwave-shell-filter-bp, idlwave-shell-save-and-action) (idlwave-shell-sources-filter, idlwave-shell-goto-next-error): * progmodes/idlw-help.el (idlwave-help-get-special-help) (idlwave-help-get-help-buffer): * progmodes/gud.el (gud-basic-call, gud-find-class) (gud-tooltip-activate-mouse-motions-if-enabled): * progmodes/gdb-mi.el (gdb-mouse-toggle-breakpoint-fringe): * progmodes/ebrowse.el (ebrowse-member-table, ebrowse-save-tree-as) (ebrowse-view-exit-fn, ebrowse-tags-list-members-in-file) (ebrowse-tags-next-file): * progmodes/ebnf2ps.el (ebnf-generate-eps, ebnf-generate-eps) (ebnf-eps-production-list, ebnf-begin-file, ebnf-log) (ebnf-eps-finish-and-write): * progmodes/cpp.el (cpp-edit-save): * progmodes/cperl-mode.el (cperl-pod-to-manpage): * progmodes/cc-defs.el (c-emacs-features): * progmodes/antlr-mode.el (antlr-invalidate-context-cache) (antlr-directory-dependencies): * progmodes/ada-xref.el (ada-gnat-parse-gpr, ada-get-ali-file-name) (ada-run-application, ada-find-in-src-path, ada-goto-parent) (ada-find-any-references, ada-make-filename-from-adaname) (ada-make-body-gnatstub): * obsolete/rnews.el (news-list-news-groups): * obsolete/resume.el (resume-suspend-hook,resume-write-buffer-to-file): * obsolete/iso-acc.el (iso-acc-minibuf-setup): * net/rcirc.el (rcirc-debug): * net/newst-treeview.el (newsticker--treeview-list-add-item) (newsticker--treeview-list-clear, newsticker-treeview-browse-url) (newsticker--treeview-list-update-faces, newsticker-treeview-save) (newsticker--treeview-item-show-text, newsticker--treeview-item-show) (newsticker--treeview-tree-update-tag,newsticker--treeview-buffer-init) (newsticker-treeview-show-item, newsticker--treeview-unfold-node) (newsticker--treeview-list-clear-highlight) (newsticker--treeview-list-update-highlight) (newsticker--treeview-list-highlight-start) (newsticker--treeview-tree-update-highlight) (newsticker--treeview-get-selected-item) (newsticker-treeview-mark-list-items-old) (newsticker--treeview-set-current-node): * net/newst-plainview.el (newsticker--buffer-set-uptodate): * net/newst-backend.el (newsticker--get-news-by-funcall) (newsticker--get-news-by-wget, newsticker--image-get) (newsticker--image-sentinel): * net/mairix.el (mairix-rmail-fetch-field, mairix-gnus-fetch-field): * net/eudcb-ph.el (eudc-ph-do-request, eudc-ph-open-session): (eudc-ph-close-session): * net/eudc.el (eudc-save-options): * language/thai-word.el (thai-update-word-table): * language/japan-util.el (japanese-string-conversion): * international/titdic-cnv.el (tsang-quick-converter) (ziranma-converter, ctlau-converter): * international/mule-cmds.el (describe-language-environment): * international/ja-dic-cnv.el (skkdic-convert-okuri-ari) (skkdic-convert-postfix, skkdic-convert-prefix): (skkdic-convert-okuri-nasi, skkdic-convert): * emacs-lisp/re-builder.el (reb-update-overlays): * emacs-lisp/pp.el (pp-to-string, pp-display-expression): * emacs-lisp/gulp.el (gulp-send-requests): * emacs-lisp/find-gc.el (trace-call-tree): * emacs-lisp/eieio-opt.el (eieio-browse, eieio-describe-class) (eieio-describe-generic): * emacs-lisp/eieio-base.el (eieio-persistent-read): * emacs-lisp/edebug.el (edebug-outside-excursion): * emacs-lisp/debug.el (debugger-make-xrefs): * emacs-lisp/cust-print.el (custom-prin1-to-string): * emacs-lisp/chart.el (chart-new-buffer): * emacs-lisp/authors.el (authors-scan-el, authors-scan-change-log): Use with-current-buffer. * textmodes/artist.el (artist-system): Don't call copy-sequence on a fresh string. * progmodes/idlw-shell.el (easymenu setup): Use dolist.
2009-10-31 02:38:34 +00:00
(with-current-buffer (newsticker--treeview-tree-buffer)
2008-06-08 15:36:18 +00:00
(widget-put node :nt-selected t)
(widget-apply-action node)
(newsticker--treeview-set-current-node node)))))
(defun newsticker-treeview-jump (feed-name)
"Jump to feed FEED-NAME in newsticker treeview."
(interactive
(list (let ((completion-ignore-case t))
(completing-read
"Jump to feed: "
(append '("new" "obsolete" "immortal" "all")
(mapcar #'car (append newsticker-url-list
newsticker-url-list-defaults)))
nil t))))
2008-06-08 15:36:18 +00:00
(newsticker--treeview-unfold-node feed-name))
;; ======================================================================
;;; Groups
;; ======================================================================
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(defun newsticker--group-do-find-group (feed-or-group-name parent-node node)
"Recursively find FEED-OR-GROUP-NAME in PARENT-NODE or NODE."
(cond ((stringp node)
(when (string= feed-or-group-name node)
(throw 'found parent-node)))
((listp node)
(cond ((string= feed-or-group-name (car node))
(throw 'found parent-node))
((member feed-or-group-name (cdr node))
(throw 'found node))
(t
(mapc (lambda (n)
(if (listp n)
(newsticker--group-do-find-group
feed-or-group-name node n)))
(cdr node)))))))
(defun newsticker--group-find-parent-group (feed-or-group-name)
"Find group containing FEED-OR-GROUP-NAME."
2008-06-08 15:36:18 +00:00
(catch 'found
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(mapc (lambda (n)
(newsticker--group-do-find-group feed-or-group-name
newsticker-groups
n))
newsticker-groups)
2008-06-08 15:36:18 +00:00
nil))
(defun newsticker--group-do-get-group (name node)
"Recursively find group with NAME below NODE."
(if (string= name (car node))
(throw 'found node)
(mapc (lambda (n)
(if (listp n)
(newsticker--group-do-get-group name n)))
(cdr node))))
(defun newsticker--group-get-group (name)
"Find group with NAME."
(catch 'found
(mapc (lambda (n)
(if (listp n)
(newsticker--group-do-get-group name n)))
newsticker-groups)
nil))
(defun newsticker--group-get-subgroups (group &optional recursive)
"Return list of subgroups for GROUP.
If RECURSIVE is non-nil recursively get subgroups and return a nested list."
(let ((result nil))
(mapc (lambda (n)
(when (listp n)
(setq result (cons (car n) result))
(let ((subgroups (newsticker--group-get-subgroups n recursive)))
(when subgroups
(setq result (append subgroups result))))))
group)
result))
(defun newsticker--group-all-groups ()
"Return nested list of all groups."
(newsticker--group-get-subgroups newsticker-groups t))
(defun newsticker--group-get-feeds (group &optional recursive)
"Return list of all feeds in GROUP.
If RECURSIVE is non-nil recursively get feeds of subgroups and
return a nested list."
(let ((result nil))
(mapc (lambda (n)
(if (not (listp n))
(setq result (cons n result))
(if recursive
(let ((subfeeds (newsticker--group-get-feeds n t)))
(when subfeeds
(setq result (append subfeeds result)))))))
(cdr group))
2008-06-08 15:36:18 +00:00
result))
(defun newsticker-group-add-group (name parent)
"Add group NAME to group PARENT."
(interactive
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(list (read-string "Name of new group: ")
2008-06-08 15:36:18 +00:00
(let ((completion-ignore-case t))
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(completing-read "Name of parent group (optional): " (newsticker--group-all-groups)
2008-06-08 15:36:18 +00:00
nil t))))
(if (newsticker--group-get-group name)
(error "Group %s exists already" name))
(let ((p (if (and parent (not (string= parent "")))
(newsticker--group-get-group parent)
newsticker-groups)))
(unless p
(error "Parent %s does not exist" parent))
(setcdr p (cons (list name) (cdr p))))
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(newsticker--treeview-tree-update)
(newsticker-treeview-jump newsticker--treeview-current-feed))
(defun newsticker-group-delete-group (name)
"Delete group NAME."
(interactive
(list (let ((completion-ignore-case t))
(completing-read "Delete group: "
(newsticker--group-names)
nil t (car (newsticker--group-find-parent-group
newsticker--treeview-current-feed))))))
(let ((parent-group (newsticker--group-find-parent-group name)))
(unless parent-group
(error "Parent %s does not exist" parent-group))
(setcdr parent-group (cl-delete-if (lambda (g)
(and (listp g)
(string= name (car g))))
(cdr parent-group)))
(newsticker--group-manage-orphan-feeds)
(newsticker--treeview-tree-update)
(newsticker-treeview-update)
(newsticker-treeview-jump newsticker--treeview-current-feed)))
(defun newsticker--group-do-rename-group (old-name new-name)
"Actually rename group OLD-NAME to NEW-NAME."
(let ((parent-group (newsticker--group-find-parent-group old-name)))
(unless parent-group
(error "Parent of %s does not exist" old-name))
(mapcar (lambda (elt)
(cond ((and (listp elt)
(string= old-name (car elt)))
(cons new-name (cdr elt)))
(t
elt)))
parent-group)))
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(defun newsticker-group-rename-group (old-name new-name)
"Rename group OLD-NAME to NEW-NAME."
(interactive
(list (let* ((completion-ignore-case t))
(completing-read "Rename group: "
(newsticker--group-names)
nil t (car (newsticker--group-find-parent-group
newsticker--treeview-current-feed))))
(read-string "Rename to: ")))
(setq newsticker-groups (newsticker--group-do-rename-group old-name new-name))
(newsticker--group-manage-orphan-feeds)
(newsticker--treeview-tree-update)
(newsticker-treeview-update)
(newsticker-treeview-jump newsticker--treeview-current-feed))
(defun newsticker--get-group-names (lst)
"Do get the group names from LST."
(delete nil (cons (car lst)
(apply #'append
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(mapcar (lambda (e)
(cond ((listp e)
(newsticker--get-group-names e))
(t
nil)))
(cdr lst))))))
(defun newsticker--group-names ()
"Get names of all newsticker groups."
(newsticker--get-group-names newsticker-groups))
2008-06-08 15:36:18 +00:00
(defun newsticker-group-move-feed (name group-name &optional no-update)
"Move feed NAME to group GROUP-NAME.
Update treeview afterwards unless NO-UPDATE is non-nil."
2008-06-08 15:36:18 +00:00
(interactive
(let ((completion-ignore-case t))
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(list (completing-read "Name of feed or group to move: "
(append (mapcar #'car newsticker-url-list)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(newsticker--group-names))
2008-06-08 15:36:18 +00:00
nil t newsticker--treeview-current-feed)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(completing-read "Name of new parent group: " (newsticker--group-names)
2008-06-08 15:36:18 +00:00
nil t))))
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(let* ((group (if (and group-name (not (string= group-name "")))
(newsticker--group-get-group group-name)
newsticker-groups))
(moving-group-p (member name (newsticker--group-names)))
(moved-thing (if moving-group-p
(newsticker--group-get-group name)
name)))
2008-06-08 15:36:18 +00:00
(unless group
(error "Group %s does not exist" group-name))
(while (let ((old-group
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(newsticker--group-find-parent-group name)))
2008-06-08 15:36:18 +00:00
(when old-group
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(delete moved-thing old-group))
2008-06-08 15:36:18 +00:00
old-group))
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(setcdr group (cons moved-thing (cdr group)))
2008-06-08 15:36:18 +00:00
(unless no-update
(newsticker--treeview-tree-update)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(newsticker-treeview-update)
(newsticker-treeview-jump name))))
2008-06-08 15:36:18 +00:00
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(defun newsticker-group-shift-feed-down ()
"Shift current feed down in its group."
(interactive)
(newsticker--group-shift 1))
(defun newsticker-group-shift-feed-up ()
"Shift current feed down in its group."
(interactive)
(newsticker--group-shift -1))
(defun newsticker-group-shift-group-down ()
"Shift current group down in its group."
(interactive)
(newsticker--group-shift 1 t))
(defun newsticker-group-shift-group-up ()
"Shift current group down in its group."
(interactive)
(newsticker--group-shift -1 t))
(defun newsticker--group-shift (delta &optional move-group)
"Shift current feed or group within its parent group.
DELTA is an integer which specifies the direction and the amount
of the shift. If MOVE-GROUP is nil the currently selected feed
`newsticker--treeview-current-feed' is shifted, if it is t then
the current feed's parent group is shifted.."
(let* ((cur-feed newsticker--treeview-current-feed)
(thing (if move-group
(newsticker--group-find-parent-group cur-feed)
cur-feed))
(parent-group (newsticker--group-find-parent-group
(if move-group (car thing) thing))))
(unless parent-group
(error "Group not found!"))
(let* ((siblings (cdr parent-group))
(pos (cl-position thing siblings :test 'equal))
(tpos (+ pos delta ))
(new-pos (max 0 (min (length siblings) tpos)))
(beg (cl-subseq siblings 0 (min pos new-pos)))
(end (cl-subseq siblings (+ 1 (max pos new-pos))))
(p (elt siblings new-pos)))
(when (not (= pos new-pos))
(setcdr parent-group
(cl-concatenate 'list
beg
(if (> delta 0)
(list p thing)
(list thing p))
end))
(newsticker--treeview-tree-update)
(newsticker-treeview-update)
(newsticker-treeview-jump cur-feed)))))
2008-06-08 15:36:18 +00:00
(defun newsticker--count-groups (group)
"Recursively count number of subgroups of GROUP."
(let ((result 1))
(mapc (lambda (g)
(if (listp g)
(setq result (+ result (newsticker--count-groups g)))))
(cdr group))
result))
(defun newsticker--count-grouped-feeds (group)
"Recursively count number of feeds in GROUP and its subgroups."
(let ((result 0))
(mapc (lambda (g)
(if (listp g)
(setq result (+ result (newsticker--count-grouped-feeds g)))
(setq result (1+ result))))
(cdr group))
result))
(defun newsticker--group-remove-obsolete-feeds (group)
2011-11-19 18:29:42 -08:00
"Recursively remove obsolete feeds from GROUP."
2008-06-08 15:36:18 +00:00
(let ((result nil)
(urls (append newsticker-url-list newsticker-url-list-defaults)))
(mapc (lambda (g)
(if (listp g)
(let ((sub-groups
(newsticker--group-remove-obsolete-feeds g)))
(if sub-groups
(setq result (cons sub-groups result))))
(if (assoc g urls)
(setq result (cons g result)))))
(cdr group))
(if result
(cons (car group) (reverse result))
result)))
(defun newsticker--group-manage-orphan-feeds ()
"Put unmanaged feeds into `newsticker-groups'.
Remove obsolete feeds as well.
Return t if groups have changed, nil otherwise."
(unless newsticker-groups
(setq newsticker-groups '("Feeds")))
2008-06-08 15:36:18 +00:00
(let ((new-feed nil)
(grouped-feeds (newsticker--count-grouped-feeds newsticker-groups)))
(mapc (lambda (f)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(unless (newsticker--group-find-parent-group (car f))
2008-06-08 15:36:18 +00:00
(setq new-feed t)
(newsticker-group-move-feed (car f) nil t)))
(append newsticker-url-list-defaults newsticker-url-list))
(setq newsticker-groups
(newsticker--group-remove-obsolete-feeds newsticker-groups))
(or new-feed
(not (= grouped-feeds
(newsticker--count-grouped-feeds newsticker-groups))))))
2008-06-08 15:36:18 +00:00
;; ======================================================================
;;; Modes
;; ======================================================================
(defun newsticker--treeview-tree-open-menu (event)
"Open tree menu at position of EVENT."
(let* ((feed-name newsticker--treeview-current-feed)
(menu (make-sparse-keymap feed-name)))
2008-06-08 15:36:18 +00:00
(define-key menu [newsticker-treeview-mark-list-items-old]
(list 'menu-item "Mark all items old"
'newsticker-treeview-mark-list-items-old))
(define-key menu [newsticker-treeview-get-news]
(list 'menu-item (concat "Get news for " feed-name)
'newsticker-treeview-get-news))
(define-key menu [newsticker-get-all-news]
(list 'menu-item "Get news for all feeds"
'newsticker-get-all-news))
(let ((choice (x-popup-menu event menu)))
(when choice
(funcall (car choice))))))
2008-06-08 15:36:18 +00:00
(defvar newsticker-treeview-list-menu
(let ((menu (make-sparse-keymap "Newsticker List")))
(define-key menu [newsticker-treeview-mark-list-items-old]
(list 'menu-item "Mark all items old"
'newsticker-treeview-mark-list-items-old))
2009-12-04 19:27:42 +00:00
(define-key menu [newsticker-treeview-mark-item-old]
(list 'menu-item "Mark current item old"
'newsticker-treeview-mark-item-old))
(define-key menu [newsticker-treeview-toggle-item-immortal]
(list 'menu-item "Mark current item immortal (toggle)"
'newsticker-treeview-toggle-item-immortal))
(define-key menu [newsticker-treeview-get-news]
(list 'menu-item "Get news for current feed"
'newsticker-treeview-get-news))
2008-06-08 15:36:18 +00:00
menu)
2009-12-04 19:27:42 +00:00
"Map for newsticker list menu.")
(defvar newsticker-treeview-item-menu
(let ((menu (make-sparse-keymap "Newsticker Item")))
(define-key menu [newsticker-treeview-mark-item-old]
(list 'menu-item "Mark current item old"
'newsticker-treeview-mark-item-old))
(define-key menu [newsticker-treeview-toggle-item-immortal]
(list 'menu-item "Mark current item immortal (toggle)"
'newsticker-treeview-toggle-item-immortal))
(define-key menu [newsticker-treeview-get-news]
(list 'menu-item "Get news for current feed"
'newsticker-treeview-get-news))
menu)
"Map for newsticker item menu.")
2008-06-08 15:36:18 +00:00
(defvar newsticker-treeview-mode-map
(let ((map (make-sparse-keymap 'newsticker-treeview-mode-map)))
(define-key map " " 'newsticker-treeview-next-page)
(define-key map "a" 'newsticker-add-url)
(define-key map "b" 'newsticker-treeview-browse-url-item)
2008-06-08 15:36:18 +00:00
(define-key map "F" 'newsticker-treeview-prev-feed)
(define-key map "f" 'newsticker-treeview-next-feed)
(define-key map "g" 'newsticker-treeview-get-news)
(define-key map "G" 'newsticker-get-all-news)
(define-key map "i" 'newsticker-treeview-toggle-item-immortal)
(define-key map "j" 'newsticker-treeview-jump)
(define-key map "n" 'newsticker-treeview-next-item)
(define-key map "N" 'newsticker-treeview-next-new-or-immortal-item)
(define-key map "O" 'newsticker-treeview-mark-list-items-old)
(define-key map "o" 'newsticker-treeview-mark-item-old)
(define-key map "p" 'newsticker-treeview-prev-item)
(define-key map "P" 'newsticker-treeview-prev-new-or-immortal-item)
(define-key map "q" 'newsticker-treeview-quit)
(define-key map "S" 'newsticker-treeview-save-item)
(define-key map "s" 'newsticker-treeview-save)
(define-key map "u" 'newsticker-treeview-update)
(define-key map "v" 'newsticker-treeview-browse-url)
;;(define-key map "\n" 'newsticker-treeview-scroll-item)
;;(define-key map "\C-m" 'newsticker-treeview-scroll-item)
(define-key map "\M-m" 'newsticker-group-move-feed)
(define-key map "\M-a" 'newsticker-group-add-group)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(define-key map "\M-d" 'newsticker-group-delete-group)
(define-key map "\M-r" 'newsticker-group-rename-group)
(define-key map [M-down] 'newsticker-group-shift-feed-down)
(define-key map [M-up] 'newsticker-group-shift-feed-up)
(define-key map [M-S-down] 'newsticker-group-shift-group-down)
(define-key map [M-S-up] 'newsticker-group-shift-group-up)
2008-06-08 15:36:18 +00:00
map)
"Mode map for newsticker treeview.")
Use define-derived-mode (and derived-mode-p). * lisp/play/snake.el (snake-mode): * lisp/play/mpuz.el (mpuz-mode): * lisp/play/landmark.el (lm-mode): * lisp/play/blackbox.el (blackbox-mode): * lisp/play/5x5.el (5x5-mode): * lisp/obsolete/options.el (Edit-options-mode): * lisp/net/quickurl.el (quickurl-list-mode): * lisp/net/newst-treeview.el (newsticker-treeview-mode): * lisp/mail/rmailsum.el (rmail-summary-mode): * lisp/mail/mspools.el (mspools-mode): * lisp/locate.el (locate-mode): * lisp/ibuffer.el (ibuffer-mode): * lisp/emulation/ws-mode.el (wordstar-mode): * lisp/emacs-lisp/debug.el (debugger-mode): * lisp/array.el (array-mode): * lisp/net/eudc.el (eudc-mode): Use define-derived-mode. * lisp/net/mairix.el (mairix-searches-mode-font-lock-keywords): Move initialization into declaration. (mairix-searches-mode): Use define-derived-mode. * lisp/net/eudc-hotlist.el (eudc-hotlist-mode): Use define-derived-mode. (eudc-edit-hotlist): Use dolist. * lisp/man.el (Man-mode-syntax-table): Rename from man-mode-syntax-table. (Man-mode): Use define-derived-mode. * lisp/info.el (Info-edit-mode-map): Rename from Info-edit-map. (Info-edit-mode): Use define-derived-mode. (Info-cease-edit): Use Info-mode. * lisp/eshell/esh-mode.el (eshell-mode-syntax-table): Move initialization into declaration. (eshell-mode): Use define-derived-mode. * lisp/chistory.el (command-history-mode-map): Rename from command-history-map. (command-history-mode): Use define-derived-mode. * lisp/calc/calc.el (calc-trail-mode-map): New var. (calc-trail-mode): Use define-derived-mode. (calc-trail-buffer): Set calc-main-buffer manually. * lisp/bookmark.el (bookmark-insert-annotation): New function. (bookmark-edit-annotation): Use it. (bookmark-edit-annotation-mode): Make it a proper major mode. (bookmark-send-edited-annotation): Use derived-mode-p. * lisp/arc-mode.el (archive-mode): Move kill-all-local-variables a tiny bit closer to its ideal place. Use \' to match EOS. * lisp/cedet/semantic/grammar.el (semantic-grammar-mode): Use define-derived-mode. (semantic-grammar-mode-syntax-table): Rename from semantic-grammar-syntax-table. (semantic-grammar-mode-map): Rename from semantic-grammar-map. * lisp/cedet/data-debug.el (data-debug-mode-map): Rename from data-debug-map. (data-debug-mode): Use define-derived-mode. * lisp/gnus/score-mode.el (gnus-score-mode-map): Move initialization into declaration. (gnus-score-mode): Use define-derived-mode. * lisp/gnus/gnus-srvr.el (gnus-browse-mode): Use define-derived-mode. * lisp/gnus/gnus-kill.el (gnus-kill-file-mode-map): Move initialization into declaration. (gnus-kill-file-mode): Use define-derived-mode. (gnus-kill-file-edit-file, gnus-kill-file-enter-kill, gnus-kill): Use derived-mode-p. * lisp/gnus/gnus-group.el (gnus-group-mode): Use define-derived-mode. (gnus-group-setup-buffer, gnus-group-name-at-point) (gnus-group-make-web-group, gnus-group-enter-directory) (gnus-group-suspend): Use derived-mode-p. * lisp/gnus/gnus-cus.el (gnus-custom-mode): Use define-derived-mode. * lisp/gnus/gnus-bookmark.el (gnus-bookmark-bmenu-mode): Use define-derived-mode. * lisp/gnus/gnus-art.el (gnus-article-mode): Use define-derived-mode. (gnus-article-setup-buffer, gnus-article-prepare) (gnus-article-prepare-display, gnus-sticky-article) (gnus-kill-sticky-article-buffer, gnus-kill-sticky-article-buffers) (gnus-bind-safe-url-regexp, gnus-article-check-buffer) (gnus-article-read-summary-keys): Use derived-mode-p.
2013-09-10 23:31:56 -04:00
(define-derived-mode newsticker-treeview-mode fundamental-mode "Newsticker TV"
2008-06-08 15:36:18 +00:00
"Major mode for Newsticker Treeview.
\\{newsticker-treeview-mode-map}"
(if (boundp 'tool-bar-map)
(set (make-local-variable 'tool-bar-map)
newsticker-treeview-tool-bar-map))
2008-06-08 15:36:18 +00:00
(setq buffer-read-only t
truncate-lines t))
(define-derived-mode newsticker-treeview-list-mode newsticker-treeview-mode
"Item List"
(let ((header (concat
(propertize " " 'display '(space :align-to 0))
(newsticker-treeview-list-make-sort-button "*" 'sort-by-age)
(propertize " " 'display '(space :align-to 2))
(if newsticker--treeview-list-show-feed
(concat "Feed"
(propertize " " 'display '(space :align-to 12)))
"")
(newsticker-treeview-list-make-sort-button "Date"
'sort-by-time)
(if newsticker--treeview-list-show-feed
(propertize " " 'display '(space :align-to 28))
(propertize " " 'display '(space :align-to 18)))
(newsticker-treeview-list-make-sort-button "Title"
'sort-by-title))))
(setq header-line-format header))
(define-key newsticker-treeview-list-mode-map [down-mouse-3]
newsticker-treeview-list-menu))
2009-12-04 19:27:42 +00:00
(define-derived-mode newsticker-treeview-item-mode newsticker-treeview-mode
"Item"
(define-key newsticker-treeview-item-mode-map [down-mouse-3]
newsticker-treeview-item-menu))
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview-tree-click (event)
"Handle click EVENT on a tag in the newsticker tree."
(interactive "e")
(newsticker--treeview-restore-layout)
2008-06-08 15:36:18 +00:00
(save-excursion
(switch-to-buffer (window-buffer (posn-window (event-end event))))
(newsticker-treeview-tree-do-click (posn-point (event-end event)) event)))
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview-tree-do-click (&optional pos event)
"Actually handle click event.
POS gives the position where EVENT occurred."
(interactive)
2008-11-24 19:40:35 +00:00
(let* ((pos (or pos (point)))
(nt-id (get-text-property pos :nt-id))
(item (get-text-property pos :nt-item)))
2008-06-08 15:36:18 +00:00
(cond (item
;; click in list buffer
(newsticker-treeview-show-item))
(t
;; click in tree buffer
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(let ((w (newsticker--treeview-get-node-by-id nt-id)))
2008-06-08 15:36:18 +00:00
(when w
(newsticker--treeview-tree-update-tag w t t)
Newsticker: Add commands to rearrange treeview groups and document them. (Bug#12560) 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * newsticker.texi: Reworked. Document new treeview group commands. Remove VERSION, UPDATED, use EMACSVER instead. Use term 'feed reader'. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * automated/newsticker-tests.el (newsticker--group-find-parent-group), (newsticker--group-do-rename-group): New tests. 2014-09-24 Ulf Jasper <ulf.jasper@web.de> * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id): Renamed `newsticker--treeview-do-get-node' to `newsticker--treeview-do-get-node-by-id'. (newsticker--treeview-get-node-by-id): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-get-current-node): Renamed ` `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. (newsticker--treeview-buffer-init) (newsticker--treeview-buffer-init): Disable buffer undo. (newsticker--treeview-unfold-node): Adapted to modified `newsticker--group-find-parent-group'. (newsticker--group-do-find-group): Renamed `newsticker--group-do-find-group-for-feed' to `newsticker--group-do-find-group'. Now works for both, groups and feeds. (newsticker--group-find-parent-group): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. Now works for both, groups and feeds. (newsticker--group-do-get-parent-group) (newsticker--group-get-parent-group): Removed. (newsticker-group-add-group): Changed interactive prompts. (newsticker-group-add-group): Finally jump to added group. (newsticker-group-delete-group): Finally jump to current feed. (newsticker--group-do-rename-group, newsticker-group-rename-group) (newsticker--get-group-names, newsticker--group-names): New. (newsticker-group-move-feed): Finally jump to moved feed. (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up) (newsticker-group-shift-group-down) (newsticker-group-shift-group-up, newsticker--group-shift): New (newsticker--group-manage-orphan-feeds): Renamed `newsticker--group-find-group-for-feed' to `newsticker--group-find-parent-group'. (newsticker-treeview-mode-map): New keybindings for new shift commands. (newsticker-treeview-tree-do-click): Renamed `newsticker--treeview-get-node' to `newsticker--treeview-get-node-by-id'. * net/newst-backend.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved to newst-ticker.el. * net/newst-ticker.el (newsticker--item-list) (newsticker--item-position, newsticker--prev-message) (newsticker--scrollable-text): Moved from newst-backend.el.
2014-09-24 19:33:54 +02:00
(setq w (newsticker--treeview-get-node-by-id nt-id))
2008-06-08 15:36:18 +00:00
(widget-put w :nt-selected t)
(widget-apply w :action event)
(newsticker--treeview-set-current-node w)
(and event
(eq 'mouse-3 (car event))
(sit-for 0)
(newsticker--treeview-tree-open-menu event)))))))
2008-06-08 15:36:18 +00:00
(newsticker--treeview-tree-update-highlight))
(defun newsticker--treeview-restore-layout ()
2008-06-08 15:36:18 +00:00
"Restore treeview buffers."
(catch 'error
(dotimes (i 3)
(let ((win (nth i newsticker--treeview-windows))
(buf (nth i newsticker--treeview-buffers)))
(unless (window-live-p win)
(newsticker--treeview-window-init)
(newsticker--treeview-buffer-init)
(throw 'error t))
(unless (eq (window-buffer win) buf)
(set-window-buffer win buf t))))))
(defun newsticker--treeview-frame-init ()
"Initialize treeview frame."
(when newsticker-treeview-own-frame
(unless (and newsticker--frame (frame-live-p newsticker--frame))
(setq newsticker--frame (make-frame '((name . "Newsticker")))))
(select-frame-set-input-focus newsticker--frame)
(raise-frame newsticker--frame)))
(defun newsticker--treeview-window-init ()
"Initialize treeview windows."
(setq newsticker--saved-window-config (current-window-configuration))
(setq newsticker--treeview-windows nil)
(setq newsticker--treeview-buffers nil)
(delete-other-windows)
(split-window-right newsticker-treeview-treewindow-width)
2008-06-08 15:36:18 +00:00
(add-to-list 'newsticker--treeview-windows (selected-window) t)
(other-window 1)
(split-window-below newsticker-treeview-listwindow-height)
2008-06-08 15:36:18 +00:00
(add-to-list 'newsticker--treeview-windows (selected-window) t)
(other-window 1)
(add-to-list 'newsticker--treeview-windows (selected-window) t)
(other-window 1))
2008-06-08 18:44:20 +00:00
;;;###autoload
2008-06-08 15:36:18 +00:00
(defun newsticker-treeview ()
"Start newsticker treeview."
(interactive)
(newsticker--treeview-load)
(setq newsticker--sentinel-callback 'newsticker-treeview-update)
(newsticker--treeview-frame-init)
(newsticker--treeview-window-init)
(newsticker--treeview-buffer-init)
(if (newsticker--group-manage-orphan-feeds)
(newsticker--treeview-tree-update))
2008-06-08 15:36:18 +00:00
(newsticker--treeview-set-current-node newsticker--treeview-feed-tree)
(newsticker-start t) ;; will start only if not running
(newsticker-treeview-update)
(newsticker--treeview-item-show-text
"Newsticker"
"Welcome to newsticker!"))
(defun newsticker-treeview-get-news ()
"Get news for current feed."
(interactive)
(when newsticker--treeview-current-feed
(newsticker-get-news newsticker--treeview-current-feed)))
2008-06-10 03:15:43 +00:00
2009-12-06 19:49:04 +00:00
(provide 'newst-treeview)
2008-06-08 15:36:18 +00:00
2008-06-13 17:08:25 +00:00
;;; newst-treeview.el ends here