"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)