(gnus-tilde-max-form): Use `gnus-string-width' and `gnus-truncate-string'.
authorshuhei-k <shuhei-k>
Sat, 22 Aug 1998 21:58:20 +0000 (21:58 +0000)
committershuhei-k <shuhei-k>
Sat, 22 Aug 1998 21:58:20 +0000 (21:58 +0000)
(gnus-tilde-cut-form): Ditto.

lisp/gnus-spec.el

index 23215fb..281cd21 100644 (file)
   "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)