Sync up with Pterodactyl Gnus v0.88.
[elisp/gnus.git-] / lisp / gnus-spec.el
index 0cd6ed1..ca97b05 100644 (file)
@@ -1,7 +1,8 @@
 ;;; gnus-spec.el --- format spec functions for Gnus
-;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;;     Katsumi Yamaoka <yamaoka@jpl.org>
 ;; Keywords: news
 
 ;; This file is part of GNU Emacs.
   ;; See whether all the stored info needs to be flushed.
   (when (or force
            (not (equal emacs-version
-                       (cdr (assq 'version gnus-format-specs)))))
+                       (cdr (assq 'version gnus-format-specs))))
+           (not (equal gnus-version
+                       (cdr (assq 'gnus-version gnus-format-specs)))))
+    (message "%s" "Force update format specs.")
     (setq gnus-format-specs nil))
 
   ;; Go through all the formats and see whether they need updating.
          (set (intern (format "gnus-%s-line-format-spec" type)) val)))))
 
   (unless (assq 'version gnus-format-specs)
-    (push (cons 'version emacs-version) gnus-format-specs)))
+    (push (cons 'version emacs-version) gnus-format-specs))
+  (unless (assq 'gnus-version gnus-format-specs)
+    (push (cons 'gnus-version gnus-version) gnus-format-specs)))
 
 (defvar gnus-mouse-face-0 'highlight)
 (defvar gnus-mouse-face-1 'highlight)
     (point) (progn ,@form (point))
     '(gnus-face t face ,(symbol-value (intern (format "gnus-face-%d" type))))))
 
+;;; Avoid byte-compile warning.
+(defun gnus-tilde-pad-form (el pad-width)
+  "Dummy function except for XEmacs-mule. It will be redefined
+by `gnus-xmas-redefine'."
+  (let ((val (if (symbolp el) (eval el) el)))
+    (` (, val))))
+
 (defun gnus-balloon-face-function (form type)
-  `(gnus-put-text-property 
+  `(gnus-put-text-property
     (point) (progn ,@form (point))
     'balloon-help
     ,(intern (format "gnus-balloon-face-%d" type))))
        (if (or (= delim ?\()
                (= delim ?\{)
                (= delim ?\<))
-           (replace-match (concat "\"(" 
+           (replace-match (concat "\"("
                                   (cond ((= delim ?\() "mouse")
                                         ((= delim ?\{) "face")
                                         (t "balloon"))
   ;; This function parses the FORMAT string with the help of the
   ;; SPEC-ALIST and returns a list that can be eval'ed to return a
   ;; string.
-  (let ((max-width 0)
+  (let ((xemacs-mule-p (and gnus-xemacs (featurep 'mule)))
+       max-width
        spec flist fstring elem result dontinsert user-defined
        type value pad-width spec-beg cut-width ignore-value
        tilde-form tilde elem-type)
       (gnus-set-work-buffer)
       (insert format)
       (goto-char (point-min))
-      (while (re-search-forward "%" nil t)
+      (while (search-forward "%" nil t)
        (setq user-defined nil
              spec-beg nil
              pad-width nil
            (setq elem '("*" ?s))))
          (setq elem-type (cadr elem))
          ;; Insert the new format elements.
-         (when pad-width
-           (insert (number-to-string pad-width)))
+         (and pad-width (not xemacs-mule-p)
+              (insert (number-to-string pad-width)))
          ;; Create the form to be evaled.
-         (if (or max-width cut-width ignore-value)
+         (if (or max-width cut-width ignore-value
+                 (and pad-width xemacs-mule-p))
              (progn
                (insert ?s)
                (let ((el (car elem)))
                    (setq el (gnus-tilde-cut-form el cut-width)))
                  (when max-width
                    (setq el (gnus-tilde-max-form el max-width)))
+                 (and pad-width xemacs-mule-p
+                      (setq el (gnus-tilde-pad-form el pad-width)))
                  (push el flist)))
            (insert elem-type)
            (push (car elem) flist))))
@@ -545,7 +562,7 @@ If PROPS, insert the result."
        (symbol-value (intern (format "gnus-%s-line-format" type)))
        (symbol-value (intern (format "gnus-%s-line-format-alist" type)))
        insertable)))
-       
+
 
 (provide 'gnus-spec)