Synch with Oort Gnus.
authoryamaoka <yamaoka>
Wed, 19 Sep 2001 23:07:14 +0000 (23:07 +0000)
committeryamaoka <yamaoka>
Wed, 19 Sep 2001 23:07:14 +0000 (23:07 +0000)
lisp/ChangeLog
lisp/gnus-spec.el
lisp/gnus-win.el

index 4bb603b..16a959f 100644 (file)
@@ -1,3 +1,18 @@
+2001-09-19  Sam Steingold  <sds@gnu.org>
+
+       * gnus-win.el (gnus-buffer-configuration): Respect
+       `gnus-bug-create-help-buffer'.
+
+2001-09-18  Simon Josefsson  <jas@extundo.com>
+
+       * gnus-spec.el (gnus-correct-pad-form): Re-revert.
+       (gnus-parse-simple-format): Re-revert.
+
+2001-09-16  Katsuhiro Hermit Endo  <hermit@koka-in.org>
+
+       * gnus-spec.el (gnus-parse-complex-format): Don't fold search
+       case.  (Thanks to Daiki Ueno <ueno@unixuser.org>.)
+
 2001-09-18  Simon Josefsson  <jas@extundo.com>
 
        * gnus-spec.el (gnus-correct-pad-form): Remove until papers are
index c7f9463..966cf60 100644 (file)
        (if (equal val ,ignore-value)
           "" val))))
 
+(defun gnus-correct-pad-form (el pad-width)
+  "Return a form that pads EL to PAD-WIDTH accounting for multi-column
+characters correctly. This is because `format' may pad to columns or to
+characters when given a pad value."
+  (let ((pad (abs pad-width))
+       (side (< 0 pad-width)))
+    (if (symbolp el)
+       `(let ((need (- ,pad (gnus-correct-length ,el))))
+          (if (> need 0)
+              (concat ,(when side '(make-string need ?\ ))
+                      ,el
+                      ,(when (not side) '(make-string need ?\ )))
+            ,el))
+      `(let* ((val (eval ,el))
+             (need (- ,pad (gnus-correct-length ,el))))
+        (if (> need 0)
+            (concat ,(when side '(make-string need ?\ ))
+                    ,el
+                    ,(when (not side) '(make-string need ?\ )))
+          ,el)))))
+
 (defun gnus-parse-format (format spec-alist &optional insert)
   ;; This function parses the FORMAT string with the help of the
   ;; SPEC-ALIST and returns a list that can be eval'ed to return the
     (insert "\")")
     ;; Convert point position commands.
     (goto-char (point-min))
-    (while (re-search-forward "%\\([-0-9]+\\)?C" nil t)
-      (replace-match "\"(point)\"" t t))
+    (let ((case-fold-search nil))
+      (while (re-search-forward "%\\([-0-9]+\\)?C" nil t)
+       (replace-match "\"(point)\"" t t)))
     ;; Convert TAB commands.
     (goto-char (point-min))
     (while (re-search-forward "%\\([-0-9]+\\)=" nil t)
            (setq elem '("*" ?s))))
          (setq elem-type (cadr elem))
          ;; Insert the new format elements.
-         (when pad-width
+         (when (and pad-width
+                    (not (and (featurep 'xemacs)
+                              gnus-use-correct-string-widths)))
            (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 (featurep 'xemacs)
+                      gnus-use-correct-string-widths))
              (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)))
+                 (when pad-width
+                   (setq el (gnus-correct-pad-form el pad-width)))
                  (push el flist)))
            (insert elem-type)
            (push (car elem) flist))))
index 07819de..acb00f9 100644 (file)
               ("*Shell Command Output*" 1.0)))
     (bug
      (vertical 1.0
-              ("*Gnus Help Bug*" 0.5)
+              (if gnus-bug-create-help-buffer '("*Gnus Help Bug*" 0.5))
               ("*Gnus Bug*" 1.0 point)))
     (score-trace
      (vertical 1.0