"Return a form that limits EL to MAX-WIDTH."
(let ((max (abs max-width)))
(if (symbolp el)
- `(if (> (length ,el) ,max)
+ `(if (> (gnus-string-width ,el) ,max)
,(if (< max-width 0)
- `(substring ,el (- (length el) ,max))
- `(substring ,el 0 ,max))
+ `(gnus-truncate-string
+ ,el (gnus-string-width ,el)
+ (- (gnus-string-width ,el) ,max))
+ `(gnus-truncate-string ,el ,max))
,el)
`(let ((val (eval ,el)))
- (if (> (length val) ,max)
+ (if (> (gnus-string-width val) ,max)
,(if (< max-width 0)
- `(substring val (- (length val) ,max))
- `(substring val 0 ,max))
+ `(gnus-truncate-string
+ val (gnus-string-width val)
+ (- (gnus-string-width val) ,max))
+ `(gnus-truncate-string val ,max))
val)))))
(defun gnus-tilde-cut-form (el cut-width)
"Return a form that cuts CUT-WIDTH off of EL."
(let ((cut (abs cut-width)))
(if (symbolp el)
- `(if (> (length ,el) ,cut)
+ `(if (> (gnus-string-width ,el) ,cut)
,(if (< cut-width 0)
- `(substring ,el 0 (- (length el) ,cut))
- `(substring ,el ,cut))
+ `(gnus-truncate-string
+ ,el (- (gnus-string-width ,el) ,cut))
+ `(gnus-truncate-string
+ ,el (- (gnus-string-width ,el) ,cut) ,cut))
,el)
`(let ((val (eval ,el)))
- (if (> (length val) ,cut)
+ (if (> (gnus-string-width val) ,cut)
,(if (< cut-width 0)
- `(substring val 0 (- (length val) ,cut))
- `(substring val ,cut))
+ `(gnus-truncate-string
+ val (- (gnus-string-width val) ,cut))
+ `(gnus-truncate-string
+ val (- (gnus-string-width val) ,cut) ,cut))
val)))))
(defun gnus-tilde-ignore-form (el ignore-value)
(set symbol nil))
symbol))
+(defun gnus-string-width (str)
+ (length str))
+
(defun gnus-truncate-string (str width)
(substring str 0 width))
(setq filename (expand-file-name filename))
(setq rmail-default-rmail-file filename)
(let ((artbuf (current-buffer))
- (tmpbuf (gnus-get-buffer-create " *Gnus-output*")))
+ (tmpbuf (gnus-get-buffer-create " *Gnus-output*"))
+ (coding-system-for-write 'binary))
(save-excursion
(or (get-file-buffer filename)
(file-exists-p filename)