+Fri Jun 14 06:24:02 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el: Gnus v5.2.17 is released.
+
+Fri Jun 14 05:16:14 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-xmas.el (gnus-xmas-call-region): New function.
+
+ * nnheaderxm.el (nnheader-xmas-find-file-noselect): Simplify.
+
+Fri Jun 14 04:30:30 1996 Steven L. Baur <steve@miranova.com>
+
+ * messagexmas.el (message-xmas-exchange-point-and-mark): New
+ function.
+ (message-xmas-dont-activate-region): New variable.
+
+Fri Jun 14 02:59:30 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el (gnus-summary-next-article): Check for nil cmd.
+
+ * gnus-xmas.el (gnus-xmas-group-startup-message): Use xbm if that
+ is required.
+
+ * messagexmas.el (message-xmas-setup-toolbar): Make sure all
+ buttons are defined.
+
+ * gnus-xmas.el (gnus-summary-mail-toolbar): Add other icons.
+ (gnus-summary-toolbar): Add next/prev/catchup icons.
+
+ * gnus-xmas.el: Use more native functions.
+
+Thu Jun 13 23:40:45 1996 Steven L. Baur <steve@miranova.com>
+
+ * messagexmas.el (message-use-toolbar): Check for toolbar
+ support.
+
+Thu Jun 13 22:35:43 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-score.el (gnus-newsgroup-score-alist): New function.
+
+ * gnus.el (gnus-simplify-buffer-fuzzy): Use folded search.
+
+ * message.el (message-tokenize-header): Respect quotes.
+
+ * gnus.el (gnus-group-kill-group): Mass killing didn't work.
+
+ * gnus-demon.el (gnus-demon-scan-mail): Make sure the server is
+ openable.
+
+Thu Jun 13 02:41:11 1996 Lars Magne Ingebrigtsen <larsi@hler.ifi.uio.no>
+
+ * gnus.el: Gnus v5.2.16 is released.
+
Thu Jun 13 02:28:26 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* nnheader.el (nnheader-insert-nov): Fudge a message-id if
(defun gnus-demon-scan-mail ()
(let ((servers gnus-opened-servers)
server)
- (while servers
- (setq server (car (pop servers)))
+ (while (setq server (car (pop servers)))
(and (gnus-check-backend-function 'request-scan (car server))
+ (or (gnus-server-opened server)
+ (gnus-open-server server))
(gnus-request-scan nil server)))))
(provide 'gnus-demon)
(error "No article on current line")
nil))))
+(defun gnus-newsgroup-score-alist ()
+ (or
+ (let ((param-file (gnus-group-get-parameter
+ gnus-newsgroup-name 'score-file)))
+ (when param-file
+ (gnus-score-load param-file)))
+ (gnus-score-load
+ (gnus-score-file-name gnus-newsgroup-name)))
+ gnus-score-alist)
+
(defsubst gnus-score-get (symbol &optional alist)
;; Get SYMBOL's definition in ALIST.
(cdr (assoc symbol
(or alist
gnus-score-alist
- (progn
- (gnus-score-load
- (gnus-score-file-name gnus-newsgroup-name))
- gnus-score-alist)))))
+ (gnus-newsgroup-score-alist)))))
(defun gnus-summary-score-entry
(header match type score date &optional prompt silent)
(let* ((alist
(or alist
gnus-score-alist
- (progn
- (gnus-score-load (gnus-score-file-name gnus-newsgroup-name))
- gnus-score-alist)))
+ (gnus-newsgroup-score-alist)))
(entry (assoc symbol alist)))
(cond ((gnus-score-get 'read-only alist)
;; This is a read-only score file, so we do nothing.
(require 'text-props)
(eval-when-compile (require 'cl))
-(defvar menu-bar-mode t)
+(defvar menu-bar-mode (featurep 'menubar))
(require 'messagexmas)
(defvar gnus-xmas-glyph-directory nil
(defvar gnus-article-treatment-menu)
(defvar gnus-mouse-2)
(defvar standard-display-table)
+(defvar gnus-tree-minimize-window)
(defun gnus-xmas-set-text-properties (start end props &optional buffer)
"You should NEVER use this function. It is ideologically blasphemous.
(defun gnus-xmas-define ()
(setq gnus-mouse-2 [button2])
- (or (memq 'underline (list-faces))
+ (or (memq 'underline (face-list))
(and (fboundp 'make-face)
(funcall (intern "make-face") 'underline)))
;; Must avoid calling set-face-underline-p directly, because it
(defun gnus-byte-code (func)
"Return a form that can be `eval'ed based on FUNC."
(let ((fval (symbol-function func)))
- (if (byte-code-function-p fval)
+ (if (compiled-function-p fval)
(list 'funcall fval)
(cons 'progn (cdr (cdr fval))))))
(let ((logo (and gnus-xmas-glyph-directory
(concat
(file-name-as-directory gnus-xmas-glyph-directory)
- "gnus.xpm")))
+ "gnus."
+ (if (featurep 'xpm) "xpm" "xbm"))))
(xpm-color-symbols
(and (featurep 'xpm)
(append `(("thing" ,(car gnus-xmas-logo-colors))
(put-text-property (match-beginning 0) (match-end 0) 'face 'bold))
(goto-char (point-min))
(let* ((mode-string (gnus-group-set-mode-line)))
- (setq mode-line-buffer-identification
+ (setq modeline-buffer-identification
(list (concat gnus-version (substring (car mode-string) 4))))
(set-buffer-modified-p t))))
;;; The toolbar.
-(defvar gnus-use-toolbar 'default-toolbar
+(defvar gnus-use-toolbar (if (featurep 'toolbar)
+ 'default-toolbar
+ nil)
"*If nil, do not use a toolbar.
If it is non-nil, it must be a toolbar. The five legal values are
`default-toolbar', `top-toolbar', `bottom-toolbar',
(defvar gnus-summary-toolbar
'(
+ [gnus-summary-prev-unread
+ gnus-summary-prev-unread-article t "Prev unread article"]
+ [gnus-summary-next-unread
+ gnus-summary-next-unread-article t "Next unread article"]
[gnus-summary-post-news
gnus-summary-post-news t "Post an article"]
[gnus-summary-followup-with-original
gnus-uu-post-news t "Post an uuencoded article"]
[gnus-summary-cancel-article
gnus-summary-cancel-article t "Cancel article"]
+ [gnus-summary-catchup-and-exit
+ gnus-summary-catchup-and-exit t "Catchup and exit"]
)
"The summary buffer toolbar.")
(defvar gnus-summary-mail-toolbar
- '([gnus-summary-mail-reply gnus-summary-reply t "Reply"]
+ '(
+ [gnus-summary-prev-unread
+ gnus-summary-prev-unread-article t "Prev unread article"]
+ [gnus-summary-next-unread
+ gnus-summary-next-unread-article t "Next unread article"]
+ [gnus-summary-mail-reply gnus-summary-reply t "Reply"]
[gnus-summary-mail-get gnus-mail-get t "Message get"]
[gnus-summary-mail-originate gnus-summary-post-news t "Originate"]
[gnus-summary-mail-save gnus-summary-save-article t "Save"]
[gnus-summary-mail-copy gnus-summary-copy-article t "Copy message"]
- [gnus-summary-mail-delete gnus-summary-delete-article t "Delete message"]
+; [gnus-summary-mail-delete gnus-summary-delete-article t "Delete message"]
[gnus-summary-mail-forward gnus-summary-mail-forward t "Forward message"]
; [gnus-summary-mail-spell gnus-mail-spell t "Spell"]
; [gnus-summary-mail-help gnus-mail-help t "Message help"]
+ [gnus-summary-caesar-message
+ gnus-summary-caesar-message t "Rot 13"]
+ [gnus-uu-decode-uu
+ gnus-uu-decode-uu t "Decode uuencoded articles"]
+ [gnus-summary-save-article-file
+ gnus-summary-save-article-file t "Save article in file"]
+ [gnus-summary-save-article
+ gnus-summary-save-article t "Save article"]
+ [gnus-summary-catchup-and-exit
+ gnus-summary-catchup-and-exit t "Catchup and exit"]
)
"The summary buffer mail toolbar.")
nil
(mail-strip-quoted-names address)))
+(defun gnus-xmas-call-region (command &rest args)
+ (apply
+ 'call-process-region (point-min) (point-max) command t '(t nil) nil
+ args))
+
(defun gnus-xmas-article-display-xface (beg end)
"Display any XFace headers in the current article."
(save-excursion
(let (xface-glyph)
- (when (featurep 'xface)
- (setq xface-glyph
- (make-glyph (vector 'xface :data
- (setq my (concat "X-Face: "
- (buffer-substring beg end))))))
- (goto-char (point-min))
- (re-search-forward "^From:" nil t)
- (beginning-of-line)
- (set-extent-begin-glyph
- (make-extent (point) (point)) xface-glyph)))))
+ (if (featurep 'xface)
+ (setq xface-glyph
+ (make-glyph (vector 'xface :data
+ (concat "X-Face: "
+ (buffer-substring beg end)))))
+ (let ((cur (current-buffer)))
+ (save-excursion
+ (gnus-set-work-buffer)
+ (insert (format "%s" (buffer-substring beg end cur)))
+ (gnus-xmas-call-region "uncompface")
+ (goto-char (point-min))
+ (insert "/* Width=48, Height=48 */\n")
+ (gnus-xmas-call-region "icontopbm")
+ (gnus-xmas-call-region "ppmtoxpm")
+ (setq xface-glyph
+ (make-glyph
+ (vector 'xpm :data (buffer-string )))))))
+ (goto-char (point-min))
+ (re-search-forward "^From:" nil t)
+ (beginning-of-line)
+ (set-extent-begin-glyph
+ (make-extent (point) (point)) xface-glyph))))
;;; gnus-xmas.el ends here
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version-number "5.2.16"
+(defconst gnus-version-number "5.2.17"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
;; all whitespace.
;; Written by Stainless Steel Rat <ratinox@ccs.neu.edu>.
(defun gnus-simplify-buffer-fuzzy ()
- (goto-char (point-min))
- (while (search-forward "\t" nil t)
- (replace-match " " t t))
- (goto-char (point-min))
- (re-search-forward "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *" nil t)
- (goto-char (match-beginning 0))
- (while (or
- (looking-at "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *")
- (looking-at "^[[].*: .*[]]$"))
+ (let ((case-fold-search t))
+ (goto-char (point-min))
+ (while (search-forward "\t" nil t)
+ (replace-match " " t t))
(goto-char (point-min))
- (while (re-search-forward "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *"
- nil t)
+ (re-search-forward "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *" nil t)
+ (goto-char (match-beginning 0))
+ (while (or
+ (looking-at "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *")
+ (looking-at "^[[].*: .*[]]$"))
+ (goto-char (point-min))
+ (while (re-search-forward "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *"
+ nil t)
+ (replace-match "" t t))
+ (goto-char (point-min))
+ (while (re-search-forward "^[[].*: .*[]]$" nil t)
+ (goto-char (match-end 0))
+ (delete-char -1)
+ (delete-region
+ (progn (goto-char (match-beginning 0)))
+ (re-search-forward ":"))))
+ (goto-char (point-min))
+ (while (re-search-forward " *[[{(][^()\n]*[]})] *$" nil t)
(replace-match "" t t))
(goto-char (point-min))
- (while (re-search-forward "^[[].*: .*[]]$" nil t)
- (goto-char (match-end 0))
- (delete-char -1)
- (delete-region
- (progn (goto-char (match-beginning 0)))
- (re-search-forward ":"))))
- (goto-char (point-min))
- (while (re-search-forward " *[[{(][^()\n]*[]})] *$" nil t)
- (replace-match "" t t))
- (goto-char (point-min))
- (while (re-search-forward " +" nil t)
- (replace-match " " t t))
- (goto-char (point-min))
- (while (re-search-forward " $" nil t)
- (replace-match "" t t))
- (goto-char (point-min))
- (while (re-search-forward "^ +" nil t)
- (replace-match "" t t))
- (goto-char (point-min))
- (when gnus-simplify-subject-fuzzy-regexp
- (if (listp gnus-simplify-subject-fuzzy-regexp)
- (let ((list gnus-simplify-subject-fuzzy-regexp))
- (while list
- (goto-char (point-min))
- (while (re-search-forward (car list) nil t)
- (replace-match "" t t))
- (setq list (cdr list))))
- (while (re-search-forward gnus-simplify-subject-fuzzy-regexp nil t)
- (replace-match "" t t)))))
+ (while (re-search-forward " +" nil t)
+ (replace-match " " t t))
+ (goto-char (point-min))
+ (while (re-search-forward " $" nil t)
+ (replace-match "" t t))
+ (goto-char (point-min))
+ (while (re-search-forward "^ +" nil t)
+ (replace-match "" t t))
+ (goto-char (point-min))
+ (when gnus-simplify-subject-fuzzy-regexp
+ (if (listp gnus-simplify-subject-fuzzy-regexp)
+ (let ((list gnus-simplify-subject-fuzzy-regexp))
+ (while list
+ (goto-char (point-min))
+ (while (re-search-forward (car list) nil t)
+ (replace-match "" t t))
+ (setq list (cdr list))))
+ (while (re-search-forward gnus-simplify-subject-fuzzy-regexp nil t)
+ (replace-match "" t t))))))
(defun gnus-simplify-subject-fuzzy (subject)
"Siplify a subject string fuzzily."
(while groups
(gnus-group-remove-mark (setq group (pop groups)))
(gnus-delete-line)
+ (push group gnus-killed-list)
+ (setq gnus-newsrc-alist
+ (delq (assoc group gnus-newsrc-alist)
+ gnus-newsrc-alist))
+ (when gnus-group-change-level-function
+ (funcall gnus-group-change-level-function group 9 3))
(cond
((setq entry (gnus-gethash group gnus-newsrc-hashtb))
(push (cons (car entry) (nth 2 entry))
(select-window (get-buffer-window (current-buffer)))
;; Select next unread newsgroup automagically.
(cond
- ((not gnus-auto-select-next)
+ ((or (not gnus-auto-select-next)
+ (not cmd))
(gnus-message 7 "No more%s articles" (if unread " unread" "")))
((or (eq gnus-auto-select-next 'quietly)
(and (eq gnus-auto-select-next 'slightly-quietly)
(if (and (boundp 'mime::preview/content-list)
mime::preview/content-list)
(let ((pcinfo (car (last mime::preview/content-list))))
- (narrow-to-region
- (funcall (intern "mime::preview-content-info/point-min") pcinfo)
- (point-max))
- t))
+ (condition-case ()
+ (narrow-to-region
+ (funcall (intern "mime::preview-content-info/point-min") pcinfo)
+ (point-max))
+ (error nil))))
(goto-char (point-max))
(when (re-search-backward gnus-signature-separator nil t)
(forward-line 1)
(defun message-tokenize-header (header &optional separator)
"Split HEADER into a list of header elements.
\",\" is used as the separator."
- (let* ((beg 0)
- (separator (or separator ","))
- (regexp
- (format "[ \t]*\\([^%s]+\\)?\\([%s]+\\|\\'\\)" separator separator))
- elems)
- (while (and (string-match regexp header beg)
- (< beg (length header)))
- (when (match-beginning 1)
- (push (match-string 1 header) elems))
- (setq beg (match-end 0)))
- (nreverse elems)))
+ (let ((regexp (format "[%s]+" (or separator ",")))
+ (beg 1)
+ quoted elems)
+ (save-excursion
+ (message-set-work-buffer)
+ (insert header)
+ (goto-char (point-min))
+ (while (not (eobp))
+ (forward-char 1)
+ (cond ((or (eobp)
+ (and (looking-at regexp)
+ (> (point) beg)
+ (not quoted)))
+ (push (buffer-substring beg (point)) elems)
+ (setq beg (match-end 0)))
+ ((= (following-char) ?\")
+ (setq quoted (not quoted)))))
+ (nreverse elems))))
(defun message-fetch-field (header)
"The same as `mail-fetch-field', only remove all newlines."
(delete-windows-on message-reply-buffer t)
(insert-buffer message-reply-buffer)
(funcall message-cite-function)
- (exchange-point-and-mark)
+ (gnus-exchange-point-and-mark)
(unless (bolp)
(insert ?\n))
(unless modified
(car headers) header)))))
;; Check the From header.
(or
- (message-check-element 'from)
(save-excursion
(let* ((case-fold-search t)
(from (message-fetch-field "from")))
(if (eq (following-char) (char-after (- (point) 2)))
(delete-char -2))))))
+(fset 'gnus-exchange-point-and-mark 'exchange-point-and-mark)
+
;; Support for toolbar
(when (string-match "XEmacs\\|Lucid" emacs-version)
(require 'messagexmas))
;;; Code:
+(defvar message-xmas-dont-activate-region nil
+ "If t, don't activate region after yanking.")
+
(defvar message-xmas-glyph-directory nil
"*Directory where Message logos and icons are located.
If this variable is nil, Message will try to locate the directory
automatically.")
-(defvar message-use-toolbar 'default-toolbar
+(defvar message-use-toolbar (if (featurep 'toolbar)
+ 'default-toolbar
+ nil)
"*If nil, do not use a toolbar.
If it is non-nil, it must be a toolbar. The five legal values are
`default-toolbar', `top-toolbar', `bottom-toolbar',
(unless package
(setq message-xmas-glyph-directory dir))
(when dir
- (if (and (not force)
- (boundp (aref (car bar) 0)))
- dir
- (while bar
- (setq icon (aref (car bar) 0)
- name (symbol-name icon)
- bar (cdr bar))
+ (while bar
+ (setq icon (aref (car bar) 0)
+ name (symbol-name icon)
+ bar (cdr bar))
+ (when (or force
+ (not (boundp icon)))
(setq up (concat dir name "-up." xpm))
(setq down (concat dir name "-down." xpm))
(setq disabled (concat dir name "-disabled." xpm))
(set icon nil)
(set icon (toolbar-make-button-list
up (and (file-exists-p down) down)
- (and (file-exists-p disabled) disabled)))))
- dir))))
+ (and (file-exists-p disabled) disabled)))))))
+ dir))
(defun message-setup-toolbar ()
(and message-use-toolbar
(set-specifier (symbol-value message-use-toolbar)
(cons (current-buffer) message-toolbar))))
+(defun message-xmas-exchange-point-and-mark ()
+ "Exchange point and mark, but allow for XEmacs' optional argument."
+ (exchange-point-and-mark message-dont-activate-region))
+
(provide 'messagexmas)
;;; messagexmas.el ends here
(number (nthcdr 10 (file-attributes truename)))
;; Find any buffer for a file which has same truename.
(other (and (not buf)
- (if (fboundp 'find-buffer-visiting)
- (find-buffer-visiting filename)
- (get-file-buffer filename))))
+ (get-file-buffer filename)))
error)
;; Let user know if there is a buffer with the same truename.
(if other
+Fri Jun 14 04:51:17 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * message.texi: Changed name.
+
+ * gnus.texi: Changed name.
+
Wed Jun 12 22:44:25 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
* message.texi (Message Buffers): Addition.
DVIPS=dvips
PERL=perl
-all: gnus.info message.info
+all: gnus message
most: texi2latexi.elc latex latexps
-gnus.info: gnus.texi
+gnus: gnus.texi
$(MAKEINFO) gnus.texi $(INFOSWI)
-message.info: message.texi
+message: message.texi
$(MAKEINFO) message.texi $(INFOSWI)
dvi: gnus.texi
gnus.cind gnus.ilg gnus.ind gnus.kidx gnus.kind gnus.idx
makeinfo:
- makeinfo -o gnus.info gnus.texi
- makeinfo -o message.info message.texi
+ makeinfo -o gnus gnus.texi
+ makeinfo -o message message.texi
texi2latexi.elc:
$(EMACS) -batch -l bytecomp -f batch-byte-recompile-directory
\input texinfo @c -*-texinfo-*-
-@setfilename gnus.info
+@setfilename gnus
@settitle Gnus 5.2 Manual
@synindex fn cp
@synindex vr cp
\input texinfo @c -*-texinfo-*-
-@setfilename message.info
+@setfilename message
@settitle Message Manual
@synindex fn cp
@synindex vr cp