* nnmail.el (nnmail-cache-insert): make sure that the
[gnus] / lisp / gnus-xmas.el
index 1806ceb..d69b297 100644 (file)
@@ -390,6 +390,7 @@ call it with the value of the `gnus-data' text property."
   (defalias 'gnus-put-text-property 'gnus-xmas-put-text-property)
   (defalias 'gnus-deactivate-mark 'ignore)
   (defalias 'gnus-window-edges 'window-pixel-edges)
+  (defalias 'gnus-assq-delete-all 'gnus-xmas-assq-delete-all)
 
   (if (and (<= emacs-major-version 19)
           (< emacs-minor-version 14))
@@ -811,7 +812,7 @@ XEmacs compatibility workaround."
       (with-temp-buffer
        (if data-p
            (insert file)
-         (insert-file-contents file))
+         (insert-file-contents-literally file))
        (shell-command-on-region (point-min) (point-max)
                                 "ppmtoxpm 2>/dev/null" t)
        (setq file (buffer-string)
@@ -823,7 +824,7 @@ XEmacs compatibility workaround."
            (with-temp-buffer
              (if data-p
                  (insert file)
-               (insert-file-contents file))
+               (insert-file-contents-literally file))
              (make-glyph
               (vector
                (or (intern type)
@@ -833,7 +834,7 @@ XEmacs compatibility workaround."
       (set-glyph-face glyph face))
     glyph))
 
-(defun gnus-xmas-put-image (glyph &optional string)
+(defun gnus-xmas-put-image (glyph &optional string category)
   "Insert STRING, but display GLYPH.
 Warning: Don't insert text immediately after the image."
   (let ((begin (point))
@@ -844,21 +845,21 @@ Warning: Don't insert text immediately after the image."
        (insert string)
       (setq begin (1- begin)))
     (setq extent (make-extent begin (point)))
-    (set-extent-property extent 'gnus-image t)
+    (set-extent-property extent 'gnus-image category)
     (set-extent-property extent 'duplicable t)
     (if string
        (set-extent-property extent 'invisible t))
     (set-extent-property extent 'end-glyph glyph))
   glyph)
 
-(defun gnus-xmas-remove-image (image)
+(defun gnus-xmas-remove-image (image &optional category)
   (map-extents
    (lambda (ext unused)
      (when (equal (extent-end-glyph ext) image)
        (set-extent-property ext 'invisible nil)
        (set-extent-property ext 'end-glyph nil))
      nil)
-   nil nil nil nil nil 'gnus-image))
+   nil nil nil nil nil 'gnus-image category))
 
 (defun gnus-xmas-completing-read (prompt table &optional
                                         predicate require-match history)
@@ -875,6 +876,22 @@ Warning: Don't insert text immediately after the image."
    nil
    history))
 
+;; This macro is because XEmacs versions prior to 21.2 do not have the
+;; PROTOCOL argument to `open-network-stream'.
+(defmacro gnus-xmas-open-network-stream (name buffer host service &optional protocol)
+  "Like `open-network-stream' but take into account older XEmacs versions."
+  (if (and (featurep 'xemacs)
+          (fboundp 'open-network-stream)
+          (emacs-version>= 21 2))
+      `(open-network-stream ,name ,buffer ,host ,service ,protocol)
+    `(open-network-stream ,name ,buffer ,host ,service)))
+
+(defun gnus-xmas-assq-delete-all (key alist)
+  (let ((elem nil))
+    (while (setq elem (assq key alist))
+      (setq alist (delq elem alist)))
+    alist))
+
 (provide 'gnus-xmas)
 
 ;;; gnus-xmas.el ends here