Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

*** empty log message ***

  • Loading branch information...
commit b7c6ae5d1f771b9c4432782015dda00282947fa2 1 parent c78dea9
@larsmagne larsmagne authored
View
61 lisp/ChangeLog
@@ -1,5 +1,66 @@
+Fri Aug 25 02:57:19 1995 Lars Magne Ingebrigtsen <lingebri@sunscipw.cern.ch>
+
+ * nndir.el (nndir-status-message): Wrong number of arguments.
+
+ * gnus.el (gnus-summary-next-article): Woundn't go to the next
+ group.
+ (gnus-group-recent-archive-directory): New variable.
+ (gnus-group-make-archive-group): Now makes both the recent and the
+ full groups.
+
+ * gnus-vis.el (gnus-easymenu): Require gnus-ems first.
+
+Fri Aug 25 01:13:52 1995 Lars Magne Ingebrigtsen <lingebri@sunsci4.cern.ch>
+
+ * gnus-vis.el (gnus-highlight-selected-summary): Would underline
+ wrong part of line without mouse-face.
+
+ * gnus.el (gnus-summary-refer-article): Would mess up window
+ config when not useing full windows.
+
+Fri Aug 25 00:22:14 1995 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * gnus-vis.el (gnus-group-make-menu-bar): Disable
+ `gnus-score-customize' in XEmacs.
+
+ * gnus-cus.el: Removed variables declared in `gnus-cus.el'.
+ * gnus.el: Ditto.
+ * gnus-cite.el: Ditto.
+
+Fri Aug 25 00:06:35 1995 Lars Magne Ingebrigtsen <lingebri@sunsci4.cern.ch>
+
+ * custom.el: New version.
+
+ * gnus.el (gnus-summary-fetch-faq): Would bug out.
+
+Thu Aug 24 23:54:13 1995 Lars Magne Ingebrigtsen <lingebri@sunsci4.cern.ch>
+
+ * gnus.el (gnus-apply-kill-hook): Doc fix.
+
+Thu Aug 24 16:25:17 1995 Ulrik Dickow <dickow@nbi.dk>
+
+ * gnus-msg.el (gnus-post-news): Respect Reply-To when handling
+ `gnus-auto-mail-to-author'.
+
+Thu Aug 24 01:41:33 1995 Lars Magne Ingebrigtsen <lingebri@sunsci4.cern.ch>
+
+ * gnus.el (gnus-summary-end-of-article): Recenter at -3.
+
+ * gnus-vis.el (gnus-summary-make-menu-bar): Commented out score
+ thingies.
+
+ * gnus.el (gnus-summary-best-unread-article): Would not find the
+ best unread.
+ (gnus-article-display-x-face): Did not work if x-face-too-ugly was
+ nil.
+
+ * gnus-vis.el (gnus-article-highlight-headers): Would infloop with
+ 19.28.
+
Thu Aug 24 01:41:33 1995 Lars Magne Ingebrigtsen <lingebri@sunsci4.cern.ch>
+ * gnus.el: 0.99.19 is released.
+
* gnus.el (gnus-group-faq-directory): Changed the default to point
to aol.
(gnus-newsrc-to-gnus-format): Would bug out when there were bogus
View
224 lisp/custom.el
@@ -3,7 +3,7 @@
;;
;; Author: Per Abrahamsen <abraham@iesd.auc.dk>
;; Keywords: help
-;; Version: 0.4
+;; Version: 0.5
;;; Commentary:
;;
@@ -41,6 +41,7 @@
;; - Implement remaining types.
;; - XEmacs port.
;; - Allow `URL', `info', and internal hypertext buttons.
+;; - Support meta-variables and goal directed customization.
;;; Code:
@@ -123,16 +124,43 @@ STRING should be given if the last search was by `string-match' on STRING."
(and (symbolp x) (assq x global-face-data)))
t)))
+(if (facep 'underline)
+ ()
+ ;; No underline face in XEmacs 19.12.
+ (funcall (intern "make-face") 'underline)
+ ;; Must avoid calling set-face-underline-p directly, because it
+ ;; is a defsubst in emacs19, and will make the .elc files non
+ ;; portable!
+ (or (face-differs-from-default-p 'underline)
+ (funcall 'set-face-underline-p 'underline t)))
+
+(or (fboundp 'set-text-properties)
+ ;; Missing in XEmacs 19.12.
+ (defun set-text-properties (start end props &optional buffer)
+ (if (or (null buffer) (bufferp buffer))
+ (if props
+ (while props
+ (put-text-property
+ start end (car props) (nth 1 props) buffer)
+ (setq props (nthcdr 2 props)))
+ (remove-text-properties start end ())))))
+
+(or (fboundp 'event-closest-point)
+ ;; Missing in Emacs 19.29.
+ (defun event-point (event)
+ "Return the character position of the given mouse-motion, button-press,
+or button-release event. If the event did not occur over a window, or did
+not occur over text, then this returns nil. Otherwise, it returns an index
+into the buffer visible in the event's window."
+ (posn-point (event-start event))))
+
(eval-when-compile
(defvar x-colors nil)
(defvar custom-button-face nil)
- (defvar custom-modified-list nil)
(defvar custom-field-uninitialized-face nil)
(defvar custom-field-invalid-face nil)
(defvar custom-field-modified-face nil)
(defvar custom-field-face nil)
- (defvar custom-button-properties nil)
- (defvar custom-documentation-properties nil)
(defvar custom-mouse-face nil)
(defvar custom-field-active-face nil))
@@ -190,17 +218,29 @@ If called interactively, prompts for a face and face attributes."
(set-face-underline-p face underline-p)
(and (interactive-p) (redraw-display))))
-
;; We can't easily check for a working intangible.
-(defvar intangible nil
+(defconst intangible (if (and (boundp 'emacs-minor-version)
+ (or (> emacs-major-version 19)
+ (and (> emacs-major-version 18)
+ (> emacs-minor-version 28))))
+ (setq intangible 'intangible)
+ (setq intangible 'intangible-if-it-had-been-working))
"The symbol making text intangible")
-(if (and (boundp 'emacs-minor-version)
- (or (> emacs-major-version 19)
- (and (> emacs-major-version 18)
- (> emacs-minor-version 28))))
- (setq intangible 'intangible)
- (setq intangible 'intangible-if-it-had-been-working))
+(defconst rear-nonsticky (if (string-match "XEmacs" emacs-version)
+ 'end-open
+ 'rear-nonsticky)
+ "The symbol making text proeprties non-sticky in the rear end.")
+
+(defconst front-sticky (if (string-match "XEmacs" emacs-version)
+ 'front-closed
+ 'front-sticky)
+ "The symbol making text properties sticky in the front.")
+
+(defconst mouse-face (if (string-match "XEmacs" emacs-version)
+ 'highlight
+ 'mouse-face)
+ "Symbol used for highlighting text under mouse.")
;; Put it in the Help menu, if possible.
(condition-case nil
@@ -209,6 +249,48 @@ If called interactively, prompts for a face and face attributes."
'("Customize..." . customize))
(error nil))
+;;; Categories:
+;;
+;; XEmacs use inheritable extents for the same purpose as Emacs uses
+;; the category text property.
+
+(if (string-match "XEmacs" emacs-version)
+ (progn
+ ;; XEmacs categories.
+ (defun custom-category-create (name)
+ (set name (make-extent nil nil))
+ "Create a text property category named NAME.")
+
+ (defun custom-category-put (name property value)
+ "In CATEGORY set PROPERTY to VALUE."
+ (set-extent-property (symbol-value name) property value))
+
+ (defun custom-category-get (name property)
+ "In CATEGORY get PROPERTY."
+ (extent-property (symbol-value name) property))
+
+ (defun custom-category-set (from to category)
+ "Make text between FROM and TWO have category CATEGORY."
+ (let ((extent (make-extent from to)))
+ (set-extent-parent extent (symbol-value category)))))
+
+ ;; Emacs categories.
+ (defun custom-category-create (name)
+ "Create a text property category named NAME."
+ (set name name))
+
+ (defun custom-category-put (name property value)
+ "In CATEGORY set PROPERTY to VALUE."
+ (put name property value))
+
+ (defun custom-category-get (name property)
+ "In CATEGORY get PROPERTY."
+ (get name property))
+
+ (defun custom-category-set (from to category)
+ "Make text between FROM and TWO have category CATEGORY."
+ (put-text-property from to 'category category)))
+
;;; External Data:
;;
;; The following functions and variables defines the interface for
@@ -252,6 +334,9 @@ If called interactively, prompts for a face and face attributes."
(funcall (custom-property custom 'export) custom
(car (custom-field-extract custom field)))))
+(defvar custom-save 'custom-save
+ "Function that will save current customization buffer.")
+
;;; Custom Functions:
;;
;; The following functions are part of the public interface to the
@@ -705,6 +790,14 @@ position of the error, and the cdr is a text describing the error."
;;
;; Each FIELD can be seen as an instanciation of a CUSTOM.
+(defvar custom-field-last nil)
+;; Last field containing point.
+(make-variable-buffer-local 'custom-field-last)
+
+(defvar custom-modified-list nil)
+;; List of modified fields.
+(make-variable-buffer-local 'custom-modified-list)
+
(defun custom-field-create (custom value)
"Create a field structure of type CUSTOM containing VALUE.
@@ -840,7 +933,6 @@ If optional ORIGINAL is non-nil, concider VALUE for the original value."
"Insert field for CUSTOM at nesting LEVEL in customization buffer."
(let* ((field (custom-field-create custom nil))
(add-tag (custom-property custom 'add-tag))
- (del-tag (custom-property custom 'del-tag))
(start (make-marker))
(data (vector field nil start nil)))
(custom-text-insert "\n")
@@ -1137,8 +1229,7 @@ If optional ORIGINAL is non-nil, concider VALUE for the original value."
(defun custom-choice-insert (custom level)
"Insert field for CUSTOM at nesting LEVEL in customization buffer."
(let* ((field (custom-field-create custom nil))
- (from (point))
- (tag (custom-tag custom)))
+ (from (point)))
(custom-text-insert "lars er en nisse")
(custom-field-move field from (point))
(custom-documentation-insert custom)
@@ -1167,9 +1258,7 @@ If optional ORIGINAL is non-nil, concider VALUE for the original value."
(setq from (point))
(insert-before-markers " ")
(backward-char 1)
- (set-text-properties (point) (1+ (point))
- (list 'invisible t
- intangible t))
+ (custom-category-set (point) (1+ (point)) 'custom-hidden-properties)
(custom-tag-insert (custom-tag custom) field)
(custom-text-insert ": ")
(let ((data (custom-data custom))
@@ -1184,7 +1273,7 @@ If optional ORIGINAL is non-nil, concider VALUE for the original value."
(setq begin (point)
found (custom-insert (custom-property custom 'none) nil))
(add-text-properties begin (point)
- (list 'rear-nonsticky t
+ (list rear-nonsticky t
'face custom-field-uninitialized-face)))
(or original
(custom-field-original-set found (custom-field-original field)))
@@ -1294,7 +1383,8 @@ FG BG STIPPLE BOLD ITALIC UNDERLINE"
(defun custom-face-hack (field value)
"Face that should be used for highlighting FIELD containing VALUE."
- (eval (funcall (custom-property (custom-field-custom field) 'export) custom value)))
+ (let ((custom (custom-field-custom field)))
+ (eval (funcall (custom-property custom 'export) custom value))))
(defun custom-const-insert (custom level)
"Insert field for CUSTOM at nesting LEVEL in customization buffer."
@@ -1304,7 +1394,7 @@ FG BG STIPPLE BOLD ITALIC UNDERLINE"
(custom-text-insert (custom-tag custom))
(add-text-properties from (point)
(list 'face face
- 'rear-nonsticky t))
+ rear-nonsticky t))
(custom-documentation-insert custom)
(custom-field-move field from (point))
field))
@@ -1600,9 +1690,8 @@ If the optional argument SAVE is non-nil, use that for saving changes."
"Insert TAG for FIELD in current buffer."
(let ((from (point)))
(insert tag)
- (set-text-properties from (point)
- (list 'category custom-button-properties
- 'custom-tag field))
+ (custom-category-set from (point) 'custom-button-properties)
+ (put-text-property from (point) 'custom-tag field)
(if data
(add-text-properties from (point) (list 'custom-data data)))))
@@ -1617,18 +1706,17 @@ If the optional argument SAVE is non-nil, use that for saving changes."
"Insert ARGS as documentation text."
(let ((from (point)))
(apply 'insert args)
- (set-text-properties from (point)
- (list 'category custom-documentation-properties))))
+ (custom-category-set from (point) 'custom-documentation-properties)))
(defun custom-help-button (command)
"Describe how to execute COMMAND."
(let ((from (point)))
(insert "`" (key-description (where-is-internal command nil t)) "'")
(set-text-properties from (point)
- (list 'category custom-documentation-properties
- 'face custom-button-face
- 'mouse-face custom-mouse-face
- 'custom-tag command)))
+ (list 'face custom-button-face
+ mouse-face custom-mouse-face
+ 'custom-tag command))
+ (custom-category-set from (point) 'custom-documentation-properties))
(custom-help-insert ": " (custom-first-line (documentation command)) "\n"))
;;; Mode:
@@ -1717,10 +1805,11 @@ With optional ARG, move across that many fields."
If the optional argument is non-nil, show text iff the argument is positive."
(interactive "P")
(let ((hide (or (and (null arg)
- (null (get custom-documentation-properties 'invisible)))
+ (null (custom-category-get
+ 'custom-documentation-properties 'invisible)))
(<= (prefix-numeric-value arg) 0))))
- (put custom-documentation-properties 'invisible hide)
- (put custom-documentation-properties intangible hide))
+ (custom-category-put 'custom-documentation-properties 'invisible hide)
+ (custom-category-put 'custom-documentation-properties intangible hide))
(redraw-display))
(defun custom-enter-value (field data)
@@ -1750,9 +1839,8 @@ If the optional argument is non-nil, show text iff the argument is positive."
(defun custom-push-button (event)
"Activate button below mouse pointer."
- (interactive "e")
- (set-buffer (window-buffer (posn-window (event-start event))))
- (let* ((pos (posn-point (event-start event)))
+ (interactive "@e")
+ (let* ((pos (event-point event))
(field (get-text-property pos 'custom-field))
(tag (get-text-property pos 'custom-tag))
(data (get-text-property pos 'custom-data)))
@@ -1773,10 +1861,9 @@ If the optional argument is non-nil, show text iff the argument is positive."
(not (y-or-n-p "Discard all changes? "))
(error "Reset aborted")))
(let ((all custom-name-fields)
- current name field)
+ current field)
(while all
(setq current (car all)
- name (car current)
field (cdr current)
all (cdr all))
(custom-field-reset field))))
@@ -1825,7 +1912,7 @@ If the optional argument is non-nil, show text iff the argument is positive."
(error "No changes to apply.")))
(custom-field-parse custom-field-last)
(let ((all custom-name-fields)
- name field)
+ field)
(while all
(setq field (cdr (car all))
all (cdr all))
@@ -1835,7 +1922,7 @@ If the optional argument is non-nil, show text iff the argument is positive."
(goto-char (car error))
(error (cdr error))))))
(let ((all custom-name-fields)
- current name field)
+ field)
(while all
(setq field (cdr (car all))
all (cdr all))
@@ -1858,9 +1945,6 @@ If the optional argument is non-nil, show text iff the argument is positive."
(interactive)
(error "This button is not yet implemented"))
-(defvar custom-save 'custom-save
- "Function that will save current customization buffer.")
-
(defun custom-save-and-exit ()
"Save and exit customization buffer."
(interactive "@")
@@ -1930,10 +2014,6 @@ If the optional argument is non-nil, show text iff the argument is positive."
;; Various internal functions for implementing the direct editing of
;; fields in the customization buffer.
-(defvar custom-modified-list nil)
-;; List of modified fields.
-(make-variable-buffer-local 'custom-modified-list)
-
(defun custom-field-untouch (field)
;; Remove FIELD and its children from `custom-modified-list'.
(setq custom-modified-list (delq field custom-modified-list))
@@ -1959,8 +2039,9 @@ If the optional argument is non-nil, show text iff the argument is positive."
from (point)
(list 'custom-field field
'custom-tag field
- 'face (custom-field-face field)
- 'front-sticky t))))
+ 'face (let ((face (custom-field-face field)))
+ (if (facep face) face nil))
+ front-sticky t))))
(defun custom-field-read (field)
;; Read the screen content of FIELD.
@@ -2003,8 +2084,11 @@ If the optional argument is non-nil, show text iff the argument is positive."
(size (- end begin)))
(cond ((< size width)
(goto-char end)
- (insert-before-markers-and-inherit
- (make-string (- width size) padding))
+ (condition-case nil
+ (insert-before-markers-and-inherit
+ (make-string (- width size) padding))
+ (error (insert-before-markers
+ (make-string (- width size) padding))))
(goto-char pos))
((> size width)
(let ((start (if (and (< (+ begin width) pos) (<= pos end))
@@ -2027,10 +2111,6 @@ If the optional argument is non-nil, show text iff the argument is positive."
(custom-field-value-set field (custom-field-read field))
(custom-field-update field))))
-(defvar custom-field-last nil)
-;; Last field containing point.
-(make-variable-buffer-local 'custom-field-last)
-
(defun custom-post-command ()
;; Keep track of their active field.
(custom-assert '(eq major-mode 'custom-mode))
@@ -2172,8 +2252,8 @@ If the optional argument is non-nil, show text iff the argument is positive."
(doc . "Face used for tags in customization buffers.")
(name . custom-button-face)
(synchronize . (lambda (f)
- (put custom-button-properties
- 'face custom-button-face)))
+ (custom-category-put 'custom-button-properties
+ 'face custom-button-face)))
(type . face))
((tag . "Mouse Face")
(default . highlight)
@@ -2181,8 +2261,9 @@ If the optional argument is non-nil, show text iff the argument is positive."
Face used when mouse is above a button in customization buffers.")
(name . custom-mouse-face)
(synchronize . (lambda (f)
- (put custom-button-properties
- 'mouse-face custom-mouse-face)))
+ (custom-category-put 'custom-button-properties
+ mouse-face
+ custom-mouse-face)))
(type . face))
((tag . "Field Face")
(default . italic)
@@ -2212,18 +2293,23 @@ Face used for customization fields while they are being edited.")
(name . custom-field-active-face)
(type . face)))))
-(if (file-readable-p custom-file)
- (load-file custom-file))
+;; custom.el uses two categories.
+
+(custom-category-create 'custom-documentation-properties)
+(custom-category-put 'custom-documentation-properties rear-nonsticky t)
+
+(custom-category-create 'custom-button-properties)
+(custom-category-put 'custom-button-properties 'face custom-button-face)
+(custom-category-put 'custom-button-properties mouse-face custom-mouse-face)
+(custom-category-put 'custom-button-properties rear-nonsticky t)
-(defvar custom-documentation-properties 'custom-documentation-properties
- "The properties of this symbol will be in effect for all documentation.")
-(put custom-documentation-properties 'rear-nonsticky t)
+(custom-category-create 'custom-hidden-properties)
+(custom-category-put 'custom-hidden-properties 'invisible
+ (not (string-match "XEmacs" emacs-version)))
+(custom-category-put 'custom-hidden-properties intangible t)
-(defvar custom-button-properties 'custom-button-properties
- "The properties of this symbol will be in effect for all buttons.")
-(put custom-button-properties 'face custom-button-face)
-(put custom-button-properties 'mouse-face custom-mouse-face)
-(put custom-button-properties 'rear-nonsticky t)
+(if (file-readable-p custom-file)
+ (load-file custom-file))
(provide 'custom)
View
71 lisp/gnus-cite.el
@@ -54,19 +54,20 @@ The first regexp group should match the SuperCite attribution.")
(defvar gnus-cite-minimum-match-count 2
"Minimal number of identical prefix'es before we believe it is a citation.")
-(defvar gnus-cite-face-list
- (if (eq gnus-display-type 'color)
- (if (eq gnus-background-mode 'dark) 'light 'dark)
- '(italic))
- "Faces used for displaying different citations.
-It is either a list of face names, or one of the following special
-values:
+;see gnus-cus.el
+;(defvar gnus-cite-face-list
+; (if (eq gnus-display-type 'color)
+; (if (eq gnus-background-mode 'dark) 'light 'dark)
+; '(italic))
+; "Faces used for displaying different citations.
+;It is either a list of face names, or one of the following special
+;values:
-dark: Create faces from `gnus-face-dark-name-list'.
-light: Create faces from `gnus-face-light-name-list'.
+;dark: Create faces from `gnus-face-dark-name-list'.
+;light: Create faces from `gnus-face-light-name-list'.
-The variable `gnus-make-foreground' determines whether the created
-faces change the foreground or the background colors.")
+;The variable `gnus-make-foreground' determines whether the created
+;faces change the foreground or the background colors.")
(defvar gnus-cite-attribution-prefix "in article\\|in <"
"Regexp matching the beginning of an attribution line.")
@@ -76,32 +77,38 @@ faces change the foreground or the background colors.")
"Regexp matching the end of an attribution line.
The text matching the first grouping will be used as a button.")
-(defvar gnus-cite-attribution-face 'underline
- "Face used for attribution lines.
-It is merged with the face for the cited text belonging to the attribution.")
-
-(defvar gnus-cite-hide-percentage 50
- "Only hide cited text if it is larger than this percent of the body.")
-
-(defvar gnus-cite-hide-absolute 10
- "Only hide cited text if there is at least this number of cited lines.")
-
-(defvar gnus-face-light-name-list
- '("light blue" "light cyan" "light yellow" "light pink"
- "pale green" "beige" "orange" "magenta" "violet" "medium purple"
- "turquoise")
- "Names of light colors.")
-
-(defvar gnus-face-dark-name-list
- '("dark salmon" "firebrick"
- "dark green" "dark orange" "dark khaki" "dark violet"
- "dark turquoise")
- "Names of dark colors.")
+;see gnus-cus.el
+;(defvar gnus-cite-attribution-face 'underline
+; "Face used for attribution lines.
+;It is merged with the face for the cited text belonging to the attribution.")
+
+;see gnus-cus.el
+;(defvar gnus-cite-hide-percentage 50
+; "Only hide cited text if it is larger than this percent of the body.")
+
+;see gnus-cus.el
+;(defvar gnus-cite-hide-absolute 10
+; "Only hide cited text if there is at least this number of cited lines.")
+
+;see gnus-cus.el
+;(defvar gnus-face-light-name-list
+; '("light blue" "light cyan" "light yellow" "light pink"
+; "pale green" "beige" "orange" "magenta" "violet" "medium purple"
+; "turquoise")
+; "Names of light colors.")
+
+;see gnus-cus.el
+;(defvar gnus-face-dark-name-list
+; '("dark salmon" "firebrick"
+; "dark green" "dark orange" "dark khaki" "dark violet"
+; "dark turquoise")
+; "Names of dark colors.")
;;; Internal Variables:
(defvar gnus-article-length nil)
;; Length of article last time we parsed it.
+;; BUG! KLUDGE! UGLY! FIX ME!
(defvar gnus-cite-prefix-alist nil)
;; Alist of citation prefixes.
View
13 lisp/gnus-msg.el
@@ -460,10 +460,15 @@ Type \\[describe-mode] in the buffer to get a list of commands."
(setq gnus-article-reply sumart)
;; Handle `gnus-auto-mail-to-author'.
;; Suggested by Daniel Quinlan <quinlan@best.com>.
- (let ((to (and (not post)
- (if (eq gnus-auto-mail-to-author 'ask)
- (and (y-or-n-p "Also send mail to author? ") from)
- (and gnus-auto-mail-to-author from)))))
+ ;; Revised to respect Reply-To by Ulrik Dickow <dickow@nbi.dk>.
+ (let ((to (and (not post)
+ (if (or (and (eq gnus-auto-mail-to-author 'ask)
+ (y-or-n-p "Also send mail to author? "))
+ gnus-auto-mail-to-author)
+ (or (save-excursion
+ (set-buffer gnus-article-copy)
+ (gnus-fetch-field "reply-to"))
+ from)))))
(if to
(progn
(if (mail-fetch-field "To")
View
425 lisp/gnus-vis.el
@@ -26,167 +26,174 @@
;;; Code:
(require 'gnus)
+(require 'gnus-ems)
(require gnus-easymenu)
(require 'custom)
-(require 'gnus-ems)
;;; Summary highlights.
-(defvar gnus-summary-highlight-properties
- '((unread "ForestGreen" "green")
- (ticked "Firebrick" "pink")
- (read "black" "white")
- (low italic italic)
- (high bold bold)
- (canceled "yellow/black" "black/yellow")))
-
-(defvar gnus-summary-highlight-translation
- '(((unread (= mark gnus-unread-mark))
- (ticked (or (= mark gnus-ticked-mark) (= mark gnus-dormant-mark)))
- (read (not (or (= mark gnus-unread-mark) (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark) (= mark gnus-canceled-mark))))
- (canceled (= mark gnus-canceled-mark)))
- ((low (< score gnus-summary-default-score))
- (high (> score gnus-summary-default-score)))))
-
-(defun gnus-visual-map-face-translation ()
- (let ((props gnus-summary-highlight-properties)
- (trans gnus-summary-highlight-translation)
- map)
- (while props)))
+;(defvar gnus-summary-highlight-properties
+; '((unread "ForestGreen" "green")
+; (ticked "Firebrick" "pink")
+; (read "black" "white")
+; (low italic italic)
+; (high bold bold)
+; (canceled "yellow/black" "black/yellow")))
+
+;(defvar gnus-summary-highlight-translation
+; '(((unread (= mark gnus-unread-mark))
+; (ticked (or (= mark gnus-ticked-mark) (= mark gnus-dormant-mark)))
+; (read (not (or (= mark gnus-unread-mark) (= mark gnus-dormant-mark)
+; (= mark gnus-ticked-mark) (= mark gnus-canceled-mark))))
+; (canceled (= mark gnus-canceled-mark)))
+; ((low (< score gnus-summary-default-score))
+; (high (> score gnus-summary-default-score)))))
+
+;(defun gnus-visual-map-face-translation ()
+; (let ((props gnus-summary-highlight-properties)
+; (trans gnus-summary-highlight-translation)
+; map)
+; (while props)))
-(defvar gnus-summary-selected-face 'underline
- "*Face used for highlighting the current article in the summary buffer.")
+;see gnus-cus.el
+;(defvar gnus-summary-selected-face 'underline
+; "*Face used for highlighting the current article in the summary buffer.")
-(defvar gnus-summary-highlight
- (cond ((not (eq gnus-display-type 'color))
- '(((> score default) . bold)
- ((< score default) . italic)))
- ((eq gnus-background-mode 'dark)
- (list (cons '(= mark gnus-canceled-mark)
- (custom-face-lookup "yellow" "black" nil nil nil nil))
- (cons '(and (> score default)
- (or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark)))
- (custom-face-lookup "pink" nil nil t nil nil))
- (cons '(and (< score default)
- (or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark)))
- (custom-face-lookup "pink" nil nil nil t nil))
- (cons '(or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark))
- (custom-face-lookup "pink" nil nil nil nil nil))
-
- (cons '(and (> score default) (= mark gnus-ancient-mark))
- (custom-face-lookup "SkyBlue" nil nil t nil nil))
- (cons '(and (< score default) (= mark gnus-ancient-mark))
- (custom-face-lookup "SkyBlue" nil nil nil t nil))
- (cons '(= mark gnus-ancient-mark)
- (custom-face-lookup "SkyBlue" nil nil nil nil nil))
-
- (cons '(and (> score default) (= mark gnus-unread-mark))
- (custom-face-lookup "white" nil nil t nil nil))
- (cons '(and (< score default) (= mark gnus-unread-mark))
- (custom-face-lookup "white" nil nil nil t nil))
- (cons '(= mark gnus-unread-mark)
- (custom-face-lookup "white" nil nil nil nil nil))
-
- (cons '(> score default) 'bold)
- (cons '(< score default) 'italic)))
- (t
- (list (cons '(= mark gnus-canceled-mark)
- (custom-face-lookup "yellow" "black" nil nil nil nil))
- (cons '(and (> score default)
- (or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark)))
- (custom-face-lookup "firebrick" nil nil t nil nil))
- (cons '(and (< score default)
- (or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark)))
- (custom-face-lookup "firebrick" nil nil nil t nil))
- (cons '(or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark))
- (custom-face-lookup "firebrick" nil nil nil nil nil))
-
- (cons '(and (> score default) (= mark gnus-ancient-mark))
- (custom-face-lookup "RoyalBlue" nil nil t nil nil))
- (cons '(and (< score default) (= mark gnus-ancient-mark))
- (custom-face-lookup "RoyalBlue" nil nil nil t nil))
- (cons '(= mark gnus-ancient-mark)
- (custom-face-lookup "RoyalBlue" nil nil nil nil nil))
-
- (cons '(and (> score default) (/= mark gnus-unread-mark))
- (custom-face-lookup "DarkGreen" nil nil t nil nil))
- (cons '(and (< score default) (/= mark gnus-unread-mark))
- (custom-face-lookup "DarkGreen" nil nil nil t nil))
- (cons '(/= mark gnus-unread-mark)
- (custom-face-lookup "DarkGreen" nil nil nil nil nil))
-
- (cons '(> score default) 'bold)
- (cons '(< score default) 'italic))))
- "*Alist of `(FORM . FACE)'.
-Summary lines are highlighted with the FACE for the first FORM which
-evaluate to a non-nil value.
-
-Point will be at the beginning of the line when FORM is evaluated.
-The following can be used for convenience:
-
-score: (gnus-summary-article-score)
-default: gnus-summary-default-score
-below: gnus-summary-mark-below
-mark: (gnus-summary-article-mark)
-
-The latter can be used like this:
- ((= mark gnus-replied-mark) . underline)")
+;see gnus-cus.el
+;(defvar gnus-summary-highlight
+; (cond ((not (eq gnus-display-type 'color))
+; '(((> score default) . bold)
+; ((< score default) . italic)))
+; ((eq gnus-background-mode 'dark)
+; (list (cons '(= mark gnus-canceled-mark)
+; (custom-face-lookup "yellow" "black" nil nil nil nil))
+; (cons '(and (> score default)
+; (or (= mark gnus-dormant-mark)
+; (= mark gnus-ticked-mark)))
+; (custom-face-lookup "pink" nil nil t nil nil))
+; (cons '(and (< score default)
+; (or (= mark gnus-dormant-mark)
+; (= mark gnus-ticked-mark)))
+; (custom-face-lookup "pink" nil nil nil t nil))
+; (cons '(or (= mark gnus-dormant-mark)
+; (= mark gnus-ticked-mark))
+; (custom-face-lookup "pink" nil nil nil nil nil))
+
+; (cons '(and (> score default) (= mark gnus-ancient-mark))
+; (custom-face-lookup "SkyBlue" nil nil t nil nil))
+; (cons '(and (< score default) (= mark gnus-ancient-mark))
+; (custom-face-lookup "SkyBlue" nil nil nil t nil))
+; (cons '(= mark gnus-ancient-mark)
+; (custom-face-lookup "SkyBlue" nil nil nil nil nil))
+
+; (cons '(and (> score default) (= mark gnus-unread-mark))
+; (custom-face-lookup "white" nil nil t nil nil))
+; (cons '(and (< score default) (= mark gnus-unread-mark))
+; (custom-face-lookup "white" nil nil nil t nil))
+; (cons '(= mark gnus-unread-mark)
+; (custom-face-lookup "white" nil nil nil nil nil))
+
+; (cons '(> score default) 'bold)
+; (cons '(< score default) 'italic)))
+; (t
+; (list (cons '(= mark gnus-canceled-mark)
+; (custom-face-lookup "yellow" "black" nil nil nil nil))
+; (cons '(and (> score default)
+; (or (= mark gnus-dormant-mark)
+; (= mark gnus-ticked-mark)))
+; (custom-face-lookup "firebrick" nil nil t nil nil))
+; (cons '(and (< score default)
+; (or (= mark gnus-dormant-mark)
+; (= mark gnus-ticked-mark)))
+; (custom-face-lookup "firebrick" nil nil nil t nil))
+; (cons '(or (= mark gnus-dormant-mark)
+; (= mark gnus-ticked-mark))
+; (custom-face-lookup "firebrick" nil nil nil nil nil))
+
+; (cons '(and (> score default) (= mark gnus-ancient-mark))
+; (custom-face-lookup "RoyalBlue" nil nil t nil nil))
+; (cons '(and (< score default) (= mark gnus-ancient-mark))
+; (custom-face-lookup "RoyalBlue" nil nil nil t nil))
+; (cons '(= mark gnus-ancient-mark)
+; (custom-face-lookup "RoyalBlue" nil nil nil nil nil))
+
+; (cons '(and (> score default) (/= mark gnus-unread-mark))
+; (custom-face-lookup "DarkGreen" nil nil t nil nil))
+; (cons '(and (< score default) (/= mark gnus-unread-mark))
+; (custom-face-lookup "DarkGreen" nil nil nil t nil))
+; (cons '(/= mark gnus-unread-mark)
+; (custom-face-lookup "DarkGreen" nil nil nil nil nil))
+
+; (cons '(> score default) 'bold)
+; (cons '(< score default) 'italic))))
+; "*Alist of `(FORM . FACE)'.
+;Summary lines are highlighted with the FACE for the first FORM which
+;evaluate to a non-nil value.
+
+;Point will be at the beginning of the line when FORM is evaluated.
+;The following can be used for convenience:
+
+;score: (gnus-summary-article-score)
+;default: gnus-summary-default-score
+;below: gnus-summary-mark-below
+;mark: (gnus-summary-article-mark)
+
+;The latter can be used like this:
+; ((= mark gnus-replied-mark) . underline)")
;;; article highlights
-(defvar gnus-header-face-alist
- (cond ((not (eq gnus-display-type 'color))
- '(("" bold italic)))
- ((eq gnus-background-mode 'dark)
- (list (list "From" nil
- (custom-face-lookup "SkyBlue" nil nil t t nil))
- (list "Subject" nil
- (custom-face-lookup "pink" nil nil t t nil))
- (list "Newsgroups:.*," nil
- (custom-face-lookup "yellow" nil nil t t nil))
- (list ""
- (custom-face-lookup "cyan" nil nil t nil nil)
- (custom-face-lookup "green" nil nil nil t nil))))
- (t
- (list (list "From" nil
- (custom-face-lookup "RoyalBlue" nil nil t t nil))
- (list "Subject" nil
- (custom-face-lookup "firebrick" nil nil t t nil))
- (list "Newsgroups:.*," nil
- (custom-face-lookup "red" nil nil t t nil))
- (list ""
- (custom-face-lookup "DarkGreen" nil nil t nil nil)
- (custom-face-lookup "DarkGreen" nil nil nil t nil)))))
- "Alist of headers and faces used for highlighting them.
-The entries in the list has the form `(REGEXP NAME CONTENT)', where
-REGEXP is a regular expression matching the beginning of the header,
-NAME is the face used for highlighting the header name and CONTENT is
-the face used for highlighting the header content.
-
-The first non-nil NAME or CONTENT with a matching REGEXP in the list
-will be used.")
-
-
-(defvar gnus-make-foreground t
- "Non nil means foreground color to highlight citations.")
-
-(defvar gnus-article-button-face 'bold
- "Face used for text buttons.")
-
-(defvar gnus-article-mouse-face (if (boundp 'gnus-mouse-face)
- gnus-mouse-face
- 'highlight)
- "Face used when the mouse is over the button.")
-
-(defvar gnus-signature-face 'italic
- "Face used for signature.")
+;see gnus-cus.el
+;(defvar gnus-header-face-alist
+; (cond ((not (eq gnus-display-type 'color))
+; '(("" bold italic)))
+; ((eq gnus-background-mode 'dark)
+; (list (list "From" nil
+; (custom-face-lookup "SkyBlue" nil nil t t nil))
+; (list "Subject" nil
+; (custom-face-lookup "pink" nil nil t t nil))
+; (list "Newsgroups:.*," nil
+; (custom-face-lookup "yellow" nil nil t t nil))
+; (list ""
+; (custom-face-lookup "cyan" nil nil t nil nil)
+; (custom-face-lookup "green" nil nil nil t nil))))
+; (t
+; (list (list "From" nil
+; (custom-face-lookup "RoyalBlue" nil nil t t nil))
+; (list "Subject" nil
+; (custom-face-lookup "firebrick" nil nil t t nil))
+; (list "Newsgroups:.*," nil
+; (custom-face-lookup "red" nil nil t t nil))
+; (list ""
+; (custom-face-lookup "DarkGreen" nil nil t nil nil)
+; (custom-face-lookup "DarkGreen" nil nil nil t nil)))))
+; "Alist of headers and faces used for highlighting them.
+;The entries in the list has the form `(REGEXP NAME CONTENT)', where
+;REGEXP is a regular expression matching the beginning of the header,
+;NAME is the face used for highlighting the header name and CONTENT is
+;the face used for highlighting the header content.
+
+;The first non-nil NAME or CONTENT with a matching REGEXP in the list
+;will be used.")
+
+
+;see gnus-cus.el
+;(defvar gnus-make-foreground t
+; "Non nil means foreground color to highlight citations.")
+
+;see gnus-cus.el
+;(defvar gnus-article-button-face 'bold
+; "Face used for text buttons.")
+
+;see gnus-cus.el
+;(defvar gnus-article-mouse-face (if (boundp 'gnus-mouse-face)
+; gnus-mouse-face
+; 'highlight)
+; "Face used when the mouse is over the button.")
+
+;see gnus-cus.el
+;(defvar gnus-signature-face 'italic
+; "Face used for signature.")
(defvar gnus-button-alist
'(("in\\( +article\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2
@@ -211,23 +218,25 @@ PAR: is a number of a regexp grouping whose text will be passed to CALLBACK.
CALLBACK can also be a variable, in that case the value of that
variable it the real callback function.")
-(eval-when-compile
- (defvar browse-url-browser-function))
-
-(defvar gnus-button-url
- (cond ((boundp 'browse-url-browser-function) browse-url-browser-function)
- ((fboundp 'w3-fetch) 'w3-fetch)
- ((eq window-system 'x) 'gnus-netscape-open-url))
- "*Function to fetch URL.
-The function will be called with one argument, the URL to fetch.
-Useful values of this function are:
-
-w3-fetch:
- defined in the w3 emacs package by William M. Perry.
-gnus-netscape-open-url:
- open url in existing netscape, start netscape if none found.
-gnus-netscape-start-url:
- start new netscape with url.")
+;see gnus-cus.el
+;(eval-when-compile
+; (defvar browse-url-browser-function))
+
+;see gnus-cus.el
+;(defvar gnus-button-url
+; (cond ((boundp 'browse-url-browser-function) browse-url-browser-function)
+; ((fboundp 'w3-fetch) 'w3-fetch)
+; ((eq window-system 'x) 'gnus-netscape-open-url))
+; "*Function to fetch URL.
+;The function will be called with one argument, the URL to fetch.
+;Useful values of this function are:
+
+;w3-fetch:
+; defined in the w3 emacs package by William M. Perry.
+;gnus-netscape-open-url:
+; open url in existing netscape, start netscape if none found.
+;gnus-netscape-start-url:
+; start new netscape with url.")
@@ -317,7 +326,7 @@ gnus-netscape-start-url:
["Send a bug report" gnus-bug t]
["Send a mail" gnus-group-mail t]
["Post an article" gnus-group-post-news t]
- ["Customize score file" gnus-score-customize t]
+ ["Customize score file" gnus-score-customize (not (string-match "XEmacs" emacs-version)) ]
["Check for new news" gnus-group-get-new-news t]
["Delete bogus groups" gnus-group-check-bogus-groups t]
["Find new newsgroups" gnus-find-new-newsgroups t]
@@ -472,8 +481,10 @@ gnus-netscape-start-url:
["Edit score file" gnus-score-edit-file t]
["Trace score" gnus-score-find-trace t]
["Increase score" gnus-summary-increase-score t]
- ["Lower score" gnus-summary-lower-score t]
- ("Default header"
+ ["Lower score" gnus-summary-lower-score t]))))
+
+ (and nil
+ '(("Default header"
["Ask" (gnus-score-set-default 'gnus-score-default-header nil)
:style radio
:selected (null gnus-score-default-header)]
@@ -580,7 +591,7 @@ gnus-netscape-start-url:
(gnus-score-set-default 'gnus-score-default-duration 'i)
:style radio
:selected (eq gnus-score-default-duration 'i)])
- ))))
+ ))
(easy-menu-define
gnus-summary-article-menu
@@ -588,18 +599,45 @@ gnus-netscape-start-url:
""
'("Article"
("Hide"
- ("Date"
- ["Local" gnus-article-date-local t]
- ["UT" gnus-article-date-local t]
- ["Lapsed" gnus-article-date-local t])
+ ["All" gnus-article-hide t]
["Headers" gnus-article-hide-headers t]
["Signature" gnus-article-hide-signature t]
- ["Citation" gnus-article-hide-citation t]
+ ["Citation" gnus-article-hide-citation t])
+ ("Highlight"
+ ["All" gnus-article-highlight t]
+ ["Headers" gnus-article-highlight-headers t]
+ ["Signature" gnus-article-highlight-signature t]
+ ["Citation" gnus-article-highlight-citation t])
+ ("Date"
+ ["Local" gnus-article-date-local t]
+ ["UT" gnus-article-date-local t]
+ ["Lapsed" gnus-article-date-local t])
+ ("Filter"
["Overstrike" gnus-article-treat-overstrike t]
["Word wrap" gnus-article-word-wrap t]
["CR" gnus-article-remove-cr t]
["Show X-Face" gnus-article-display-x-face t]
- ["Quoted-Printable" gnus-article-de-quoted-unreadable t])
+ ["Quoted-Printable" gnus-article-de-quoted-unreadable t]
+ ["Rot 13" gnus-summary-caesar-message t]
+ ["Add buttons" gnus-article-add-buttons t]
+ ["Stop page breaking" gnus-summary-stop-page-breaking t]
+ ["Toggle MIME" gnus-summary-toggle-mime t]
+ ["Toggle header" gnus-summary-toggle-header t])
+ ("Output"
+ ["Save in default format" gnus-summary-save-article t]
+ ["Save in file" gnus-summary-save-article-file t]
+ ["Save in Unix mail format" gnus-summary-save-article-mail t]
+ ["Save in MH folder" gnus-summary-save-article-folder t]
+ ["Save in VM folder" gnus-summary-save-article-vm t]
+ ["Save in RMAIL mbox" gnus-summary-save-article-rmail t]
+ ["Pipe through a filter" gnus-summary-pipe-output t])
+ ("Backend"
+ ["Respool article" gnus-summary-respool-article t]
+ ["Move article" gnus-summary-move-article t]
+ ["Copy article" gnus-summary-copy-article t]
+ ["Import file" gnus-summary-import-article t]
+ ["Edit article" gnus-summary-edit-article t]
+ ["Delete article" gnus-summary-delete-article t])
("Extract"
["Uudecode" gnus-uu-decode-uu t]
["Uudecode and save" gnus-uu-decode-uu-and-save t]
@@ -614,23 +652,9 @@ gnus-netscape-start-url:
["End of the article" gnus-summary-end-of-article t]
["Fetch parent of article" gnus-summary-refer-parent-article t]
["Fetch article with id..." gnus-summary-refer-article t]
- ["Stop page breaking" gnus-summary-stop-page-breaking t]
- ["Rot 13" gnus-summary-caesar-message t]
- ["Redisplay" gnus-summary-show-article t]
- ["Toggle header" gnus-summary-toggle-header t]
- ["Toggle MIME" gnus-summary-toggle-mime t]
- ["Save" gnus-summary-save-article t]
- ["Save in mail format" gnus-summary-save-article-mail t]
- ["Pipe through a filter" gnus-summary-pipe-output t]
- ("Mail articles"
- ["Respool article" gnus-summary-respool-article t]
- ["Move article" gnus-summary-move-article t]
- ["Copy article" gnus-summary-copy-article t]
- ["Import file" gnus-summary-import-article t]
- ["Edit article" gnus-summary-edit-article t]
- ["Delete article" gnus-summary-delete-article t])
- ))
+ ["Redisplay" gnus-summary-show-article t]))
+
(easy-menu-define
gnus-summary-thread-menu
gnus-summary-mode-map
@@ -869,7 +893,7 @@ If nil, the user will be asked for a duration.")
;; If no mouse-face prop on line (e.g. xemacs) we
;; will have to = from = end, so we highlight the
;; entire line instead.
- (if (= to from)
+ (if (= (+ to 2) from)
(progn
(setq from beg)
(setq to end)))
@@ -1305,11 +1329,12 @@ External references are things like message-ids and URLs, as specified by
(remove-text-properties end (point-max) gnus-hidden-properties)
(add-text-properties end (point-max) gnus-hidden-properties)))))
-(defun gnus-make-face (color)
- ;; Create entry for face with COLOR.
- (if gnus-make-foreground
- (custom-face-lookup color nil nil nil nil nil)
- (custom-face-lookup nil color nil nil nil nil)))
+;see gnus-cus.el
+;(defun gnus-make-face (color)
+; ;; Create entry for face with COLOR.
+; (if gnus-make-foreground
+; (custom-face-lookup color nil nil nil nil nil)
+; (custom-face-lookup nil color nil nil nil nil)))
(defun gnus-button-entry ()
;; Return the first entry in `gnus-button-alist' matching this place.
View
129 lisp/gnus.el
@@ -23,9 +23,9 @@
;;; Commentary:
-;; Although (ding) Gnus looks suspiciously like GNUS, it isn't quite
-;; the same beast. Most internal structures have been changed. If you
-;; have written packages that depend on any of the hash tables,
+;; Although Gnus looks suspiciously like GNUS, it isn't quite the same
+;; beast. Most internal structures have been changed. If you have
+;; written packages that depend on any of the hash tables,
;; `gnus-newsrc-alist', `gnus-killed-assoc', marked lists, the .newsrc
;; buffer, or internal knowledge of the `nntp-header-' macros, or
;; dependence on the buffers having a certain format, your code will
@@ -36,7 +36,6 @@
(require 'mail-utils)
(require 'timezone)
(require 'nnheader)
-(require 'gnus-cus)
;; Site dependent variables. These variables should be defined in
;; paths.el.
@@ -170,6 +169,10 @@ instead.")
This will most commonly be on a remote machine, and the file will be
fetched by ange-ftp.
+Note that Gnus uses an aol machine as the default directory. If this
+feels fundamentally unclean, just think of it as a way to finally get
+something of value back from them.
+
If the default site is too slow, try one of these:
North America: ftp.uu.net /usenet/news.answers
@@ -187,6 +190,10 @@ If the default site is too slow, try one of these:
"/ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list/"
"*The address of the (ding) archives.")
+(defvar gnus-group-recent-archive-directory
+ "/ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list-recent/"
+ "*The address of the most recent (ding) articles.")
+
(defvar gnus-default-subscribed-newsgroups nil
"*This variable lists what newsgroups should be subscribed the first time Gnus is used.
It should be a list of strings.
@@ -356,11 +363,12 @@ headers to connect otherwise loose threads will be displayed.
The server has to support XOVER for any of this to work.")
-(defvar gnus-visual t
- "*If non-nil, will do various highlighting.
-If nil, no mouse highlights (or any other highlights) will be
-performed. This might speed up Gnus some when generating large group
-and summary buffers.")
+;see gnus-cus.el
+;(defvar gnus-visual t
+; "*If non-nil, will do various highlighting.
+;If nil, no mouse highlights (or any other highlights) will be
+;performed. This might speed up Gnus some when generating large group
+;and summary buffers.")
(defvar gnus-novice-user t
"*Non-nil means that you are a usenet novice.
@@ -957,13 +965,13 @@ with some simple extensions.
%S The subject")
-(defvar gnus-summary-mode-line-format "(ding) %G/%A %Z"
+(defvar gnus-summary-mode-line-format "Gnus %G/%A %Z"
"*The format specification for the summary mode line.")
-(defvar gnus-article-mode-line-format "(ding) %G/%A %S"
+(defvar gnus-article-mode-line-format "Gnus %G/%A %S"
"*The format specification for the article mode line.")
-(defvar gnus-group-mode-line-format "(ding) List of groups {%M:%S} "
+(defvar gnus-group-mode-line-format "Gnus List of groups {%M:%S} "
"*The format specification for the group mode line.")
(defvar gnus-valid-select-methods
@@ -1002,9 +1010,10 @@ If this variable is nil, screen refresh may be quicker.")
If this is nil, Gnus will take space as is needed, leaving the rest
of the modeline intact.")
-(defvar gnus-mouse-face 'highlight
- "*Face used for mouse highlighting in Gnus.
-No mouse highlights will be done if `gnus-visual' is nil.")
+;see gnus-cus.el
+;(defvar gnus-mouse-face 'highlight
+; "*Face used for mouse highlighting in Gnus.
+;No mouse highlights will be done if `gnus-visual' is nil.")
(defvar gnus-summary-mark-below nil
"*Mark all articles with a score below this variable as read.
@@ -1102,17 +1111,17 @@ If you want to modify the summary buffer, you can use this hook.")
"*A hook called after an article has been prepared in the article buffer.
If you want to run a special decoding program like nkf, use this hook.")
-(defvar gnus-article-display-hook nil
- "*A hook called after the article is displayed in the article buffer.
-The hook is designed to change the contents of the article
-buffer. Typical functions that this hook may contain are
-`gnus-article-hide-headers' (hide selected headers),
-`gnus-article-maybe-highlight' (perform fancy article highlighting),
-`gnus-article-hide-signature' (hide signature) and
-`gnus-article-treat-overstrike' (turn \"^H_\" into bold characters).")
-(add-hook 'gnus-article-display-hook 'gnus-article-hide-headers-if-wanted)
-(add-hook 'gnus-article-display-hook 'gnus-article-treat-overstrike)
-(add-hook 'gnus-article-display-hook 'gnus-article-maybe-highlight)
+;(defvar gnus-article-display-hook nil
+; "*A hook called after the article is displayed in the article buffer.
+;The hook is designed to change the contents of the article
+;buffer. Typical functions that this hook may contain are
+;`gnus-article-hide-headers' (hide selected headers),
+;`gnus-article-maybe-highlight' (perform fancy article highlighting),
+;`gnus-article-hide-signature' (hide signature) and
+;`gnus-article-treat-overstrike' (turn \"^H_\" into bold characters).")
+;(add-hook 'gnus-article-display-hook 'gnus-article-hide-headers-if-wanted)
+;(add-hook 'gnus-article-display-hook 'gnus-article-treat-overstrike)
+;(add-hook 'gnus-article-display-hook 'gnus-article-maybe-highlight)
(defvar gnus-article-x-face-command
"{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -"
@@ -1157,7 +1166,7 @@ example, if you'd like to apply a kill file to articles which contains
a string `rmgroup' in subject in newsgroup `control', you can use the
following hook:
-\(setq gnus-apply-kill-hook
+ (setq gnus-apply-kill-hook
(list
(lambda ()
(cond ((string-match \"control\" gnus-newsgroup-name)
@@ -1330,7 +1339,7 @@ variable (string, integer, character, etc).")
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "(ding) Gnus v0.99.19"
+(defconst gnus-version "(ding) Gnus v0.99.20"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
@@ -1340,7 +1349,7 @@ variable (string, integer, character, etc).")
"Assoc list of major modes and related Info nodes.")
(defvar gnus-documentation-group-file "~/dgnus/lisp/doc.txt"
- "The location of the (ding) Gnus documentation group.")
+ "The location of the Gnus documentation group.")
(defvar gnus-group-buffer "*Group*")
(defvar gnus-summary-buffer "*Summary*")
@@ -1810,6 +1819,7 @@ Thank you for your help in stamping out bugs.
;;; Load the compatability functions.
+(require 'gnus-cus)
(require 'gnus-ems)
@@ -2067,8 +2077,8 @@ Otherwise, it is like ~/News/news/group/num."
(defun gnus-numeric-save-name (newsgroup headers &optional last-file)
"Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
-If variable `gnus-use-long-file-name' is nil, it is ~/News/news.group/num.
-Otherwise, it is like ~/News/news/group/num."
+If variable `gnus-use-long-file-name' is non-nil, it is
+~/News/news.group/num. Otherwise, it is like ~/News/news/group/num."
(let ((default
(expand-file-name
(concat (if (gnus-use-long-file-name 'not-save)
@@ -2085,8 +2095,8 @@ Otherwise, it is like ~/News/news/group/num."
(defun gnus-Plain-save-name (newsgroup headers &optional last-file)
"Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
-If variable `gnus-use-long-file-name' is nil, it is ~/News/News.group.
-Otherwise, it is like ~/News/news/group/news."
+If variable `gnus-use-long-file-name' is non-nil, it is
+~/News/News.group. Otherwise, it is like ~/News/news/group/news."
(or last-file
(expand-file-name
(if (gnus-use-long-file-name 'not-save)
@@ -2096,8 +2106,8 @@ Otherwise, it is like ~/News/news/group/news."
(defun gnus-plain-save-name (newsgroup headers &optional last-file)
"Generate file name from NEWSGROUP, HEADERS, and optional LAST-FILE.
-If variable `gnus-use-long-file-name' is nil, it is ~/News/news.group.
-Otherwise, it is like ~/News/news/group/news."
+If variable `gnus-use-long-file-name' is non-nil, it is
+~/News/news.group. Otherwise, it is like ~/News/news/group/news."
(or last-file
(expand-file-name
(if (gnus-use-long-file-name 'not-save)
@@ -3203,8 +3213,6 @@ As opposed to `gnus', this command will not connect to the local server."
(setq gnus-group-use-permanent-levels t)
(gnus (or arg (1- gnus-level-default-subscribed)) t))
-(defalias '\(ding\) 'gnus)
-
;;;###autoload
(defun gnus (&optional arg dont-connect)
"Read network news.
@@ -4176,7 +4184,7 @@ ADDRESS."
(gnus-group-position-cursor)))
(defun gnus-group-make-help-group ()
- "Create the (ding) Gnus documentation group."
+ "Create the Gnus documentation group."
(interactive)
(let ((path load-path)
name)
@@ -4220,13 +4228,19 @@ ADDRESS."
(list 'nndoc-address file)
(list 'nndoc-article-type type)))))
-(defun gnus-group-make-archive-group ()
- "Create the (ding) Gnus archive group."
+(defun gnus-group-make-archive-group (&optional all)
+ "Create the (ding) Gnus archive group of the most recent articles.
+Given a prefix, create a full group."
(interactive)
- (and (gnus-gethash (gnus-group-prefixed-name "ding.archives" '(nndir ""))
- gnus-newsrc-hashtb)
- (error "Archive group already exists"))
- (gnus-group-make-group "ding.archives" "nndir" gnus-group-archive-directory)
+ (let ((group (gnus-group-prefixed-name
+ (if all "ding.archives" "ding.recent") '(nndir ""))))
+ (and (gnus-gethash group gnus-newsrc-hashtb)
+ (error "Archive group already exists"))
+ (gnus-group-make-group
+ (gnus-group-real-name group)
+ "nndir"
+ (if all gnus-group-archive-directory
+ gnus-group-recent-archive-directory)))
(gnus-group-position-cursor))
(defun gnus-group-make-directory-group (dir)
@@ -5034,7 +5048,7 @@ and the second element is the address."
(gnus-browse-mode)
(setq mode-line-buffer-identification
(format
- "(ding) Browse Server {%s:%s}" (car method) (car (cdr method))))
+ "Gnus Browse Server {%s:%s}" (car method) (car (cdr method))))
(save-excursion
(set-buffer nntp-server-buffer)
(let ((cur (current-buffer)))
@@ -7768,8 +7782,9 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
(defun gnus-summary-fetch-faq (group)
"Fetch the FAQ for the current group."
(interactive (list gnus-newsgroup-name))
- (and (gnus-group-fetch-faq group)
- (gnus-configure-windows 'summary-faq)))
+ (let (gnus-faq-buffer)
+ (and (setq gnus-faq-buffer (gnus-group-fetch-faq group))
+ (gnus-configure-windows 'summary-faq))))
;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
(defun gnus-summary-describe-group (&optional force)
@@ -8121,7 +8136,7 @@ If BACKWARD, the previous article is selected instead of the next."
(single-key-description cmd)
gnus-newsgroup-name)))
;; Confirm auto selection.
- (let* ((event (read-event)))
+ (let* ((event (read-char)))
(setq key (if (listp event) (car event) event))
(if (memq key keystrokes)
(let ((obuf (current-buffer)))
@@ -8295,9 +8310,11 @@ Return nil if there are no unread articles."
;; score.
(goto-char (point-min))
(while (and (or (not (= (gnus-summary-article-mark) gnus-unread-mark))
- (not (eq (cdr (assq (gnus-summary-article-number)
- gnus-newsgroup-scored))
- gnus-summary-default-score)))
+ (and (assq (gnus-summary-article-number)
+ gnus-newsgroup-scored)
+ (< (cdr (assq (gnus-summary-article-number)
+ gnus-newsgroup-scored))
+ gnus-summary-default-score)))
(zerop (forward-line 1))
(not (eobp))))
(if (= (gnus-summary-article-mark) gnus-unread-mark)
@@ -8410,6 +8427,10 @@ NOTE: This command only works with newsgroups that use real or simulated NNTP."
(setq number (header-number gnus-current-headers))
(gnus-rebuild-thread message-id)
(gnus-summary-goto-subject number)
+ (if (null gnus-use-full-window)
+ (progn
+ (delete-windows-on tmp-buf)
+ (gnus-configure-windows 'article 'force)))
(gnus-summary-recenter)
(gnus-article-set-window-start
(cdr (assq number gnus-newsgroup-bookmarks)))
@@ -8580,6 +8601,7 @@ article. If BACKWARD (the prefix) is non-nil, search backward instead."
gnus-article-buffer
(widen)
(goto-char (point-max))
+ (recenter -3)
(and gnus-break-pages (gnus-narrow-to-page))))
(defun gnus-summary-show-article ()
@@ -11023,6 +11045,7 @@ Provided for backwards compatability."
(goto-char (point-min))
(if (not (and gnus-article-x-face-command
(or force
+ (not gnus-article-x-face-too-ugly)
(and gnus-article-x-face-too-ugly
(not (string-match gnus-article-x-face-too-ugly
(mail-fetch-field "from")))))
@@ -13374,7 +13397,7 @@ If FORCE is non-nil, the .newsrc file is read."
(defun gnus-gnus-to-quick-newsrc-format ()
"Insert Gnus variables such as gnus-newsrc-alist in lisp format."
- (insert ";; (ding) Gnus startup file.\n")
+ (insert ";; Gnus startup file.\n")
(insert ";; Never delete this file - touch .newsrc instead to force Gnus\n")
(insert ";; to read .newsrc.\n")
(insert "(setq gnus-newsrc-file-version "
@@ -13521,7 +13544,7 @@ If FORCE is non-nil, the .newsrc file is read."
It works along the same lines as a normal formatting string,
with some simple extensions.")
-(defvar gnus-server-mode-line-format "(ding) List of servers"
+(defvar gnus-server-mode-line-format "Gnus List of servers"
"The format specification for the server mode line.")
(defconst gnus-server-line-format-alist
View
2  lisp/nndir.el
@@ -68,7 +68,7 @@ If the stream is opened, return T, otherwise return NIL."
(and nntp-server-buffer
(get-buffer nntp-server-buffer)))
-(defun nndir-status-message ()
+(defun nndir-status-message (&optional server)
"Return server status response as string."
nndir-status-string)
View
2  lisp/nnfolder.el
@@ -561,7 +561,7 @@ such things as moving mail. All buffers always get killed upon server close.")
;; This method has a problem if you've accidentally let the active list get
;; out of sync with the files. This could happen, say, if you've
-;; accidentally gotten new mail with something other than (ding) (but why
+;; accidentally gotten new mail with something other than Gnus (but why
;; would _that_ ever happen? :-). In that case, we will be in the middle of
;; processing the file, ready to add new X-Gnus article number markers, and
;; we'll run accross a message with no ID yet - the active list _may_not_ be
View
96 texi/gnus.texi
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename gnus.info
-@settitle (ding) Gnus 0.99.18 Manual
+@settitle Gnus 5.0 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@@ -45,7 +45,7 @@ into another language, under the above conditions for modified versions.
@iftex
@titlepage
-@title (ding) Gnus Manual
+@title Gnus Manual
@author by Lars Magne Ingebrigtsen
@page
@@ -119,9 +119,17 @@ a total and utter lie, but who cares? (Besides, the "Gnus" in this
abbreviation should probably be pronounced "news" as UMEDA intended,
which makes it a more appropriate name, don't you think?)
+In any case, after spending all that energy with coming up with a new
+and spiffy name, we decided that the name was @emph{too} spiffy, so we
+renamamed it back again to "Gnus". But in mixed case. "Gnus" vs.
+@sc{gnus}. New vs. old.
+
+Incidentally, the next Gnus generation will be called "September Gnus",
+and won't be released until February. Confused? You will be.
+
@menu
* Why?:: What's the point of Gnus?
-* Compatibility:: Just how compatible is (ding) Gnus with @sc{gnus}?
+* Compatibility:: Just how compatible is Gnus with @sc{gnus}?
* Contributors:: Oodles of people.
* New Features:: A short description of all the new stuff in Gnus.
* Newest Features:: Features so new that they haven't been written yet.
@@ -141,15 +149,14 @@ volume continues to rise with the current rate of increase, all current
newsreaders will be pretty much useless. How do you deal with
newsgroups that have hundreds (or thousands) of new articles each day?
-(ding) Gnus offer no real solutions to these questions, but I would very
-much like to see Gnus being used as a testing ground for new methods of
-reading and fetching news. Expanding on Umeda-san's wise decision to
-separate the newsreader from the backends, (ding) Gnus now offers a
-simple interface for anybody who wants to write new backends for
-fetching mail and news from different sources. I have added hooks for
-customizations everywhere I can imagine useful. By doing so, I'm
-inviting every one of you to explore and invent new ways of reading
-news.
+Gnus offer no real solutions to these questions, but I would very much
+like to see Gnus being used as a testing ground for new methods of
+reading and fetching news. Expanding on Umeda-san's wise decision to
+separate the newsreader from the backends, Gnus now offers a simple
+interface for anybody who wants to write new backends for fetching mail
+and news from different sources. I have added hooks for customizations
+everywhere I can imagine useful. By doing so, I'm inviting every one of
+you to explore and invent new ways of reading news.
May Gnus never be complete. @kbd{C-u 100 M-x hail-emacs}.
@@ -157,10 +164,9 @@ May Gnus never be complete. @kbd{C-u 100 M-x hail-emacs}.
@section Compatibility
@cindex compatibility
-(ding) Gnus was designed to be fully compatible with @sc{gnus}. Almost
-all key bindings have been kept. More key bindings have been added, of
-course, but only in one or two obscure cases have old bindings been
-changed.
+Gnus was designed to be fully compatible with @sc{gnus}. Almost all key
+bindings have been kept. More key bindings have been added, of course,
+but only in one or two obscure cases have old bindings been changed.
Our motto is:
@quotation
@@ -202,16 +208,15 @@ Uncleanliness! Away!
Packages like @code{expire-kill} will no longer work. As a matter of
fact, you should probably remove all old @sc{gnus} packages (and other
-code) when you start using (ding) Gnus. More likely than not, (ding)
-Gnus already does what you have written code to make @sc{gnus} do.
-(Snicker.)
+code) when you start using Gnus. More likely than not, Gnus already
+does what you have written code to make @sc{gnus} do. (Snicker.)
Even though old methods of doing things are still supported, only the
new methods are documented in this manual. If you detect a new method of
doing something while reading this manual, that does not mean you have
to stop doing it the old way.
-(ding) Gnus understands all @sc{gnus} startup files.
+Gnus understands all @sc{gnus} startup files.
@kindex M-x gnus-bug
Overall, a casual user who hasn't written much code that depends on
@@ -311,7 +316,7 @@ next millennium.
@item
Native @sc{mime} support is something that should be done. I was hoping
I could steal code from @code{Mew}, the @sc{mime} mail reader for Emacs,
-but I'm not quite sure what the status of that project is. (ding) might
+but I'm not quite sure what the status of that project is. Gnus might
support @sc{mime} quite soon, and it might not.
@item
When the user references the parent of an article, some sort of
@@ -643,10 +648,10 @@ the @file{.newsrc} file. (Actually, it duplicated everything in the
that were the most recently saved, which enabled people to swap between
@sc{gnus} and other newsreaders.
-That was kinda silly, so (ding) Gnus went one better: In addition to the
-@file{.newsrc} and @file{.newsrc.el} files, (ding) Gnus also has a file
-called @file{.newsrc.eld}. It will read whichever of these files that
-are most recent, but it will never write a @file{.newsrc.el} file.
+That was kinda silly, so Gnus went one better: In addition to the
+@file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called
+@file{.newsrc.eld}. It will read whichever of these files that are most
+recent, but it will never write a @file{.newsrc.el} file.
@vindex gnus-save-newsrc-file
You can also turn off writing the @file{.newsrc} file by setting
@@ -1262,15 +1267,17 @@ Make a directory group. You will be prompted for a directory name
@item G h
@kindex G h (Group)
@findex gnus-group-make-help-group
-Make the (ding) Gnus help group (@code{gnus-group-make-help-group}).
+Make the Gnus help group (@code{gnus-group-make-help-group}).
@item G a
@kindex G a (Group)
@findex gnus-group-make-archive-group
@vindex gnus-group-archive-directory
-Make the (ding) Gnus archive group
-(@code{gnus-group-make-archive-group}). The archive group will be
-fetched from @code{gnus-group-archive-directory}.
+@vindex gnus-group-recent-archive-directory
+Make a Gnus archive group (@code{gnus-group-make-archive-group}). By
+default a group pointing to the most recent articles will be created
+(@code{gnus-group-recent-archibe-directory}), but given a prefix, a full
+group will be created from from @code{gnus-group-archive-directory}.
@item G k
@kindex G k (Group)
@@ -5065,9 +5072,9 @@ not really necessary.
@section Score Files
@cindex score files
-Other people use @dfn{kill files}, but we here at (ding) Gnus Towers
-like scoring better than killing, so we'd rather switch than fight. They
-do something completely different as well, so sit up straight and pay
+Other people use @dfn{kill files}, but we here at Gnus Towers like
+scoring better than killing, so we'd rather switch than fight. They do
+something completely different as well, so sit up straight and pay
attention!
@vindex gnus-summary-mark-below
@@ -5712,9 +5719,9 @@ holding our breath yet?
@subsection Kill Files
@cindex kill files
-(ding) Gnus still supports those pesky old kill files. In fact, the
-kill file entries can now be expiring, which is something I wrote before
-Per thought of doing score files, so I've left the code in there.
+Gnus still supports those pesky old kill files. In fact, the kill file
+entries can now be expiring, which is something I wrote before Per
+thought of doing score files, so I've left the code in there.
In short, kill processing is a lot slower (and I do mean @emph{a lot})
than score processing, so it might be a good idea to rewrite your kill
@@ -6671,8 +6678,8 @@ processing a bit faster.
@chapter Troubleshooting
@cindex troubleshooting
-(ding) Gnus works @emph{so} well straight out of the box - I can't
-imagine any problems, really.
+Gnus works @emph{so} well straight out of the box - I can't imagine any
+problems, really.
Ahem.
@@ -6685,10 +6692,9 @@ been running @sc{gnus}, you need to exit Emacs and start it up again before
Gnus will work.
@item
Try doing an @kbd{M-x gnus-version}. If you get something that looks
-like @samp{(ding) Gnus v0.46; nntp 4.0} you have the right files loaded.
-If, on the other hand, you get something like @samp{NNTP 3.x} or
-@samp{nntp flee}, you have some old @file{.el} files lying around.
-Delete these.
+like @samp{Gnus v5.46; nntp 4.0} you have the right files loaded. If,
+on the other hand, you get something like @samp{NNTP 3.x} or @samp{nntp
+flee}, you have some old @file{.el} files lying around. Delete these.
@item
Read the help group (@kbd{M h} in the group buffer) for a FAQ and a
how-to.
@@ -6701,10 +6707,10 @@ If all else fails, report the problem as a bug,
@kindex M-x gnus-bug
@findex gnus-bug
-If you find a bug in (ding) Gnus, you can report it with the @kbd{M-x
-gnus-bug} command. @kbd{M-x set-variable RET debug-on-error RET t RET},
-and send me the backtrace. I will fix bugs, but I can only fix them if
-you send me a precise description as to how to reproduce the bug.
+If you find a bug in Gnus, you can report it with the @kbd{M-x gnus-bug}
+command. @kbd{M-x set-variable RET debug-on-error RET t RET}, and send
+me the backtrace. I will fix bugs, but I can only fix them if you send
+me a precise description as to how to reproduce the bug.
@c If you just need help, you are better off asking on
@c @samp{gnu.emacs.gnus}.
Please sign in to comment.
Something went wrong with that request. Please try again.