+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
(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))))