From 45f225ef9c444d29bef83d2b63c8cbd9746d8aaa Mon Sep 17 00:00:00 2001 From: morioka Date: Thu, 27 Nov 1997 08:14:55 +0000 Subject: [PATCH] Quassia Gnus v0.14. --- lisp/ChangeLog | 114 +++++++++++++++++++++++++++++++++++++ lisp/gnus-agent.el | 10 ++-- lisp/gnus-art.el | 2 +- lisp/gnus-cus.el | 6 +- lisp/gnus-mh.el | 13 ++--- lisp/gnus-msg.el | 10 ++-- lisp/gnus-score.el | 127 +++++++++++++++++++++-------------------- lisp/gnus-start.el | 14 +++-- lisp/gnus-sum.el | 36 +++++++----- lisp/gnus-topic.el | 3 +- lisp/gnus-util.el | 2 +- lisp/gnus-win.el | 2 +- lisp/gnus.el | 2 +- lisp/lpath.el | 5 +- lisp/message.el | 34 ++++++----- lisp/nnfolder.el | 21 +++++-- lisp/nnmail.el | 11 +++- lisp/nnml.el | 4 -- lisp/nntp.el | 11 ++-- lisp/pop3.el | 6 +- texi/Makefile | 56 ++++++++++++++++++ texi/gnus.texi | 160 ++++++++++++++++++++++++++++++---------------------- 22 files changed, 446 insertions(+), 203 deletions(-) create mode 100644 texi/dir diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6c3c820..ea2bf8f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -2,6 +2,120 @@ Sat Sep 13 21:21:38 1997 Lars Magne Ingebrigtsen * gnus.el: Quassia Gnus v0.1 is released. +Sun Nov 23 16:21:41 1997 Lars Magne Ingebrigtsen + + * gnus.el: Quassia Gnus v0.14 is released. + +Sun Nov 23 14:04:07 1997 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-read-descriptions-file): Make sure Mule is + bound. And gagged. + + * message.el (message-send-mail-with-mh): Use + `mh-new-draft-name'. + + * nnfolder.el (nnfolder-read-folder): Save new buffers. + + * gnus-sum.el (gnus-summary-make-menu-bar): Removed "write to + file". + + * gnus-util.el (gnus-byte-code): Use indirect-function. + + * nntp.el (nntp-open-telnet): Also accept 201. + + * gnus-sum.el (gnus-summary-reparent-thread): Update thread. + + * gnus-score.el (gnus-all-score-files): Don't do anything unless + GROUP. + + * nnmail.el (nnmail-split-it): Save-excursion. + (nnmail-group-pathname): Translate file chars. + +Sun Nov 23 13:41:10 1997 Gunnar Horrigmo + + * gnus-sum.el (gnus-summary-exit): Don't skip if group + disappeared. + +Sun Nov 23 13:32:55 1997 Lars Magne Ingebrigtsen + + * nnfolder.el (nnfolder-normalize-buffer): New function. + (nnfolder-save-mail): Use it. + (nnfolder-request-replace-article): Ditto. + +1997-11-19 Per Abrahamsen + + * message.el (message-header-lines): New widget. + (message-default-headers): Use it. + (message-default-mail-headers): Use it. + (message-default-news-headers): Use it. + +Sun Nov 23 12:44:38 1997 Lars Magne Ingebrigtsen + + * gnus-win.el (gnus-remove-some-windows): Also delete dead summary + windows. + + * gnus-score.el (gnus-score-adaptive): Check whether functions are + bound. + +Sun Nov 23 12:15:00 1997 Hallvard B. Furuseth + + * gnus-sum.el (gnus-summary-limit-include-thread): Interactive + fix. + +Sun Nov 23 07:06:58 1997 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-reparent-thread): Insert Message-ID in + proper place. + +Sat Nov 22 18:30:33 1997 Lars Magne Ingebrigtsen + + * gnus-cus.el (gnus-group-parameters): Add visible. + +Sat Nov 22 18:19:39 1997 Kim-Minh Kaplan + + * message.el (message-setup): Add a newline, if necessary. + +Sat Nov 22 18:04:34 1997 Lars Magne Ingebrigtsen + + * gnus-mh.el (gnus-summary-save-in-folder): Fix for default. + +Sat Nov 22 18:01:26 1997 Didier Verna + + * gnus-sum.el (gnus-summary-remove-bookmark): Interactive spec. + +Mon Nov 17 23:50:51 1997 Lars Magne Ingebrigtsen + + * gnus-art.el (article-display-x-face): Fold case. + +Thu Nov 13 22:57:23 1997 Kenichi Handa + + * gnus/gnus-start.el (gnus-read-descriptions-file): Decode + description if necessary. + + * gnus/nntp.el (nntp-coding-system-for-read): Set default value to + binary. + (nntp-coding-system-for-write): Likewise. + +Thu Nov 13 22:30:19 1997 seokchan lee + + * message.el (message-ignored-supersedes-headers): Ignore more + headers. + +Thu Nov 13 22:28:13 1997 Lars Magne Ingebrigtsen + + * message.el (message-separator-face): Lightened up. + (message-header-other-face): Ditto. + +Thu Nov 13 22:22:11 1997 jari aalto + + * nnmail.el (nnmail-process-mmdf-mail-format): Pop to buffer. + +Thu Nov 13 22:09:39 1997 Lars Magne Ingebrigtsen + + * gnus-start.el (gnus-start-draft-setup): Always create group. + + * gnus-agent.el (gnus-agent-fetch-headers): Translate file chars. + Thu Nov 6 20:43:05 1997 Lars Magne Ingebrigtsen * gnus.el: Quassia Gnus v0.13 is released. diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index 853c0ca..5673020 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -608,9 +608,10 @@ the actual number of articles toggled is returned." (if (not (re-search-forward "^Message-ID: *<\\([^>\n]+\\)>" nil t)) (setq id "No-Message-ID-in-article") (setq id (buffer-substring (match-beginning 1) (match-end 1)))) - (write-region (point-min) (point-max) - (concat dir (number-to-string (caar pos))) - nil 'silent) + (let ((coding-system-for-write gnus-agent-article-file-coding-system)) + (write-region (point-min) (point-max) + (concat dir (number-to-string (caar pos))) + nil 'silent)) (when (setq elem (assq (caar pos) gnus-agent-article-alist)) (setcdr elem t)) (gnus-agent-enter-history @@ -686,7 +687,8 @@ the actual number of articles toggled is returned." (when (file-exists-p (setq file (gnus-agent-article-name ".overview" group))) (gnus-agent-braid-nov group articles file)) - (gnus-make-directory (file-name-directory file)) + (gnus-make-directory (nnheader-translate-file-chars + (file-name-directory file))) (write-region (point-min) (point-max) file nil 'silent) (gnus-agent-save-alist group articles nil)) t)))) diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index c5875af..feb804a 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -878,7 +878,7 @@ characters to translate to." (when (process-status "article-x-face") (delete-process "article-x-face")) (let ((inhibit-point-motion-hooks t) - (case-fold-search nil) + (case-fold-search t) from) (save-restriction (nnheader-narrow-to-headers) diff --git a/lisp/gnus-cus.el b/lisp/gnus-cus.el index 37c0bf9..dfbff5d 100644 --- a/lisp/gnus-cus.el +++ b/lisp/gnus-cus.el @@ -155,7 +155,11 @@ Which articles to display on entering the group. unread and ticked articles.") (comment (string :tag "Comment") "\ -An arbitrary comment on the group.")) +An arbitrary comment on the group.") + + (visible (const :tag "Permanently visible" t) "\ +Always display this group, even when there are no unread articles +in it..")) "Alist of valid group parameters. Each entry has the form (NAME TYPE DOC), where NAME is the parameter diff --git a/lisp/gnus-mh.el b/lisp/gnus-mh.el index 0cf74b1..ce15a01 100644 --- a/lisp/gnus-mh.el +++ b/lisp/gnus-mh.el @@ -55,15 +55,10 @@ Optional argument FOLDER specifies folder name." ;; Thanks to yuki@flab.Fujitsu.JUNET and ohm@kaba.junet. (mh-find-path) (let ((folder - (cond ((and (eq folder 'default) - gnus-newsgroup-last-folder) - gnus-newsgroup-last-folder) - (folder folder) - (t (mh-prompt-for-folder - "Save article in" - (funcall gnus-folder-save-name gnus-newsgroup-name - gnus-current-headers gnus-newsgroup-last-folder) - t)))) + (gnus-read-save-file-name + "Save %s in file:" folder + gnus-folder-save-name gnus-newsgroup-name + gnus-current-headers 'gnus-newsgroup-last-folder)) (errbuf (get-buffer-create " *Gnus rcvstore*")) ;; Find the rcvstore program. (exec-path (if mh-lib (cons mh-lib exec-path) exec-path))) diff --git a/lisp/gnus-msg.el b/lisp/gnus-msg.el index 4ed6e7c..3e9593c 100644 --- a/lisp/gnus-msg.el +++ b/lisp/gnus-msg.el @@ -840,6 +840,7 @@ The source file has to be in the Emacs load path." "gnus-art.el" "gnus-start.el" "gnus-async.el" "gnus-msg.el" "gnus-score.el" "gnus-win.el" "gnus-topic.el" "nnmail.el" "message.el")) + (point (point)) file expr olist sym) (gnus-message 4 "Please wait while we snoop your variables...") (sit-for 0) @@ -885,11 +886,12 @@ The source file has to be in the Emacs load path." (insert ";; (makeunbound '" (symbol-name (car olist)) ")\n")) (setq olist (cdr olist))) (insert "\n\n") - ;; Remove any null chars - they seem to cause trouble for some + ;; Remove any control chars - they seem to cause trouble for some ;; mailers. (Byte-compiled output from the stuff above.) - (goto-char (point-min)) - (while (re-search-forward "[\000\200]" nil t) - (replace-match "" t t)))) + (goto-char point) + (while (re-search-forward "[\000-\010\013-\037\200-\237]" nil t) + (replace-match (format "\\%03o" (string-to-char (match-string 0))) + t t)))) ;;; Treatment of rejected articles. ;;; Bounced mail. diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index 5888d1a..02511f1 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -2088,7 +2088,7 @@ SCORE is the score to add." (alist malist) (date (current-time-string)) (data gnus-newsgroup-data) - elem headers match) + elem headers match func) ;; First we transform the adaptive rule alist into something ;; that's faster to process. (while malist @@ -2097,19 +2097,21 @@ SCORE is the score to add." (setcar elem (symbol-value (car elem)))) (setq elem (cdr elem)) (while elem - (setcdr (car elem) - (cons (if (eq (caar elem) 'followup) - "references" - (symbol-name (caar elem))) - (cdar elem))) - (setcar (car elem) - `(lambda (h) - (,(intern + (when (fboundp + (setq func + (intern (concat "mail-header-" (if (eq (caar elem) 'followup) "message-id" - (downcase (symbol-name (caar elem)))))) - h))) + (downcase (symbol-name (caar elem)))))))) + (setcdr (car elem) + (cons (if (eq (caar elem) 'followup) + "references" + (symbol-name (caar elem))) + (cdar elem))) + (setcar (car elem) + `(lambda (h) + (,func h)))) (setq elem (cdr elem))) (setq malist (cdr malist))) ;; Then we score away. @@ -2597,57 +2599,58 @@ The list is determined from the variable gnus-score-file-alist." (let ((funcs gnus-score-find-score-files-function) (group (or group gnus-newsgroup-name)) score-files) - ;; Make sure funcs is a list. - (and funcs - (not (listp funcs)) - (setq funcs (list funcs))) - ;; Get the initial score files for this group. - (when funcs - (setq score-files (nreverse (gnus-score-find-alist group)))) - ;; Add any home adapt files. - (let ((home (gnus-home-score-file group t))) - (when home - (push home score-files) - (setq gnus-newsgroup-adaptive-score-file home))) - ;; Check whether there is a `adapt-file' group parameter. - (let ((param-file (gnus-group-find-parameter group 'adapt-file))) - (when param-file - (push param-file score-files) - (setq gnus-newsgroup-adaptive-score-file param-file))) - ;; Go through all the functions for finding score files (or actual - ;; scores) and add them to a list. - (while funcs - (when (gnus-functionp (car funcs)) - (setq score-files - (nconc score-files (nreverse (funcall (car funcs) group))))) - (setq funcs (cdr funcs))) - ;; Add any home score files. - (let ((home (gnus-home-score-file group))) - (when home - (push home score-files))) - ;; Check whether there is a `score-file' group parameter. - (let ((param-file (gnus-group-find-parameter group 'score-file))) - (when param-file - (push param-file score-files))) - ;; Expand all files names. - (let ((files score-files)) - (while files - (when (stringp (car files)) - (setcar files (expand-file-name - (car files) gnus-kill-files-directory))) - (pop files))) - (setq score-files (nreverse score-files)) - ;; Remove any duplicate score files. - (while (and score-files - (member (car score-files) (cdr score-files))) - (pop score-files)) - (let ((files score-files)) - (while (cdr files) - (if (member (cadr files) (cddr files)) - (setcdr files (cddr files)) - (pop files)))) - ;; Do the scoring if there are any score files for this group. - score-files)) + (when group + ;; Make sure funcs is a list. + (and funcs + (not (listp funcs)) + (setq funcs (list funcs))) + ;; Get the initial score files for this group. + (when funcs + (setq score-files (nreverse (gnus-score-find-alist group)))) + ;; Add any home adapt files. + (let ((home (gnus-home-score-file group t))) + (when home + (push home score-files) + (setq gnus-newsgroup-adaptive-score-file home))) + ;; Check whether there is a `adapt-file' group parameter. + (let ((param-file (gnus-group-find-parameter group 'adapt-file))) + (when param-file + (push param-file score-files) + (setq gnus-newsgroup-adaptive-score-file param-file))) + ;; Go through all the functions for finding score files (or actual + ;; scores) and add them to a list. + (while funcs + (when (gnus-functionp (car funcs)) + (setq score-files + (nconc score-files (nreverse (funcall (car funcs) group))))) + (setq funcs (cdr funcs))) + ;; Add any home score files. + (let ((home (gnus-home-score-file group))) + (when home + (push home score-files))) + ;; Check whether there is a `score-file' group parameter. + (let ((param-file (gnus-group-find-parameter group 'score-file))) + (when param-file + (push param-file score-files))) + ;; Expand all files names. + (let ((files score-files)) + (while files + (when (stringp (car files)) + (setcar files (expand-file-name + (car files) gnus-kill-files-directory))) + (pop files))) + (setq score-files (nreverse score-files)) + ;; Remove any duplicate score files. + (while (and score-files + (member (car score-files) (cdr score-files))) + (pop score-files)) + (let ((files score-files)) + (while (cdr files) + (if (member (cadr files) (cddr files)) + (setcdr files (cddr files)) + (pop files)))) + ;; Do the scoring if there are any score files for this group. + score-files))) (defun gnus-possibly-score-headers (&optional trace) "Do scoring if scoring is required." diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 6110061..62c4245 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -706,8 +706,8 @@ prompt the user for the name of an NNTP server to use." (defun gnus-start-draft-setup () "Make sure the draft group exists." + (gnus-request-create-group "drafts" '(nndraft "")) (unless (gnus-gethash "nndraft:drafts" gnus-newsrc-hashtb) - (gnus-request-create-group "drafts" '(nndraft "")) (let ((gnus-level-default-subscribed 1)) (gnus-subscribe-group "nndraft:drafts" nil '(nndraft ""))) (gnus-group-set-parameter @@ -1063,7 +1063,6 @@ for new groups." hashtb)) (when new-newsgroups (gnus-subscribe-hierarchical-interactive new-newsgroups))) - ;; Suggested by Per Abrahamsen . (when (> groups 0) (gnus-message 6 "%d new newsgroup%s arrived." groups (if (> groups 1) "s have" " has"))) @@ -2476,8 +2475,15 @@ If FORCE is non-nil, the .newsrc file is read." (skip-chars-forward " \t") ;; ... which leads to this line being effectively ignored. (when (symbolp group) - (set group (buffer-substring - (point) (progn (end-of-line) (point))))) + (let ((str (buffer-substring + (point) (progn (end-of-line) (point)))) + (coding + (and (boundp enable-multibyte-characters) + enable-multibyte-characters + (gnus-mule-get-coding-system (symbol-name group))))) + (if coding + (setq str (decode-coding-string str (car coding)))) + (set group str))) (forward-line 1)))) (gnus-message 5 "Reading descriptions file...done") t)))) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index dcaa169..152225f 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -572,7 +572,8 @@ Some functions you can use are `+', `max', or `min'." :type 'function) (defcustom gnus-summary-expunge-below nil - "All articles that have a score less than this variable will be expunged." + "All articles that have a score less than this variable will be expunged. +This variable is local to the summary buffers." :group 'gnus-score-default :type '(choice (const :tag "off" nil) integer)) @@ -580,7 +581,9 @@ Some functions you can use are `+', `max', or `min'." (defcustom gnus-thread-expunge-below nil "All threads that have a total score less than this variable will be expunged. See `gnus-thread-score-function' for en explanation of what a -\"thread score\" is." +\"thread score\" is. + +This variable is local to the summary buffers." :group 'gnus-treading :group 'gnus-score-default :type '(choice (const :tag "off" nil) @@ -1600,7 +1603,6 @@ increase the score of each group you read." ["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] - ["Write to file" gnus-summary-write-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] @@ -2690,6 +2692,8 @@ If NO-DISPLAY, don't generate a summary buffer." (and gnus-show-threads gnus-thread-hide-subtree (gnus-summary-hide-all-threads)) + (when kill-buffer + (gnus-kill-or-deaden-summary kill-buffer)) ;; Show first unread article if requested. (if (and (not no-article) (not no-display) @@ -2704,9 +2708,7 @@ If NO-DISPLAY, don't generate a summary buffer." (goto-char (point-min)) (gnus-summary-position-point) (gnus-set-mode-line 'summary) - (gnus-configure-windows 'summary 'force)) - (when kill-buffer - (gnus-kill-or-deaden-summary kill-buffer)) + (gnus-configure-windows 'summary 'force)) (when (get-buffer-window gnus-group-buffer t) ;; Gotta use windows, because recenter does weird stuff if ;; the current buffer ain't the displayed window. @@ -5053,7 +5055,10 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil." (unless quit-config (gnus-group-jump-to-group group)) (run-hooks 'gnus-summary-exit-hook) - (unless quit-config + (unless (or quit-config + ;; If this group has disappeared from the summary + ;; buffer, don't skip forwards. + (not (string= group (gnus-group-group-name)))) (gnus-group-next-unread-group 1)) (setq group-point (point)) (if temporary @@ -5982,7 +5987,7 @@ Returns how many articles were removed." (defun gnus-summary-limit-include-thread (id) "Display all the hidden articles that in the current thread." - (interactive (mail-header-id (gnus-summary-article-header))) + (interactive (list (mail-header-id (gnus-summary-article-header)))) (gnus-set-global-variables) (let ((articles (gnus-articles-in-thread (gnus-id-to-thread (gnus-root-id id))))) @@ -7487,7 +7492,7 @@ the actual number of articles marked is returned." (defun gnus-summary-set-bookmark (article) "Set a bookmark in current article." - (interactive (gnus-summary-article-number)) + (interactive (list (gnus-summary-article-number))) (gnus-set-global-variables) (when (or (not (get-buffer gnus-article-buffer)) (not gnus-current-article) @@ -7517,7 +7522,7 @@ the actual number of articles marked is returned." (defun gnus-summary-remove-bookmark (article) "Remove the bookmark from the current article." - (interactive (gnus-summary-article-number)) + (interactive (list (gnus-summary-article-number))) (gnus-set-global-variables) ;; Remove old bookmark, if one exists. (let ((old (assq article gnus-newsgroup-bookmarks))) @@ -8118,8 +8123,12 @@ is non-nil or the Subject: of both articles are the same." (nnheader-temp-write nil (insert buf) (goto-char (point-min)) - (if (search-forward-regexp "^References: " nil t) - (insert message-id " " ) + (if (re-search-forward "^References: " nil t) + (progn + (re-search-forward "^[^ \t]" nil t) + (forward-line -1) + (end-of-line) + (insert " " message-id)) (insert "References: " message-id "\n")) (unless (gnus-request-replace-article current-article (car gnus-article-current) @@ -8127,6 +8136,7 @@ is non-nil or the Subject: of both articles are the same." (error "Couldn't replace article")))) (set-buffer gnus-summary-buffer) (gnus-summary-unmark-all-processable) + (gnus-summary-update-article current-article) (gnus-summary-rethread-current) (gnus-message 3 "Article %d is now the child of article %d" current-article parent-article))))) @@ -8710,7 +8720,7 @@ save those articles instead." (defun gnus-summary-edit-global-kill (article) "Edit the \"global\" kill file." - (interactive (gnus-summary-article-number)) + (interactive (list (gnus-summary-article-number))) (gnus-set-global-variables) (gnus-group-edit-global-kill article)) diff --git a/lisp/gnus-topic.el b/lisp/gnus-topic.el index 379471f..719e466 100644 --- a/lisp/gnus-topic.el +++ b/lisp/gnus-topic.el @@ -512,7 +512,8 @@ articles in the topic and its subtopics." (indentation (make-string (* gnus-topic-indent-level level) ? )) (total-number-of-articles unread) (number-of-groups (length entries)) - (active-topic (eq gnus-topic-alist gnus-topic-active-alist))) + (active-topic (eq gnus-topic-alist gnus-topic-active-alist)) + gnus-tmp-header) (beginning-of-line) ;; Insert the text. (gnus-add-text-properties diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 638fb59..d9cb72c 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -145,7 +145,7 @@ (defun gnus-byte-code (func) "Return a form that can be `eval'ed based on FUNC." - (let ((fval (symbol-function func))) + (let ((fval (indirect-function func))) (if (byte-code-function-p fval) (let ((flist (append fval nil))) (setcar flist 'byte-code) diff --git a/lisp/gnus-win.el b/lisp/gnus-win.el index d66d0c5..0384de0 100644 --- a/lisp/gnus-win.el +++ b/lisp/gnus-win.el @@ -534,7 +534,7 @@ should have point." (walk-windows (lambda (win) (let ((buf (window-buffer win))) - (when (string-match "^\\*Summary" (buffer-name buf)) + (when (string-match "^\\*\\(Dead \\)?Summary" (buffer-name buf)) (push buf bufs) (pop-to-buffer buf) (when (or (not lowest) diff --git a/lisp/gnus.el b/lisp/gnus.el index d27aec0..a15f9a3 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -244,7 +244,7 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "0.13" +(defconst gnus-version-number "0.14" "Version number for this version of Gnus.") (defconst gnus-version (format "Quassia Gnus v%s" gnus-version-number) diff --git a/lisp/lpath.el b/lisp/lpath.el index a713ff8..bbf43f6 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -28,13 +28,14 @@ set-face-stipple mail-abbrevs-setup char-int make-char-table set-char-table-range font-create-object x-color-values widget-make-intangible error-message-string - w3-form-encode-xwfu md5)) + w3-form-encode-xwfu md5 gnus-mule-get-coding-system + decode-coding-string)) (maybe-bind '(global-face-data mark-active transient-mark-mode mouse-selection-click-count mouse-selection-click-count-buffer buffer-display-table font-lock-defaults user-full-name user-login-name gnus-newsgroup-name gnus-article-x-face-too-ugly - mail-mode-hook))) + mail-mode-hook enable-multibyte-characters))) (defvar browse-url-browser-function nil) (maybe-fbind '(color-instance-rgb-components make-color-instance color-instance-name specifier-instance diff --git a/lisp/message.el b/lisp/message.el index 3ae0254..fff5498 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -211,7 +211,7 @@ included. Organization, Lines and X-Mailer are optional." :group 'message-headers :type 'regexp) -(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:" +(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\||X-Trace:\\|X-Complaints-To:\\|Return-Path:\\|^Supersedes:" "*Header lines matching this regexp will be deleted before posting. It's best to delete old Path and Date headers before posting to avoid any confusion." @@ -537,25 +537,30 @@ If stringp, use this; if non-nil, use no host name (user name only)." (defvar message-postpone-actions nil "A list of actions to be performed after postponing a message.") +(define-widget 'message-header-lines 'text + "All header lines must be LFD terminated." + :valid-regexp "^\\'" + :error "All header lines must be newline terminated") + (defcustom message-default-headers "" "*A string containing header lines to be inserted in outgoing messages. It is inserted before you edit the message, so you can edit or delete these lines." :group 'message-headers - :type 'string) + :type 'message-header-lines) (defcustom message-default-mail-headers "" "*A string of header lines to be inserted in outgoing mails." :group 'message-headers :group 'message-mail - :type 'string) + :type 'message-header-lines) (defcustom message-default-news-headers "" "*A string of header lines to be inserted in outgoing news articles." :group 'message-headers :group 'message-news - :type 'string) + :type 'message-header-lines) ;; Note: could use /usr/ucb/mail instead of sendmail; ;; options -t, and -v if not interactive. @@ -683,7 +688,7 @@ Defaults to `text-mode-abbrev-table'.") (defface message-header-other-face '((((class color) (background dark)) - (:foreground "red4")) + (:foreground "#b00000")) (((class color) (background light)) (:foreground "steel blue")) @@ -719,7 +724,7 @@ Defaults to `text-mode-abbrev-table'.") (defface message-separator-face '((((class color) (background dark)) - (:foreground "blue4")) + (:foreground "blue3")) (((class color) (background light)) (:foreground "brown")) @@ -897,6 +902,7 @@ The cdr of ech entry is a function for applying the face to a region.") (eval-and-compile (autoload 'message-setup-toolbar "messagexmas") + (autoload 'mh-new-draft-name "mh-comp") (autoload 'mh-send-letter "mh-comp") (autoload 'gnus-point-at-eol "gnus-util") (autoload 'gnus-point-at-bol "gnus-util") @@ -1537,7 +1543,7 @@ message-elide-elipsis) will be inserted where the text was killed." (defun message-caesar-buffer-body (&optional rotnum) "Caesar rotates all letters in the current buffer by 13 places. -Used to encode/decode possibly offensive messages (commonly in net.jokes). +Used to encode/decode possiblyun offensive messages (commonly in net.jokes). With prefix arg, specifies the number of places to rotate each letter forward. Mail and USENET news headers are not rotated." (interactive (if current-prefix-arg @@ -2022,10 +2028,7 @@ to find out how to use this." (defun message-send-mail-with-mh () "Send the prepared message buffer with mh." (let ((mh-previous-window-config nil) - (name (make-temp-name - (concat (file-name-as-directory - (expand-file-name message-autosave-directory)) - "msg.")))) + (name (mh-new-draft-name))) (setq buffer-file-name name) ;; MH wants to generate these headers itself. (when message-mh-deletable-headers @@ -3025,7 +3028,8 @@ Headers already prepared in the buffer are not modified." headers) (delete-region (point) (progn (forward-line -1) (point))) (when message-default-headers - (insert message-default-headers)) + (insert message-default-headers) + (or (bolp) (insert ?\n))) (put-text-property (point) (progn @@ -3035,7 +3039,8 @@ Headers already prepared in the buffer are not modified." (forward-line -1) (when (message-news-p) (when message-default-news-headers - (insert message-default-news-headers)) + (insert message-default-news-headers) + (or (bolp) (insert ?\n))) (when message-generate-headers-first (message-generate-headers (delq 'Lines @@ -3043,7 +3048,8 @@ Headers already prepared in the buffer are not modified." (copy-sequence message-required-news-headers)))))) (when (message-mail-p) (when message-default-mail-headers - (insert message-default-mail-headers)) + (insert message-default-mail-headers) + (or (bolp) (insert ?\n))) (when message-generate-headers-first (message-generate-headers (delq 'Lines diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index d6dad19..7baa8d3 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -403,6 +403,8 @@ time saver for large mailboxes.") (deffoo nnfolder-request-replace-article (article group buffer) (nnfolder-possibly-change-group group) (save-excursion + (set-buffer buffer) + (nnfolder-normalize-buffer) (set-buffer nnfolder-current-buffer) (goto-char (point-min)) (if (not (search-forward (nnfolder-article-string article) nil t)) @@ -590,16 +592,19 @@ time saver for large mailboxes.") (obuf (current-buffer))) (nnfolder-possibly-change-folder (car group-art)) (let ((buffer-read-only nil)) - (goto-char (point-max)) - (unless (eolp) - (insert "\n")) - (unless (bobp) - (insert "\n")) + (nnfolder-normalize-buffer) (insert-buffer-substring obuf beg end))))) ;; Did we save it anywhere? save-list)) +(defun nnfolder-normalize-buffer () + "Make sure there are two newlines at the end of the buffer." + (goto-char (point-max)) + (skip-chars-backward "\n") + (delete-region (point) (point-max)) + (insert "\n\n")) + (defun nnfolder-insert-newsgroup-line (group-art) (save-excursion (goto-char (point-min)) @@ -653,7 +658,11 @@ time saver for large mailboxes.") (if (equal (cadr (assoc group nnfolder-scantime-alist)) (nth 5 (file-attributes file))) ;; This looks up-to-date, so we don't do any scanning. - buffer + (if (file-exists-p file) + buffer + (push (list group buffer) nnfolder-buffer-alist) + (set-buffer-modified-p t) + (save-buffer)) ;; Parse the damn thing. (save-excursion (nnmail-activate 'nnfolder) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index e7ed8eb..978a8bd 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -503,6 +503,7 @@ parameter. It should return nil, `warn' or `delete'." "Make pathname for GROUP." (concat (let ((dir (file-name-as-directory (expand-file-name dir)))) + (setq group (nnheader-translate-file-chars group)) ;; If this directory exists, we use it directly. (if (or nnmail-use-long-file-names (file-directory-p (concat dir group))) @@ -875,7 +876,9 @@ is a spool. If not using procmail, return GROUP." (if (not (and (re-search-forward "^From " nil t) (goto-char (match-beginning 0)))) ;; Possibly wrong format? - (error "Error, unknown mail format! (Possibly corrupted.)") + (progn + (pop-to-buffer (current-buffer)) + (error "Error, unknown mail format! (Possibly corrupted.)")) ;; Carry on until the bitter end. (while (not (eobp)) (setq start (point) @@ -960,7 +963,9 @@ is a spool. If not using procmail, return GROUP." (if (not (and (re-search-forward delim nil t) (forward-line 1))) ;; Possibly wrong format? - (error "Error, unknown mail format! (Possibly corrupted.)") + (progn + (pop-to-buffer (current-buffer)) + (error "Error, unknown mail format! (Possibly corrupted.)")) ;; Carry on until the bitter end. (while (not (eobp)) (setq start (point)) @@ -1246,7 +1251,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation." ;; Builtin : operation. ((eq (car split) ':) - (nnmail-split-it (eval (cdr split)))) + (nnmail-split-it (save-excursion (eval (cdr split))))) ;; Check the cache for the regexp for this split. ;; FIX FIX FIX could avoid calling assq twice here diff --git a/lisp/nnml.el b/lisp/nnml.el index cee1e1f..fd74ec0 100644 --- a/lisp/nnml.el +++ b/lisp/nnml.el @@ -98,8 +98,6 @@ all. This may very well take some time.") (let ((file nil) (number (length sequence)) (count 0) - ;; 1997/8/12 by MORIOKA Tomohiko - ;; for XEmacs/mule. (pathname-coding-system 'binary) beg article) (if (stringp (car sequence)) @@ -560,8 +558,6 @@ all. This may very well take some time.") (if (not group) t (let ((pathname (nnmail-group-pathname group nnml-directory)) - ;; 1997/8/14 by MORIOKA Tomohiko - ;; for XEmacs/mule. (pathname-coding-system 'binary)) (when (not (equal pathname nnml-current-directory)) (setq nnml-current-directory pathname diff --git a/lisp/nntp.el b/lisp/nntp.el index 2971db9..67dde9c 100644 --- a/lisp/nntp.el +++ b/lisp/nntp.el @@ -153,8 +153,11 @@ server there that you can connect to. See also `nntp-open-connection-function'" (defvoo nntp-warn-about-losing-connection t "*If non-nil, beep when a server closes connection.") -(defvoo nntp-coding-system-for-read nil - "*coding-system for read from NNTP.") +(defvoo nntp-coding-system-for-read 'binary + "*Coding system to read from NNTP.") + +(defvoo nntp-coding-system-for-write 'binary + "*Coding system to write to NNTP.") @@ -1080,7 +1083,7 @@ This function is supposed to be called from `nntp-server-opened-hook'." (nntp-wait-for-string "bash\\|\$ *\r?$\\|> *\r?") (process-send-string proc (concat (mapconcat 'identity nntp-telnet-parameters " ") "\n")) - (nntp-wait-for-string "^\r*200") + (nntp-wait-for-string "^\r*20[01]") (beginning-of-line) (delete-region (point-min) (point)) (process-send-string proc "\^]") @@ -1106,7 +1109,7 @@ This function is supposed to be called from `nntp-server-opened-hook'." (mapconcat 'identity nntp-rlogin-parameters " "))))) (set-buffer buffer) - (nntp-wait-for-string "^\r*200") + (nntp-wait-for-string "^\r*20[01]") (beginning-of-line) (delete-region (point-min) (point)) proc)) diff --git a/lisp/pop3.el b/lisp/pop3.el index 750c2b6..944e2f1 100644 --- a/lisp/pop3.el +++ b/lisp/pop3.el @@ -60,6 +60,9 @@ values are 'apop.") "Timestamp returned when initially connected to the POP server. Used for APOP authentication.") +(defvar pop3-movemail-file-coding-system nil + "Crashbox made by pop3-movemail with this coding system.") + (defvar pop3-read-point nil) (defvar pop3-debug nil) @@ -91,7 +94,8 @@ Used for APOP authentication.") (pop3-retr process n crashbuf) (save-excursion (set-buffer crashbuf) - (append-to-file (point-min) (point-max) crashbox) + (let ((coding-system-for-write pop3-movemail-file-coding-system)) + (append-to-file (point-min) (point-max) crashbox)) (set-buffer (process-buffer process)) (while (> (buffer-size) 5000) (goto-char (point-min)) diff --git a/texi/Makefile b/texi/Makefile index 95b19ee..ad0c8d1 100644 --- a/texi/Makefile +++ b/texi/Makefile @@ -109,6 +109,62 @@ install: cp gnus gnus-[0-9] gnus-[0-9][0-9] $(INFODIR) cp message $(INFODIR) + +tmps: + if [ ! -e tmp ]; then mkdir tmp; fi + make screens + make herdss + make etcs + make piconss + make xfaces + make smiley + make miscs + +herdss: + cd herds ; for i in new-herd-[0-9]*.gif; do echo $$i; giftopnm $$i | pnmcrop -white | pnmmargin -white 9 | pnmscale 2 | pnmconvol convol5.pnm | ppmtopgm | pnmdepth 255 | pnmtops -width 100 -height 100 -noturn > ../tmp/`basename $$i .gif`.ps; done + cd herds ; giftopnm new-herd-section.gif | pnmscale 4 | pnmconvol convol11.pnm | ppmtopgm | pnmdepth 255 | pnmtops -noturn -width 100 -height 100 > ../tmp/new-herd-section.ps + + +screens: + cd screen ; for i in *.gif; do echo $$i; giftopnm $$i | pnmmargin -black 1 | ppmtopgm | pnmtops -width 100 -height 100 -noturn > ../tmp/`basename $$i .gif`.ps; done + +miscs: + giftopnm misc/larsi.gif | ppmtopgm | pnmtops -noturn > tmp/larsi.ps + tifftopnm misc/eseptember.tif | pnmscale 4 | ppmtopgm | pnmtops -noturn -width 100 -height 100 > tmp/september.ps + tifftopnm misc/fseptember.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn -width 100 -height 100 > tmp/fseptember.ps + tifftopnm misc/fred.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn -width 100 -height 100 > tmp/fred.ps + tifftopnm misc/ered.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn -width 100 -height 100 > tmp/red.ps + +etcs: + cd etc; for i in gnus-*.xpm; do echo $$i; xpmtoppm $$i | ppmtopgm | pnmdepth 255 | pnmtops -noturn > ../tmp/`basename $$i .xpm`.ps; done + +piconss: + cd picons; for i in *.xbm; do echo $$i; xbmtopbm $$i | pnmtops -noturn > ../tmp/picons-`basename $$i .xbm`.ps; done + cd picons; for i in *.gif; do echo $$i; giftopnm $$i | ppmtopgm | pnmtops -noturn > ../tmp/picons-`basename $$i .gif`.ps; done + for i in tmp/picons-*.ps; do echo "\\gnuspicon{$$i}"; done > picons.tex + +xfaces: + cd xface; for i in *.gif; do echo $$i; giftopnm $$i | ppmtopgm | pnmtops -noturn > ../tmp/xface-`basename $$i .gif`.ps; done + for i in tmp/xface-*.ps; do \ + if [ -n "$$a" ]; then a=""; echo "{$$i}"; else \ + a="h"; echo -n "\\gnusxface{$$i}"; fi done > xface.tex; \ + if [ -n "$$a" ]; then echo "{$$i}" >> xface.tex; fi + +smiley: + cd smilies; tifftopnm BigFace.tif | ppmtopgm | pnmtops > ../tmp/BigFace.ps + cd smilies; for i in *.xpm; do echo $$i; sed "s/none/#FFFFFF/" $$i | xpmtoppm | ppmtopgm | pnmdepth 255 | pnmtops > ../tmp/smiley-`basename $$i .xpm`.ps; done + for i in tmp/smiley-*.ps; do \ + if [ -n "$$a" ]; then a=""; echo "{$$i}"; else \ + a="h"; echo -n "\\gnussmiley{$$i}"; fi done > smiley.tex; \ + if [ -n "$$a" ]; then echo "{$$i}" >> smiley.tex; fi + +pspackage: + tar czvf pspackage.tar.gz gnus-faq.texi gnus.texi herds misc pagestyle.sty picons pixidx.sty postamble.tex ps screen smilies splitindex texi2latex.el xface Makefile README etc + +complete: + make texi2latex.elc + make tmps + make pss tmps: if [ ! -d /local/tmp/larsi ]; then mkdir /local/tmp/larsi; fi make screens diff --git a/texi/dir b/texi/dir new file mode 100644 index 0000000..e69de29 diff --git a/texi/gnus.texi b/texi/gnus.texi index 3840edc..dc4704a 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -17,6 +17,7 @@ \usepackage{pagestyle} \usepackage{epsfig} \usepackage{bembo} +\usepackage{pixidx} \makeindex \begin{document} @@ -34,7 +35,7 @@ \newcommand{\gnustt}[1]{{\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}} \newcommand{\gnuscode}[1]{\gnustt{#1}} -\newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\fontfamily{pcr}\fontsize{10pt}{10}\selectfont #1}''} +\newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}''} \newcommand{\gnuslisp}[1]{\gnustt{#1}} \newcommand{\gnuskbd}[1]{`\gnustt{#1}'} \newcommand{\gnusfile}[1]{`\gnustt{#1}'} @@ -59,7 +60,7 @@ \newcommand{\gnusless}{{$<$}} \newcommand{\gnusgreater}{{$>$}} -\newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}} +\newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head.eps,height=1cm}}} \newcommand{\gnusinteresting}{ \marginpar[\mbox{}\hfill\gnushead]{\gnushead} } @@ -102,13 +103,16 @@ } \newcommand{\gnuspicon}[1]{ -\marginpar[\mbox{}\hfill\epsfig{figure=#1,height=1.5cm}]{\epsfig{figure=#1,height=1.5cm}} +\margindex{\epsfig{figure=#1,width=2cm}} } -\newcommand{\gnusxface}[1]{ -\marginpar[\mbox{}\hfill\epsfig{figure=#1,height=1cm}]{\epsfig{figure=#1,height=1cm}} +\newcommand{\gnusxface}[2]{ +\margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}} } +\newcommand{\gnussmiley}[2]{ +\margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}} +} \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1} @@ -175,9 +179,9 @@ { \ifodd\count0 \mbox{} \hfill -\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}} \else -\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}} \hfill \mbox{} \fi } @@ -199,9 +203,9 @@ { \ifodd\count0 \mbox{} \hfill -\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}} \else -\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}} \hfill \mbox{} \fi } @@ -223,9 +227,9 @@ { \ifodd\count0 \mbox{} \hfill -\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}} \else -\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}} +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}} \hfill \mbox{} \fi } @@ -249,7 +253,7 @@ \gnustitle{\gnustitlename}\\ \rule{15cm}{1mm}\\ \vfill -\hspace*{0cm}\epsfig{figure=gnus-big-logo.eps,height=15cm} +\hspace*{0cm}\epsfig{figure=ps/gnus-big-logo.eps,height=15cm} \vfill \rule{15cm}{1mm}\\ \gnusauthor{by Lars Magne Ingebrigtsen} @@ -261,7 +265,7 @@ \thispagestyle{empty} -Copyright \copyright{} 1995,96 Free Software Foundation, Inc. +Copyright \copyright{} 1995,96,97 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -6333,9 +6337,7 @@ readable to me. @vindex gnus-article-x-face-too-ugly @iftex @iflatex -\gnusxface{tmp/xface-karlheg.ps} -\gnusxface{tmp/xface-kyle.ps} -\gnusxface{tmp/xface-smb.ps} +\include{xface} @end iflatex @end iftex Look for and display any X-Face headers @@ -11877,7 +11879,8 @@ Default score of an article, which is 0 by default. @vindex gnus-summary-expunge-below Don't display the summary lines of articles that have scores lower than this variable. This is @code{nil} by default, which means that no -articles will be hidden. +articles will be hidden. This variable is local to the summary buffers, +and has to be set from @code{gnus-summary-mode-hook}. @item gnus-score-over-mark @vindex gnus-score-over-mark @@ -14309,18 +14312,7 @@ advantage of that. @iftex @iflatex -\gnuspicon{tmp/picons-att.ps} -\gnuspicon{tmp/picons-berkeley.ps} -\gnuspicon{tmp/picons-caltech.ps} -\gnuspicon{tmp/picons-canada.ps} -\gnuspicon{tmp/picons-cr.ps} -\gnuspicon{tmp/picons-cygnus.ps} -\gnuspicon{tmp/picons-gov.ps} -\gnuspicon{tmp/picons-mit.ps} -\gnuspicon{tmp/picons-nasa.ps} -\gnuspicon{tmp/picons-qmw.ps} -\gnuspicon{tmp/picons-rms.ps} -\gnuspicon{tmp/picons-ruu.ps} +\include{picons} @end iflatex @end iftex @@ -14342,6 +14334,12 @@ over your shoulder as you read news. What are Picons? To quote directly from the Picons Web site: +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + @quotation @dfn{Picons} is short for ``personal icons''. They're small, constrained images used to represent users and domains on the net, @@ -14393,6 +14391,12 @@ To enable displaying picons, simply put the following line in your @node Hard Picons @subsubsection Hard Picons +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + Gnus can display picons for you as you enter and leave groups and articles. It knows how to interact with three sections of the picons database. Namely, it can display the picons newsgroup pictures, @@ -14417,20 +14421,6 @@ displayed. @end table -@iftex -@iflatex -\gnuspicon{tmp/picons-seuu.ps} -\gnuspicon{tmp/picons-stanford.ps} -\gnuspicon{tmp/picons-sun.ps} -\gnuspicon{tmp/picons-ubc.ps} -\gnuspicon{tmp/picons-ufl.ps} -\gnuspicon{tmp/picons-uio.ps} -\gnuspicon{tmp/picons-unit.ps} -\gnuspicon{tmp/picons-upenn.ps} -\gnuspicon{tmp/picons-wesleyan.ps} -@end iflatex -@end iftex - Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your window configuration for you to include the @code{picons} buffer. @@ -14472,6 +14462,12 @@ for the append flag of @code{add-hook}: @node Picon Configuration @subsubsection Picon Configuration +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + The following variables offer further control over how things are done, where things are located, and other useless stuff you really don't need to worry about. @@ -14511,6 +14507,12 @@ gnus-picons-x-face-file-name)} Names a temporary file to store the @code{X-Face} bitmap in. Defaults to @code{(format "/tmp/picon-xface.%s.xbm" (user-login-name))}. +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + @item gnus-picons-buffer @vindex gnus-picons-buffer The name of the buffer that @code{picons} points to. Defaults to @@ -14522,6 +14524,13 @@ The name of the buffer that @code{picons} points to. Defaults to @subsection Smileys @cindex smileys +@iftex +@iflatex +\gnusfig{-3cm}{0.5cm}{\epsfig{figure=tmp/BigFace.ps,height=20cm}} +\input{smiley} +@end iflatex +@end iftex + @dfn{Smiley} is a package separate from Gnus, but since Gnus is currently the only package that uses Smiley, it is documented here. @@ -14547,29 +14556,6 @@ and so on), and @code{smiley-nosey-regexp-alist} (which matches The alist used is specified by the @code{smiley-regexp-alist} variable, which defaults to the value of @code{smiley-deformed-regexp-alist}. -Here's the default value of @code{smiley-smiley-regexp-alist}: - -@lisp -(setq smiley-nosey-regexp-alist - '(("\\(:-+[<«]+\\)\\W" 1 "FaceAngry.xpm") - ("\\(:-+\\]+\\)\\W" 1 "FaceGoofy.xpm") - ("\\(:-+D\\)\\W" 1 "FaceGrinning.xpm") - ("\\(:-+[@}»]+\\)\\W" 1 "FaceHappy.xpm") - ("\\(:-*)+\\)\\W" 1 "FaceHappy.xpm") - ("\\(:-+[/\\\"]+\\)\\W" 1 "FaceIronic.xpm") - ("\\([8|]-+[|Oo%]\\)\\W" 1 "FaceKOed.xpm") - ("\\([:|]-+#+\\)\\W" 1 "FaceNyah.xpm") - ("\\(:-+[(@{]+\\)\\W" 1 "FaceSad.xpm") - ("\\(:-+[Oo\*]\\)\\W" 1 "FaceStartled.xpm") - ("\\(:-+|\\)\\W" 1 "FaceStraight.xpm") - ("\\(:-+p\\)\\W" 1 "FaceTalking.xpm") - ("\\(:-+d\\)\\W" 1 "FaceTasty.xpm") - ("\\(;-+[>)@}»]+\\)\\W" 1 "FaceWinking.xpm") - ("\\(:-+[Vvµ]\\)\\W" 1 "FaceWry.xpm") - ("\\(][:8B]-[)>]\\)\\W" 1 "FaceDevilish.xpm") - ("\\([:|]-+P\\)\\W" 1 "FaceYukky.xpm"))) -@end lisp - The first item in each element is the regexp to be matched; the second element is the regexp match group that is to be replaced by the picture; and the third element is the name of the file to be displayed. @@ -14611,6 +14597,12 @@ Face used for mouse highlighting over the smiley face. @table @code +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + @item gnus-use-toolbar @vindex gnus-use-toolbar If @code{nil}, don't display toolbars. If non-@code{nil}, it should be @@ -14659,6 +14651,12 @@ Legal values include @code{flame}, @code{pine}, @code{moss}, A glyph displayed in all Gnus mode lines. It is a tiny gnu head by default. +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + @end table @@ -15240,6 +15238,7 @@ Jack Vinson. Also thanks to the following for patches and stuff: +Jari Aalto, Adrian Aichner, Peter Arius, Matt Armstrong, @@ -15280,6 +15279,7 @@ David S. Goldberg, Michelangelo Grigni, D. Hall, Magnus Hammerin, +Kenichi Handa, @c ? Raja R. Harinath, Hisashige Kenji, @c Hisashige Marc Horowitz, @@ -15298,6 +15298,7 @@ Peter Skov Knudsen, Shuhei Kobayashi, @c Kobayashi Thor Kristoffersen, Jens Lautenbacher, +Seokchan Lee, @c ? Carsten Leonhardt, James LewisMoss, Christian Limpach, @@ -15325,6 +15326,7 @@ Stephen Peters, Ulrich Pfeifer, John McClary Prevost, Colin Rafferty, +Lars Balker Rasmussen, Bart Robinson, Jason Rumney, Jay Sachs, @@ -15353,7 +15355,9 @@ Philippe Troin, James Troup, Enami Tsugutomo, @c ? Aaron M. Ucko, +Didier Verna, Jan Vroonhof, +Stefan Waldherr, Barry A. Warsaw, Christoph Wedler, Joe Wells, @@ -15506,6 +15510,12 @@ You can click on buttons instead of using the keyboard @node September Gnus @subsubsection September Gnus +@iftex +@iflatex +\gnusfig{-28cm}{0cm}{\epsfig{figure=tmp/september.ps,height=20cm}} +@end iflatex +@end iftex + New features in Gnus 5.2/5.3: @itemize @bullet @@ -15647,6 +15657,11 @@ Configuration}). @item Mail can be re-scanned by a daemonic process (@pxref{Daemons}). +@iftex +@iflatex +\marginpar[\mbox{}\hfill\epsfig{figure=tmp/fseptember.ps,height=5cm}]{\epsfig{figure=tmp/fseptember.ps,height=5cm}} +@end iflatex +@end iftex @item Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}). @@ -15742,6 +15757,12 @@ Further syntax checking of outgoing articles have been added. New features in Gnus 5.4/5.5: +@iftex +@iflatex +\gnusfig{-5.5cm}{-4cm}{\epsfig{figure=tmp/red.ps,height=20cm}} +@end iflatex +@end iftex + @itemize @bullet @item @@ -15865,7 +15886,12 @@ Groups}). @item Cached articles can be pulled into the groups (@pxref{Summary Generation Commands}). - +@iftex +@iflatex +\marginpar[\mbox{}\hfill\epsfig{figure=tmp/fred.ps,width=3cm}]{\epsfig{figure=tmp/fred.ps,width=3cm}} +@end iflatex +@end iftex + @item Score files are now applied in a more reliable order (@pxref{Score Variables}). -- 1.7.10.4