*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 19:34:29 +0000 (19:34 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 19:34:29 +0000 (19:34 +0000)
19 files changed:
lisp/ChangeLog
lisp/custom.el
lisp/dgnushack.el
lisp/gnus-cus.el
lisp/gnus-edit.el
lisp/gnus-msg.el
lisp/gnus-scomo.el
lisp/gnus-score.el
lisp/gnus-srvr.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/message.el
lisp/messagexmas.el
lisp/nnfolder.el
lisp/nnmh.el
lisp/nnvirtual.el
lisp/smiley.el [new file with mode: 0644]
texi/ChangeLog
texi/gnus.texi

index 61d9c52..ca936d5 100644 (file)
@@ -1,3 +1,73 @@
+Sat Jun 15 10:44:16 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * smiley.el: Included in distribution.
+
+Sat Jun 15 06:25:19 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
+
+       * custom.el (custom-xmas-set-text-properties): Ignore string
+       props. 
+
+Sat Jun 15 03:12:58 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * nnvirtual.el (nnvirtual-request-update-mark): Would bug out on
+       pseudos. 
+
+       * gnus.el (gnus-read-descriptions-file): Insert prefix for foreign
+       groups.
+       (gnus-group-describe-group): Just `force' the current group.
+
+Sat Jun 15 02:43:29 1996  Christopher Davis  <ckd@loiosh.kei.com>
+
+       * message.el (message-mode): Have signature separator be paragraph
+       separator.
+
+Sat Jun 15 02:26:08 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * messagexmas.el (message-exchange-point-and-mark): fset to xmas. 
+
+Sat Jun 15 01:59:08 1996  lantz moore  <lantz_moore@ece.uc.edu>
+
+       * gnus-msg.el (gnus-inews-insert-archive-gcc): Don't insert spaces
+       at the end.
+
+Sat Jun 15 01:58:17 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * message.el (message-tokenize-header): Would return empty
+       strings. 
+
+Thu Jun 13 18:26:34 1996  Christoph Wedler  <wedler@fmi.uni-passau.de>
+
+       * gnus-scomo.el (gnus-score-make-menu-bar): Correct Exit function.
+
+       * gnus-score.el (gnus-score-edit-file): Correct message.
+
+       * gnus-srvr.el (gnus-server-make-menu-bar): Use two symbols for
+       two menus.
+
+       * gnus-xmas.el (gnus-xmas-score-menu-add): New function.
+       (gnus-xmas-redefine): Use it.
+       (gnus-xmas-server-menu-add): Add two menus.
+
+       * nnfolder.el (nnfolder-generate-active-file): Use other function
+       to read file (not sure whether this is OK, but now it worked for
+       me, even with VM folders)
+       (nnfolder-read-folder): delete oldactive (never used)
+
+Sat Jun 15 00:45:53 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * messagexmas.el (message-xmas-setup-toolbar): If one icon doesn't
+       exist, report a failure.
+
+       * nnmh.el (nnmh-request-expire-articles): Message errors.
+
+Fri Jun 14 13:06:43 1996  Steven L Baur  <steve@miranova.com>
+
+       * message.el (message-yank-original): Used misnamed wrapper
+       function.
+
+       * messagexmas.el (message-xmas-exchange-point-and-mark): Used
+       misnamed control variable.
+
 Fri Jun 14 06:24:02 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus.el: Gnus v5.2.17 is released.
index d05c9b6..1799215 100644 (file)
@@ -207,7 +207,7 @@ STRING should be given if the last search was by `string-match' on STRING."
           (funcall 'set-face-underline-p 'underline t))))
 
 (defun custom-xmas-set-text-properties (start end props &optional buffer)
-  (if (or (null buffer) (bufferp buffer))
+  (if (null buffer)
       (if props
          (while props
            (custom-put-text-property 
index 6374dff..61d9001 100644 (file)
@@ -49,7 +49,8 @@
        (setq byte-compile-warnings 
              '(free-vars unresolved callargs redefine obsolete))))
       (when (or (not (member file '("gnus-xmas.el" "gnus-picon.el" 
-                                   "messagexmas.el" "nnheaderxm.el")))
+                                   "messagexmas.el" "nnheaderxm.el"
+                                   "smiley.el")))
                xemacs)
        (condition-case ()
            (byte-compile-file file)
index f95628e..12472e2 100644 (file)
@@ -129,8 +129,8 @@ want.")
               '(gnus-article-hide-headers-if-wanted
                gnus-article-hide-boring-headers
                gnus-article-treat-overstrike
-               gnus-article-display-x-face
-               gnus-article-maybe-highlight)
+               gnus-article-maybe-highlight
+               gnus-article-display-x-face)
             '(gnus-article-hide-headers-if-wanted
              gnus-article-hide-boring-headers
              gnus-article-treat-overstrike
index 9da3730..4ac5e67 100644 (file)
@@ -537,7 +537,8 @@ groups matched by the current score file.")
                          'gnus-score-custom-get
                          'gnus-score-custom-save))
   (make-local-variable 'gnus-score-custom-file)
-  (setq gnus-score-custom-file (expand-file-name  "SCORE" gnus-kill-files-directory))
+  (setq gnus-score-custom-file
+       (expand-file-name "SCORE" gnus-kill-files-directory))
   (make-local-variable 'gnus-score-alist)
   (setq gnus-score-alist nil)
   (custom-reset-all))
index 0f65c0d..4652ec5 100644 (file)
@@ -902,7 +902,7 @@ this is a reply."
                        name
                      (gnus-group-prefixed-name 
                       name gnus-message-archive-method)))
-           (insert " "))
+           (if groups (insert " ")))
          (insert "\n"))))))
 
 (defun gnus-summary-send-draft ()
index a808a82..668941c 100644 (file)
@@ -68,7 +68,7 @@ This mode is an extended emacs-lisp mode.
     (easy-menu-define
      gnus-score-menu gnus-score-mode-map ""
      '("Score"
-       ["Exit" gnus-score-edit-done t]
+       ["Exit" gnus-score-edit-exit t]
        ["Insert date" gnus-score-edit-insert-date t]
        ["Format" gnus-score-pretty-print t]))
     (run-hooks 'gnus-score-menu-hook)))
index b0927ef..4c6b6bb 100644 (file)
@@ -819,7 +819,7 @@ SCORE is the score to add."
     (setq gnus-prev-winconf winconf))
   (gnus-message 
    4 (substitute-command-keys 
-      "\\<gnus-score-mode-map>\\[gnus-score-edit-done] to save edits")))
+      "\\<gnus-score-mode-map>\\[gnus-score-edit-exit] to save edits")))
   
 (defun gnus-score-load-file (file)
   ;; Load score file FILE.  Returns a list a retrieved score-alists.
index 6e52170..0ea1f04 100644 (file)
@@ -68,9 +68,9 @@ with some simple extensions.")
 
 (defun gnus-server-make-menu-bar ()
   (gnus-visual-turn-off-edit-menu 'server)
-  (unless (boundp 'gnus-server-menu)
+  (unless (boundp 'gnus-server-server-menu)
     (easy-menu-define
-     gnus-server-menu gnus-server-mode-map ""
+     gnus-server-server-menu gnus-server-mode-map ""
      '("Server"
        ["Add" gnus-server-add-server t]
        ["Browse" gnus-server-read-server t]
@@ -83,7 +83,7 @@ with some simple extensions.")
        ))
 
     (easy-menu-define
-     gnus-server-menu gnus-server-mode-map ""
+     gnus-server-connections-menu gnus-server-mode-map ""
      '("Connections"
        ["Open" gnus-server-open-server t]
        ["Close" gnus-server-close-server t]
index 40e7e4d..f99ec2e 100644 (file)
@@ -305,6 +305,10 @@ call it with the value of the `gnus-data' text property."
   (gnus-xmas-menu-add article
     gnus-article-article-menu gnus-article-treatment-menu))
 
+(defun gnus-xmas-score-menu-add ()
+  (gnus-xmas-menu-add score
+    gnus-score-menu))
+
 (defun gnus-xmas-pick-menu-add ()
   (gnus-xmas-menu-add pick
     gnus-pick-menu))
@@ -319,7 +323,7 @@ call it with the value of the `gnus-data' text property."
 
 (defun gnus-xmas-server-menu-add ()
   (gnus-xmas-menu-add menu
-    gnus-server-menu))
+    gnus-server-server-menu gnus-server-connections-menu))
 
 (defun gnus-xmas-browse-menu-add ()
   (gnus-xmas-menu-add browse
@@ -500,6 +504,7 @@ pounce directly on the real variables themselves.")
   (add-hook 'gnus-group-mode-hook 'gnus-xmas-group-menu-add)
   (add-hook 'gnus-summary-mode-hook 'gnus-xmas-summary-menu-add)
   (add-hook 'gnus-article-mode-hook 'gnus-xmas-article-menu-add)
+  (add-hook 'gnus-score-mode-hook 'gnus-xmas-score-menu-add)
 
   (add-hook 'gnus-pick-mode-hook 'gnus-xmas-pick-menu-add)
   (add-hook 'gnus-tree-mode-hook 'gnus-xmas-tree-menu-add)
@@ -738,6 +743,6 @@ XEmacs compatibility workaround."
       (re-search-forward "^From:" nil t)
       (beginning-of-line)
       (set-extent-begin-glyph 
-       (make-extent (point) (point)) xface-glyph))))
+       (make-extent (point) (1+ (point))) xface-glyph))))
 
 ;;; gnus-xmas.el ends here
index 0aceb5b..dca8034 100644 (file)
@@ -1730,7 +1730,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-number "5.2.17"
+(defconst gnus-version-number "5.2.19"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
@@ -2095,6 +2095,7 @@ Thank you for your help in stamping out bugs.
       gnus-group-display-picons gnus-picons-article-display-x-face)
      ("gnus-gl" bbb-login bbb-logout bbb-grouplens-group-p 
       gnus-grouplens-mode)
+     ("smiley" :interactive t gnus-smiley-display)
      ("gnus-vm" gnus-vm-mail-setup)
      ("gnus-vm" :interactive t gnus-summary-save-in-vm
       gnus-summary-save-article-vm))))
@@ -6542,7 +6543,9 @@ If N is negative, this group and the N-1 previous groups will be checked."
 (defun gnus-group-describe-group (force &optional group)
   "Display a description of the current newsgroup."
   (interactive (list current-prefix-arg (gnus-group-group-name)))
-  (and force (setq gnus-description-hashtb nil))
+  (when (and force
+            gnus-description-hashtb)
+    (gnus-sethash group nil gnus-description-hashtb))
   (let ((method (gnus-find-method-for-group group))
        desc)
     (or group (error "No group name given"))
@@ -16957,7 +16960,8 @@ If FORCE is non-nil, the .newsrc file is read."
     t))
 
 (defun gnus-read-descriptions-file (&optional method)
-  (let ((method (or method gnus-select-method)))
+  (let ((method (or method gnus-select-method))
+       group)
     (when (stringp method)
       (setq method (gnus-server-to-method method)))
     ;; We create the hashtable whether we manage to read the desc file
@@ -16978,35 +16982,43 @@ If FORCE is non-nil, the .newsrc file is read."
       (gnus-message 1 "Couldn't read newsgroups descriptions")
       nil)
      (t
-      (let (group)
-       (save-excursion
-         (save-restriction
-           (set-buffer nntp-server-buffer)
-           (goto-char (point-min))
-           (if (or (search-forward "\n.\n" nil t)
+      (save-excursion
+       (save-restriction
+         (set-buffer nntp-server-buffer)
+         (goto-char (point-min))
+         (when (or (search-forward "\n.\n" nil t)
                    (goto-char (point-max)))
-               (progn
-                 (beginning-of-line)
-                 (narrow-to-region (point-min) (point))))
-           (goto-char (point-min))
-           (while (not (eobp))
-             ;; If we get an error, we set group to 0, which is not a
-             ;; symbol...
-             (setq group
-                   (condition-case ()
-                       (let ((obarray gnus-description-hashtb))
-                         ;; Group is set to a symbol interned in this
-                         ;; hash table.
-                         (read nntp-server-buffer))
-                     (error 0)))
-             (skip-chars-forward " \t")
-             ;; ...  which leads to this line being effectively ignored.
-             (and (symbolp group)
-                  (set group (buffer-substring
-                              (point) (progn (end-of-line) (point)))))
-             (forward-line 1))))
-       (gnus-message 5 "Reading descriptions file...done")
-       t)))))
+           (beginning-of-line)
+           (narrow-to-region (point-min) (point)))
+         ;; If these are groups from a foreign select method, we insert the
+         ;; group prefix in front of the group names.
+         (and method (not (gnus-server-equal
+                           (gnus-server-get-method nil method)
+                           (gnus-server-get-method nil gnus-select-method)))
+              (let ((prefix (gnus-group-prefixed-name "" method)))
+                (goto-char (point-min))
+                (while (and (not (eobp))
+                            (progn (insert prefix)
+                                   (zerop (forward-line 1)))))))
+         (goto-char (point-min))
+         (while (not (eobp))
+           ;; If we get an error, we set group to 0, which is not a
+           ;; symbol...
+           (setq group
+                 (condition-case ()
+                     (let ((obarray gnus-description-hashtb))
+                       ;; Group is set to a symbol interned in this
+                       ;; hash table.
+                       (read nntp-server-buffer))
+                   (error 0)))
+           (skip-chars-forward " \t")
+           ;; ...  which leads to this line being effectively ignored.
+           (and (symbolp group)
+                (set group (buffer-substring
+                            (point) (progn (end-of-line) (point)))))
+           (forward-line 1))))
+      (gnus-message 5 "Reading descriptions file...done")
+      t))))
 
 (defun gnus-group-get-description (group)
   "Get the description of a group by sending XGTITLE to the server."
index aeb75e8..6a5f4bf 100644 (file)
@@ -525,10 +525,10 @@ The cdr of ech entry is a function for applying the face to a region.")
       (goto-char (point-min))
       (while (not (eobp))
        (forward-char 1)
-       (cond ((or (eobp)
-                  (and (looking-at regexp)
-                       (> (point) beg)
-                       (not quoted)))
+       (cond ((and (> (point) beg)
+                   (or (eobp)
+                       (and (looking-at regexp)
+                            (not quoted))))
               (push (buffer-substring beg (point)) elems)
               (setq beg (match-end 0)))
              ((= (following-char) ?\")
@@ -813,6 +813,7 @@ C-c C-r  message-ceasar-buffer-body (rot13 the message body)."
                                paragraph-start))
   (setq paragraph-separate (concat (regexp-quote mail-header-separator)
                                   "$\\|[ \t]*[-_][-_][-_]+$\\|"
+                                  "-- $\\|"
                                   paragraph-separate))
   (make-local-variable 'message-reply-headers)
   (setq message-reply-headers nil)
@@ -1092,7 +1093,7 @@ prefix, and don't delete any headers."
       (delete-windows-on message-reply-buffer t)
       (insert-buffer message-reply-buffer)
       (funcall message-cite-function)
-      (gnus-exchange-point-and-mark)
+      (message-exchange-point-and-mark)
       (unless (bolp)
        (insert ?\n))
       (unless modified
@@ -2886,7 +2887,7 @@ which specify the range to operate on."
        (if (eq (following-char) (char-after (- (point) 2)))
           (delete-char -2))))))
 
-(fset 'gnus-exchange-point-and-mark 'exchange-point-and-mark)
+(fset 'message-exchange-point-and-mark 'exchange-point-and-mark)
 
 ;; Support for toolbar
 (when (string-match "XEmacs\\|Lucid" emacs-version)
index aca2ba2..8b566d1 100644 (file)
@@ -86,7 +86,10 @@ If it is non-nil, it must be a toolbar.  The five legal values are
          (setq down (concat dir name "-down." xpm))
          (setq disabled (concat dir name "-disabled." xpm))
          (if (not (file-exists-p up))
-             (set icon nil)
+             (progn
+               (set icon nil)
+               (setq bar nil
+                     dir nil))
            (set icon (toolbar-make-button-list
                       up (and (file-exists-p down) down)
                       (and (file-exists-p disabled) disabled)))))))
@@ -100,7 +103,9 @@ If it is non-nil, it must be a toolbar.  The five legal values are
 
 (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))
+  (exchange-point-and-mark message-xmas-dont-activate-region))
+
+(fset 'message-exchange-point-and-mark 'message-xmas-exchange-point-and-mark)
 
 (provide 'messagexmas)
 
index 086182c..90c1396 100644 (file)
@@ -670,13 +670,13 @@ time saver for large mailboxes.")
        (let ((delim (concat "^" message-unix-mail-delimiter))
              (marker (concat "\n" nnfolder-article-marker))
              (number "[0-9]+")
-             (active (cadr (assoc nnfolder-current-group nnfolder-group-alist)))
+             (active (cadr (assoc nnfolder-current-group 
+                                  nnfolder-group-alist)))
              (scantime (assoc nnfolder-current-group nnfolder-scantime-alist))
              (minid (lsh -1 -1))
-             oldactive maxid start end newscantime)
+             maxid start end newscantime)
 
          (setq maxid (or (cdr active) 0))
-         (setq oldactive active)
          (goto-char (point-min))
 
          ;; Anytime the active number is 1 or 0, it is suspect.  In that
@@ -753,10 +753,12 @@ time saver for large mailboxes.")
   (let ((files (directory-files nnfolder-directory))
        file)
     (while (setq file (pop files))
-      (when (nnheader-mail-file-mbox-p file)
+      (when (and (not (backup-file-name-p file))
+                (nnheader-mail-file-mbox-p file))
        (nnheader-message 5 "Adding group %s..." file)
        (push (list file (cons 1 0)) nnfolder-group-alist)
-       (nnfolder-read-folder file)
+       (nnfolder-possibly-change-group file)
+;;     (nnfolder-read-folder file)
        (nnfolder-close-group file))
       (message ""))))
 
index 0ffd775..c424b62 100644 (file)
                               (expand-file-name nnmh-toplev))) dir)
              (nnheader-replace-chars-in-string
               (substring dir (match-end 0)) ?/ ?.))
-           (apply (function max) files) 
-           (apply (function min) files)))))))
+           (apply 'max files) 
+           (apply 'min files)))))))
   t)
 
 (deffoo nnmh-request-newgroups (date &optional server)
                (condition-case ()
                    (funcall nnmail-delete-file-function article)
                  (file-error
+                  (nnheader-message 1 "Couldn't delete article %s in %s"
+                                    article newsgroup)
                   (setq rest (cons (car articles) rest)))))
            (setq rest (cons (car articles) rest))))
       (setq articles (cdr articles)))
index f31a31e..47269c0 100644 (file)
@@ -228,7 +228,8 @@ virtual group.")
         (cgroup (cadr nart))
         ;; The component group might be a virtual group.
         (nmark (gnus-request-update-mark cgroup (caddr nart) mark)))
-    (when (and (= mark nmark)
+    (when (and nart
+              (= mark nmark)
               (gnus-group-auto-expirable-p cgroup))
       (setq mark gnus-expirable-mark)))
   mark)
diff --git a/lisp/smiley.el b/lisp/smiley.el
new file mode 100644 (file)
index 0000000..3e0fba1
--- /dev/null
@@ -0,0 +1,136 @@
+;;; smiley.el --- displaying smiley faces
+;; Copyright (C) 1996 Free Software Foundation, Inc.
+
+;; Author: Wes Hardaker <hardaker@ece.ucdavis.edu>
+;; Keywords: fun
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;;
+;; comments go here.
+;;
+
+;;; Test smileys:  :-] :-o :-) ;-) :-< :-d :-P 8-| :-(
+
+;; To use:
+;; (require 'smiley)
+;; (add-hook 'gnus-article-display-hook 'gnus-smiley-display t)
+
+(eval-when-compile (require 'cl))
+
+(defvar smiley-data-directory (message-xmas-find-glyph-directory "smilies")
+  "Location of the smiley faces files.")
+
+(defvar smiley-regexp-alist
+  '((":-*\\]" 0 "FaceGrinning.xpm")
+    (":-*[oO]" 0 "FaceStartled.xpm")
+    (":-*[)>]" 0 "FaceHappy.xpm")
+    (";-*[>)]" 0 "FaceWinking.xpm")
+    (":-[/\\]" 0 "FaceIronic.xpm")
+    (":-*|" 0 "FaceStraight.xpm")
+    (":-*<" 0 "FaceAngry.xpm")
+    (":-*d" 0 "FaceTasty.xpm")
+    (":-*[pP]" 0 "FaceYukky.xpm")
+    ("8-*|" 0 "FaceKOed.xpm")
+    (":-*(" 0 "FaceAngry.xpm"))
+  "A list of regexps to map smilies to real images.")
+
+(defvar smiley-flesh-color "yellow"
+  "Flesh color.")
+
+(defvar smiley-features-color "black"
+  "Features color.")
+
+(defvar smiley-tongue-color "red"
+  "Tongue color.")
+
+(defvar smiley-glyph-cache nil)
+(defvar smiley-running-xemacs (string-match "XEmacs" emacs-version))
+
+(defun smiley-create-glyph (smiley pixmap)
+  (and
+   smiley-running-xemacs
+   (or
+    (cdr-safe (assoc pixmap smiley-glyph-cache))
+    (let* ((xpm-color-symbols 
+           (and (featurep 'xpm)
+                (append `(("flesh" ,smiley-flesh-color)
+                          ("features" ,smiley-features-color)
+                          ("tongue" ,smiley-tongue-color))
+                        xpm-color-symbols)))
+          (glyph (make-glyph
+                  (list
+                   (cons 'x (expand-file-name pixmap smiley-data-directory))
+                   (cons 'tty smiley)))))
+      (setq smiley-glyph-cache (cons (cons pixmap glyph) smiley-glyph-cache))
+      (set-glyph-face glyph 'default)
+      glyph))))
+
+;;;###interactive
+(defun smiley-region (beg end)
+  "Smilify the region between point and mark."
+  (interactive "r")
+  (smiley-buffer (current-buffer) beg end))
+
+;;;###interactive
+(defun smiley-buffer (&optional buffer st nd)
+  (interactive)
+  (save-excursion
+    (and buffer (set-buffer buffer))
+    (let ((buffer-read-only nil)
+         (alist smiley-regexp-alist)
+         entry regexp beg group file)
+      (goto-char (or st (point-min)))
+      (setq beg (point))
+      ;; loop through alist
+      (while (setq entry (pop alist))
+       (setq regexp (car entry)
+             group (cadr entry)
+             file (caddr entry))
+       (goto-char beg)
+       (while (re-search-forward regexp nd t)
+         (let* ((start (match-beginning group))
+                (end (match-end group))
+                (glyph (smiley-create-glyph (buffer-substring start end)
+                                            file)))
+           (if glyph
+               (progn 
+                 (mapcar 'delete-annotation (annotations-at end))
+                 (let ((ext (make-extent start end)))
+                   (set-extent-property ext 'invisible t)
+                   (set-extent-property ext 'end-open t)
+                   (set-extent-property ext 'intangible t))
+                 (make-annotation glyph end 'text)
+                 (goto-char end)))))))))
+
+;;;###autoload    
+(defun gnus-smiley-display ()
+  (interactive)
+  (save-excursion
+    (set-buffer gnus-article-buffer)
+    (goto-char (point-min))
+    ;; We skip the headers.
+    (unless (search-forward "\n\n" nil t)
+      (goto-char (point-max)))
+    (smiley-buffer (current-buffer) (point))))
+
+(provide 'smiley)
+
+;;; smiley.el ends here
index a79090c..c632704 100644 (file)
@@ -1,3 +1,7 @@
+Sat Jun 15 02:09:46 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus.texi (Article Washing): Addition.
+
 Fri Jun 14 04:51:17 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * message.texi: Changed name.
index bee84ae..26a96e3 100644 (file)
@@ -5197,8 +5197,13 @@ If it is a function, this function will be called with the face as the
 argument.  If the @code{gnus-article-x-face-too-ugly} (which is a regexp)
 matches the @code{From} header, the face will not be shown.  The default
 action under Emacs is to fork off an @code{xv} to view the face; under
-XEmacs the default action is to display the face after the @code{From}
-header. 
+XEmacs the default action is to display the face before the @code{From}
+header.  (It's nicer if XEmacs has been compiled with X-Face support --
+that will make display somewhat faster.  If there's no native X-Face
+support, Gnus will try to convert the @code{X-Face} header using
+external programs from the @code{pbmplus} package and friends.)  If you
+want to have this function in the display hook, it should probably come
+last. 
 
 @item W b
 @kindex W b (Summary)