+Thu Aug 24 01:41:33 1995 Lars Magne Ingebrigtsen <lingebri@sunsci4.cern.ch>
+
+ * 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
+ groups in the .newsrc file.
+
+ * gnus-ems.el: Don't bug out if x-get-resource isn't defined under
+ XEmacs.
+
+ * gnus.el (gnus-ask-server-for-new-groups): Would sometimes
+ iterate over obarray instead of hashtb.
+ (gnus-summary-next-article): Would give wrong message when going
+ to canceled articles and gnus-auto-select-same was non-nil.
+
+Wed Aug 23 22:39:03 1995 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * custom.el (custom-save): New variable.
+ (custom-save-and-exit): New function.
+ (custom-buffer-create): Document it.
+ (custom-mode-map): Bind it.
+ (custom-buffer-create): New optional argument `SAVE' to overwrite
+ `custom-save'.
+ * gnus-edit.el (gnus-score-customize): Use new argument.
+
+Wed Aug 23 22:39:03 1995 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * custom.el (custom-mode): Insert appropiate check in hook if
+ `make-local-hook' doesn't exists.
+ (custom-post-command): Remove check for mode here.
+
+Wed Aug 23 22:03:50 1995 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * custom.el (custom-factory-reset-all): Removed dead code.
+ (custom-field-factory-reset): Removed dead code.
+ (custom-default-factory-reset): Didn't import the default value.
+ (custom-save): Didn't import the default value.
+
+Wed Aug 23 01:41:20 1995 Lars Magne Ingebrigtsen <lingebri@sunsci4.cern.ch>
+
+ * gnus.el (gnus-ask-server-for-new-groups): Might not ignore bogus
+ groups.
+
+ * gnus-score.el (gnus-score-insert-help): `I??' would bug out.
+
+ * gnus.el (gnus-article-display-x-face): Reverse logic a bit.
+ (gnus): Do the startup message earlier.
+ (gnus-group-list-groups): Void variable.
+ (gnus-summary-raise-thread): Increase by (- 1 arg).
+
+ * nnbabyl.el (nnbabyl-read-mbox): Would create extra dummy
+ articles.
+
+Wed Aug 23 00:49:17 1995 Lars Magne Ingebrigtsen <lingebri@sunscipw.cern.ch>
+
+ * gnus.el (gnus-summary-next-article): `SPC' `n' didn't work under
+ XEmacs.
+
+Tue Aug 22 22:20:06 1995 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * custom.el (custom-default): Add support for calculated
+ defaults values.
+ * gnus-cus.el: Use it.
+
+Tue Aug 22 21:05:42 1995 Lars Magne Ingebrigtsen <lingebri@sunsci4.cern.ch>
+
+ * gnus.el: 0.99.18 is released.
+
Tue Aug 22 22:20:06 1995 Per Abrahamsen <abraham@dina.kvl.dk>
* custom.el (custom-forward-field): Allow negative args.
(hidden . nil)
(face . custom-default-face)
(data . nil)
+ (calculate . nil)
(default . __uninitialized__)))
"Alist of default properties for type symbols.
The format is `((SYMBOL (PROPERTY . VALUE)... )... )'.")
(defun custom-default (custom)
"Extract `default' from CUSTOM."
- (custom-property custom 'default))
-
+ (let ((value (custom-property custom 'calculate)))
+ (if value
+ (eval value)
+ (custom-property custom 'default))))
+
(defun custom-data (custom)
"Extract the `data' from CUSTOM."
(custom-property custom 'data))
(defun custom-default-factory-reset (field)
"Reset content of editing FIELD to `default'."
- (let ((default (custom-default (custom-field-custom field))))
+ (let* ((custom (custom-field-custom field))
+ (default (car (custom-import custom (custom-default custom)))))
(or (eq default custom-nil)
(custom-field-accept field default nil))))
(custom-buffer-create "*Customize*")
(custom-reset-all))
-(defun custom-buffer-create (name &optional custom types set get)
+(defun custom-buffer-create (name &optional custom types set get save)
"Create a customization buffer named NAME.
If the optional argument CUSTOM is non-nil, use that as the custom declaration.
If the optional argument TYPES is non-nil, use that as the local types.
If the optional argument SET is non-nil, use that to set external data.
-If the optional argument GET is non-nil, use that to get external data."
+If the optional argument GET is non-nil, use that to get external data.
+If the optional argument SAVE is non-nil, use that for saving changes."
(switch-to-buffer name)
(buffer-disable-undo (current-buffer))
(custom-mode)
()
(make-local-variable 'custom-external)
(setq custom-external get))
+ (if (null save)
+ ()
+ (make-local-variable 'custom-save)
+ (setq custom-save save))
(let ((inhibit-point-motion-hooks t)
(before-change-functions nil)
(after-change-functions nil))
(custom-help-button 'custom-field-factory-reset)
(custom-help-button 'custom-field-reset)
(custom-help-button 'custom-field-apply)
+ (custom-help-button 'custom-save-and-exit)
(custom-help-button 'custom-toggle-documentation)
(custom-help-insert "\nClick mouse-2 on any button to activate it.\n")
(custom-text-insert "\n")
(define-key custom-mode-map "\C-c\M-\C-z" 'custom-factory-reset-all)
(define-key custom-mode-map "\C-c\C-a" 'custom-field-apply)
(define-key custom-mode-map "\C-c\M-\C-a" 'custom-apply-all)
+ (define-key custom-mode-map "\C-c\C-c" 'custom-save-and-exit)
(define-key custom-mode-map "\C-c\C-d" 'custom-toggle-documentation))
;; C-c keymap ideas: C-a field-beginning, C-e field-end, C-f
(setq after-change-functions '(custom-after-change))
(if (not (fboundp 'make-local-hook))
;; Emacs 19.28 and earlier.
- (add-hook 'post-command-hook 'custom-post-command nil)
+ (add-hook 'post-command-hook
+ (lambda ()
+ (if (eq major-mode 'custom-mode)
+ (custom-post-command))))
;; Emacs 19.29.
(make-local-hook 'post-command-hook)
(add-hook 'post-command-hook 'custom-post-command nil t)))
(not (y-or-n-p "Discard all changes? "))
(error "Reset aborted")))
(let ((all custom-name-fields)
- name field custom default)
+ field)
(while all
(setq field (cdr (car all))
- custom (custom-field-custom field)
- default (custom-default custom)
all (cdr all))
(custom-field-factory-reset field))))
(interactive (list (or (get-text-property (point) 'custom-field)
(get-text-property (point) 'custom-tag))))
(if (arrayp field)
- (let* ((custom (custom-field-custom field))
- (default (custom-default custom)))
- (save-excursion
- (funcall (custom-property custom 'factory-reset) field)))))
+ (save-excursion
+ (funcall (custom-property (custom-field-custom field) 'factory-reset)
+ field))))
(defun custom-apply-all ()
"Apply any changes since the last reset in all fields."
(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 "@")
+ (save-excursion
+ (funcall custom-save))
+ (kill-buffer (current-buffer)))
+
(defun custom-save ()
"Save customization information."
(interactive)
(let* ((field (cdr (car new)))
(custom (custom-field-custom field))
(value (custom-field-original field))
- (default (custom-default custom))
+ (default (car (custom-import custom (custom-default custom))))
(name (car (car new))))
(setq new (cdr new))
(custom-assert '(eq name (custom-name custom)))
;; Last field containing point.
(make-variable-buffer-local 'custom-field-last)
-
(defun custom-post-command ()
;; Keep track of their active field.
- (if (not (eq major-mode 'custom-mode))
- (message "Aargh! Why is custom-post-command called here?")
- ()
- (let ((field (custom-field-property (point))))
- (if (eq field custom-field-last)
- (if (memq field custom-field-changed)
- (custom-field-resize field))
- (custom-field-parse custom-field-last)
- (if custom-field-last
- (custom-field-leave custom-field-last))
- (if field
- (custom-field-enter field))
- (setq custom-field-last field)))
- (set-buffer-modified-p (or custom-modified-list custom-field-changed))))
+ (custom-assert '(eq major-mode 'custom-mode))
+ (let ((field (custom-field-property (point))))
+ (if (eq field custom-field-last)
+ (if (memq field custom-field-changed)
+ (custom-field-resize field))
+ (custom-field-parse custom-field-last)
+ (if custom-field-last
+ (custom-field-leave custom-field-last))
+ (if field
+ (custom-field-enter field))
+ (setq custom-field-last field))
+ (set-buffer-modified-p (or custom-modified-list
+ custom-field-changed))))
(defvar custom-field-was nil)
;; The custom data before the change.
"Highlight cited text.
Each citation in the article will be highlighted with a different face.
The faces are taken from `gnus-cite-face-list'.
-Attribution lines are highlighted with the sameface as the
+Attribution lines are highlighted with the same face as the
corresponding citation merged with `gnus-cite-attribution-face'.
Text is considered cited if at least `gnus-cite-minimum-match-count'
(defun gnus-article-hide-citation-maybe (&optional force)
"Hide cited text that has an attribution line.
This will do nothing unless at least `gnus-cite-hide-percentage'
-percent ans at least `gnus-cite-hide-absolute' lines of the body is
+percent and at least `gnus-cite-hide-absolute' lines of the body is
cited text with attributions. When called interactively, these two
variables are ignored.
See also the documentation for `gnus-article-highlight-citation'."
;;; Code:
(require 'custom)
+(require 'gnus-ems)
+
+;; The following is just helper functions and data, not ment to be set
+;; by the user.
+(defun gnus-make-face (color)
+ ;; Create entry for face with COLOR.
+ (custom-face-lookup color nil nil nil nil nil))
+
+(defvar gnus-face-light-name-list
+ '("light blue" "light cyan" "light yellow" "light pink"
+ "pale green" "beige" "orange" "magenta" "violet" "medium purple"
+ "turquoise"))
+
+(defvar gnus-face-dark-name-list
+ '("dark salmon" "firebrick"
+ "dark green" "dark orange" "dark khaki" "dark violet"
+ "dark turquoise"))
(custom-declare '()
'((tag . "GNUS")
You can choose between one of the predefined browsers, or `Other'.")
(name . gnus-button-url)
(default . w3-fetch)
+ (calculate . (cond ((boundp 'browse-url-browser-function)
+ browse-url-browser-function)
+ ((fboundp 'w3-fetch)
+ 'w3-fetch)
+ ((eq window-system 'x)
+ 'gnus-netscape-open-url)))
(type . choice)
(data ((tag . "W3")
(type . const)
The line beneath the mouse pointer will be highlighted with this
face.")
(name . gnus-mouse-face)
- (default . highlight)
+ (calculate . (if (boundp 'gnus-mouse-face)
+ gnus-mouse-face
+ 'highlight))
(type . face))
((tag . "Article Display")
(doc . "Controls how the article buffer will look.
alone.")
(name . gnus-header-face-alist)
(type . list)
- (default . (("" bold italic)))
+ (calculate . (cond ((not (eq gnus-display-type 'color))
+ '(("" bold italic)))
+ ((eq gnus-background-mode 'dark)
+ (list (list "From" nil
+ (custom-face-lookup
+ "SkyeBlue" 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))))))
(data ((type . repeat)
(header . nil)
(data (type . list)
This should make it easier to see who wrote what.")
(name . gnus-cite-face-list)
(type . list)
- (default . (italic))
+ (calculate . (cond ((not (eq gnus-display-type 'color))
+ '(italic))
+ ((eq gnus-background-mode 'dark)
+ (mapcar 'gnus-make-face
+ gnus-face-light-name-list))
+ (t
+ (mapcar 'gnus-make-face
+ gnus-face-dark-name-list))))
(data ((type . repeat)
(header . nil)
(data (type . face)
mark: The article's mark.")
(name . gnus-summary-highlight)
(type . list)
- (default . (((> score default) . bold)
- ((< score default) . italic)))
+ (calculate . (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)))))
(data ((type . repeat)
(header . nil)
(data (type . pair)
;; beginners.
)))))
-(defun gnus-custom-import-swap-alist (custom alist)
- ;; Swap key and value in CUSTOM ALIST.
- (let ((swap (mapcar (lambda (e) (cons (cdr e) (car e))) alist)))
- (funcall (custom-super custom 'import) custom swap)))
+;(defun gnus-custom-import-swap-alist (custom alist)
+; ;; Swap key and value in CUSTOM ALIST.
+; (let ((swap (mapcar (lambda (e) (cons (cdr e) (car e))) alist)))
+; (funcall (custom-super custom 'import) custom swap)))
-(defun gnus-custom-export-swap-alist (custom alist)
- ;; Swap key and value in CUSTOM ALIST.
- (let ((swap (mapcar (lambda (e) (cons (cdr e) (car e))) alist)))
- (funcall (custom-super custom 'export) custom swap)))
+;(defun gnus-custom-export-swap-alist (custom alist)
+; ;; Swap key and value in CUSTOM ALIST.
+; (let ((swap (mapcar (lambda (e) (cons (cdr e) (car e))) alist)))
+; (funcall (custom-super custom 'export) custom swap)))
(provide 'gnus-cus)
;;; gnus-cus.el ends here
-
-
(custom-buffer-create "*Score Edit*" gnus-score-custom-data
gnus-score-custom-type-properties
'gnus-score-custom-set
- 'gnus-score-custom-get))
+ 'gnus-score-custom-get
+ 'gnus-score-custom-save))
(make-local-variable 'gnus-score-custom-file)
(setq gnus-score-custom-file (expand-file-name "SCORE" "~/News"))
(make-local-variable 'gnus-score-alist)
(defvar gnus-background-mode
(let ((bg-resource
- (x-get-resource ".backgroundMode" "BackgroundMode" 'string))
+ (condition-case ()
+ (x-get-resource ".backgroundMode" "BackgroundMode" 'string)
+ (error nil)))
(params (frame-parameters)))
(cond (bg-resource (intern (downcase bg-resource)))
((and (assq 'background-color params)
(header-number header)))
(let ((gnus-override-method gnus-refer-article-method)
(gnus-ancient-mark gnus-read-mark)
- (tmp-buf (get-buffer-create " *gnus refer"))
(tmp-point (window-start
(get-buffer-window gnus-article-buffer)))
- number)
+ number tmp-buf)
(and gnus-refer-article-method
- (or (gnus-server-opened gnus-refer-article-method)
- (gnus-open-server gnus-refer-article-method)))
+ (gnus-check-server gnus-refer-article-method))
;; Save the old article buffer.
(save-excursion
- (set-buffer tmp-buf)
- (buffer-disable-undo (current-buffer))
- (insert-buffer-substring gnus-article-buffer))
+ (set-buffer gnus-article-buffer)
+ (gnus-kill-buffer " *temp Article*")
+ (setq tmp-buf (rename-buffer " *temp Article*")))
(prog1
(if (gnus-article-prepare
message-id nil (gnus-read-header message-id))
message-id)
;; We restore the old article buffer.
(save-excursion
- (set-buffer gnus-article-buffer)
+ (kill-buffer gnus-article-buffer)
+ (set-buffer tmp-buf)
+ (rename-buffer gnus-article-buffer)
(let ((buffer-read-only nil))
- (insert-buffer-substring tmp-buf)
(and tmp-point
(set-window-start (get-buffer-window (current-buffer))
- tmp-point))))
- nil)
- (kill-buffer tmp-buf)))))))
+ tmp-point)))))))))))
(defun gnus-summary-insert-pseudos-xemacs (pslist &optional not-view)
(let ((buffer-read-only nil)
(save-excursion
(set-buffer (get-buffer-create "*Score Help*"))
(buffer-disable-undo (current-buffer))
+ (delete-windows-on (current-buffer))
(erase-buffer)
(insert string ":\n\n")
(let ((max -1)
(require 'mail-utils)
(require 'timezone)
(require 'nnheader)
+(require 'gnus-cus)
;; Site dependent variables. These variables should be defined in
;; paths.el.
If, for instance, you want to read your mail with the nnml backend,
you could set this variable:
-(setq gnus-secondary-select-methods '((nnml \"\"))")
+(setq gnus-secondary-select-methods '((nnml \"\")))")
(defvar gnus-secondary-servers nil
"*List of NNTP servers that the user can choose between interactively.
instead.")
(defvar gnus-group-faq-directory
- "/anonymous@rtfm.mit.edu:/pub/usenet-by-group/"
+ "/ftp@mirrors.aol.com:/pub/rtfm/usenet/"
"*Directory where the group FAQs are stored.
This will most commonly be on a remote machine, and the file will be
fetched by ange-ftp.
("nndoc" none prompt-address)
("nnbabyl" mail respool)
("nnkiboze" post virtual)
- ("nnsoup" post)
+ ;;("nnsoup" post)
("nnfolder" mail respool))
"An alist of valid select methods.
The first element of each list lists should be a string with the name
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "(ding) Gnus v0.99.18"
+(defconst gnus-version "(ding) Gnus v0.99.19"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
(autoload 'rmail-show-message "rmail")
;; gnus-soup
- (autoload 'gnus-group-brew-soup "gnus-soup" nil t)
- (autoload 'gnus-brew-soup "gnus-soup" nil t)
- (autoload 'gnus-soup-add-article "gnus-soup" nil t)
- (autoload 'gnus-soup-send-replies "gnus-soup" nil t)
- (autoload 'gnus-soup-save-areas "gnus-soup" nil t)
- (autoload 'gnus-soup-pack-packet "gnus-soup" nil t)
- (autoload 'nnsoup-pack-replies "nnsoup" nil t)
+ ;;(autoload 'gnus-group-brew-soup "gnus-soup" nil t)
+ ;;(autoload 'gnus-brew-soup "gnus-soup" nil t)
+ ;;(autoload 'gnus-soup-add-article "gnus-soup" nil t)
+ ;;(autoload 'gnus-soup-send-replies "gnus-soup" nil t)
+ ;;(autoload 'gnus-soup-save-areas "gnus-soup" nil t)
+ ;;(autoload 'gnus-soup-pack-packet "gnus-soup" nil t)
+ ;;(autoload 'nnsoup-pack-replies "nnsoup" nil t)
;; gnus-mh
(autoload 'gnus-mail-reply-using-mhe "gnus-mh")
(define-key gnus-group-group-map "V" 'gnus-group-make-empty-virtual)
(define-key gnus-group-group-map "D" 'gnus-group-enter-directory)
(define-key gnus-group-group-map "f" 'gnus-group-make-doc-group)
- (define-key gnus-group-group-map "sb" 'gnus-group-brew-soup)
- (define-key gnus-group-group-map "sw" 'gnus-soup-save-areas)
- (define-key gnus-group-group-map "ss" 'gnus-soup-send-replies)
- (define-key gnus-group-group-map "sp" 'gnus-soup-pack-packet)
- (define-key gnus-group-group-map "sr" 'nnsoup-pack-replies)
+ ;;(define-key gnus-group-group-map "sb" 'gnus-group-brew-soup)
+ ;;(define-key gnus-group-group-map "sw" 'gnus-soup-save-areas)
+ ;;(define-key gnus-group-group-map "ss" 'gnus-soup-send-replies)
+ ;;(define-key gnus-group-group-map "sp" 'gnus-soup-pack-packet)
+ ;;(define-key gnus-group-group-map "sr" 'nnsoup-pack-replies)
(define-prefix-command 'gnus-group-list-map)
(define-key gnus-group-mode-map "A" 'gnus-group-list-map)
(progn
(switch-to-buffer gnus-group-buffer)
(gnus-group-get-new-news))
+
(gnus-clear-system)
+
+ (gnus-group-setup-buffer)
+ (let ((buffer-read-only nil))
+ (erase-buffer)
+ (if (not gnus-inhibit-startup-message)
+ (progn
+ (gnus-group-startup-message)
+ (sit-for 0))))
+
(nnheader-init-server-buffer)
(gnus-read-init-file)
did-connect)
(unwind-protect
(progn
- (gnus-group-setup-buffer)
(or dont-connect
(setq did-connect
(gnus-start-news-server (and arg (not level))))))
(and gnus-use-dribble-file (gnus-dribble-read-file))
(gnus-summary-make-display-table)
- (let ((buffer-read-only nil))
- (erase-buffer)
- (if (not gnus-inhibit-startup-message)
- (progn
- (gnus-group-startup-message)
- (sit-for 0))))
(gnus-setup-news nil level)
(gnus-group-list-groups level)
(gnus-configure-windows 'group))))))
(defun gnus-unload ()
"Unload all Gnus features."
(interactive)
+ (or (boundp 'load-history)
+ (error "Sorry, `gnus-unload' is not implemented in this Emacs version."))
(let ((history load-history)
feature)
(while history
(unload-feature feature 'force))
(setq history (cdr history)))))
-
-
(defun gnus-group-startup-message (&optional x y)
"Insert startup message in current buffer."
;; Insert the message.
(or
(gnus-group-default-level nil t)
gnus-group-default-list-level
- level-subscribed))))
+ gnus-level-subscribed))))
(or level
(setq level (car gnus-group-list-mode)
unread (cdr gnus-group-list-mode)))
;; If not, we try the first unread, if that is wanted.
((and subject
gnus-auto-select-same
- (gnus-summary-first-unread-article))
+ (or (gnus-summary-first-unread-article)
+ (eq (gnus-summary-article-mark) gnus-canceled-mark)))
+ (gnus-summary-position-cursor)
(gnus-message 6 "Wrapped"))
;; Try to get next/previous article not displayed in this group.
((and gnus-auto-extend-newsgroup
(t
(or (assoc 'quit-config (gnus-find-method-for-group gnus-newsgroup-name))
(gnus-summary-jump-to-group gnus-newsgroup-name))
- (let ((cmd (aref (this-command-keys) 0))
+ (let ((cmd last-command-char)
(group
(if (eq gnus-keep-same-level 'best)
(gnus-summary-best-group gnus-newsgroup-name)
;; it back.
(select-window (get-buffer-window (current-buffer)))
;; Keep just the event type of CMD.
- (and (listp cmd) (setq cmd (car cmd)))
+ ;(and (listp cmd) (setq cmd (car cmd)))
;; Select next unread newsgroup automagically.
(cond
((not gnus-auto-select-next)
(defun gnus-summary-raise-thread (&optional score)
"Raise the score of the articles in the current thread with SCORE."
(interactive "P")
- (setq score (1- (gnus-score-default score)))
+ (setq score (gnus-score-default score))
(let (e)
(save-excursion
(let ((level (gnus-summary-thread-level)))
(search-forward "\n\n")
(narrow-to-region (point-min) (point))
(goto-char (point-min))
- (if (or (not gnus-article-x-face-command)
- (and (not force)
- (or (not gnus-article-x-face-too-ugly)
- (string-match gnus-article-x-face-too-ugly
- (mail-fetch-field "from"))))
- (progn
- (goto-char (point-min))
- (not (re-search-forward "^X-Face: " nil t))))
+ (if (not (and gnus-article-x-face-command
+ (or force
+ (and gnus-article-x-face-too-ugly
+ (not (string-match gnus-article-x-face-too-ugly
+ (mail-fetch-field "from")))))
+ (progn
+ (goto-char (point-min))
+ (re-search-forward "^X-Face: " nil t))))
nil
(let ((beg (point))
(end (1- (re-search-forward "^\\($\\|[^ \t]\\)" nil t))))
gnus-secondary-select-methods)))
(groups 0)
(new-date (current-time-string))
- hashtb group new-newsgroups got-new method)
- ;; Go thorugh both primary and secondary select methods and
+ (hashtb (gnus-make-hashtable 100))
+ group new-newsgroups got-new method)
+ ;; Go through both primary and secondary select methods and
;; request new newsgroups.
(while methods
(setq method (gnus-server-get-method nil (car methods)))
(save-excursion
(setq got-new t)
(set-buffer nntp-server-buffer)
- (or hashtb (setq hashtb (gnus-make-hashtable
- (count-lines (point-min) (point-max)))))
;; Enter all the new groups in a hashtable.
(gnus-active-to-gnus-format method hashtb 'ignore)))
(setq methods (cdr methods)))
(mapatoms
(lambda (group-sym)
(setq group (symbol-name group-sym))
- (if (or (gnus-gethash group gnus-newsrc-hashtb)
+ (if (or (null group)
+ (null (symbol-value group-sym))
+ (gnus-gethash group gnus-newsrc-hashtb)
(member group gnus-zombie-list)
(member group gnus-killed-list))
;; The group is already known.
(setq info (cdr entry))
(setq num (car entry)))
(setq active (gnus-gethash group gnus-active-hashtb))
- (setq num (if active (- (1+ (cdr active)) (car active)) t))
+ (setq num
+ (if active (- (1+ (cdr active)) (car active)) t))
;; Check whether the group is foreign. If so, the
;; foreign select method has to be entered into the
;; info.
(progn (beginning-of-line) (point)))
(point))))))
(symbol
+ (or (boundp symbol) (set symbol nil))
;; It was a group name.
(setq subscribed (= (following-char) ?:)
group (symbol-name symbol)
(goto-char (point-min))
(re-search-forward delim nil t)
- (setq start (match-beginning 0))
+ (setq start (match-end 0))
(while (re-search-forward delim nil t)
(setq end (match-end 0))
(or (search-backward "\nX-Gnus-Newsgroup: " start t)
\input texinfo @c -*-texinfo-*-
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename gnus.info
-@settitle (ding) Gnus 0.84 Manual
+@settitle (ding) Gnus 0.99.18 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
low levels (eg. 1 or 2).
If you want to play with the level variables, you should show some care.
-Set them once, and don't touch them ever again.
+Set them once, and don't touch them ever again. Better yet, don't touch
+them at all unless you know exactly what you're doing.
@vindex gnus-level-default-unsubscribed
@vindex gnus-level-default-subscribed