anchor.diff:                                        :start-x (+ start-x (1- screen-width)))
                        (incf point-y)
                        (setf start i))))
  -    (values nil nil point-y)))
  -
  -(defun screen-display-line (screen screen-width start-x view-charpos
  -                                   visual-cursor-x visual-cursor-y
  +    point-y))
  +
  +(defun screen-display-line (screen screen-width view-charpos
  +                                   visual-cursor-y
                                      point-x point-y str/attributes)
     (declare (ignore view-charpos))
  -  (when (= visual-cursor-y point-y)
  -    (setf visual-cursor-x (string-width (car str/attributes) 0 point-x)))
  -  (let ((cols screen-width))
  -    (cond
  -      ((< (string-width (car str/attributes))
  -          screen-width)
  -       (disp-print-line screen point-y str/attributes t :start-x start-x))
  -      ((or (/= visual-cursor-y point-y)
  -           (< visual-cursor-x (1- cols)))
  -       (let ((i (wide-index (car str/attributes) (1- cols))))
  -         (cond ((<= cols (string-width (car str/attributes) 0 i))
  -                (disp-print-line screen point-y str/attributes nil :string-end (1- i)
  -                                 :start-x start-x)
  -                (disp-print-line screen point-y (cons " $" nil) nil
  -                                 :start-x (+ start-x (1- i))))
  -               (t
  -                (disp-print-line screen point-y str/attributes nil
  -                                 :string-end i
  -                                 :start-x start-x)
  -                (disp-print-line screen point-y (cons "$" nil) nil
  -                                 :start-x (+ start-x i))))))
  -      ((< point-x (length (car str/attributes)))
  -       (let ((start (wide-index (car str/attributes) (- visual-cursor-x cols -3)))
  -             (end point-x))
  -         (setf visual-cursor-x (- cols 2))
  -         (cond ((wide-char-p (char (car str/attributes) end))
  -                (disp-print-line screen point-y (cons "$" nil) nil :start-x start-x)
  -                (disp-print-line screen point-y str/attributes nil
  -                                 :start-x (+ start-x 1) :string-start start :string-end (1- end))
  -                (disp-print-line screen point-y (cons " $" nil) nil :start-x (+ start-x (1- end)))
  -                (decf visual-cursor-x))
  -               (t
  -                (disp-print-line screen point-y (cons "$" nil) nil :start-x start-x)
  -                (disp-print-line screen point-y str/attributes nil
  -                                 :start-x (+ start-x 1)
  -                                 :string-start start
  -                                 :string-end end)
  -                (disp-print-line screen point-y (cons "$" nil) nil
  -                                 :start-x (+ start-x (1+ end)))))))
  -      (t
  -       (let ((start (- visual-cursor-x cols -2)))
  -         (disp-print-line screen point-y (cons "$" nil) nil :start-x start-x)
  -         (disp-print-line screen point-y str/attributes t
  -                          :start-x (+ start-x 1)
  -                          :string-start (wide-index (car str/attributes) start)))
  -       (setq visual-cursor-x (- cols 1))))
  -    (values (if (= visual-cursor-y point-y)
  -                (+ start-x visual-cursor-x)
  -                visual-cursor-x)
  -            visual-cursor-y
  -            point-y)))
  +  (let ((visual-cursor-x 0)
  +        (start-x (screen-left-width screen)))
  +    (when (= visual-cursor-y point-y)
  +      (setf visual-cursor-x (string-width (car str/attributes) 0 point-x)))
  +    (let ((cols screen-width))
  +      (cond
  +        ((< (string-width (car str/attributes))
  +            screen-width)
  +         (disp-print-line screen point-y str/attributes t :start-x start-x))
  +        ((or (/= visual-cursor-y point-y)
  +             (< visual-cursor-x (1- cols)))
  +         (let ((i (wide-index (car str/attributes) (1- cols))))
  +           (cond ((<= cols (string-width (car str/attributes) 0 i))
  +                  (disp-print-line screen point-y str/attributes nil :string-end (1- i)
  +                                   :start-x start-x)
  +                  (disp-print-line screen point-y (cons " $" nil) nil
  +                                   :start-x (+ start-x (1- i))))
  +                 (t
  +                  (disp-print-line screen point-y str/attributes nil
  +                                   :string-end i
  +                                   :start-x start-x)
  +                  (disp-print-line screen point-y (cons "$" nil) nil
  +                                   :start-x (+ start-x i))))))
  +        ((< point-x (length (car str/attributes)))
  +         (let ((start (wide-index (car str/attributes) (- visual-cursor-x cols -3)))
  +               (end point-x))
  +           (setf visual-cursor-x (- cols 2))
  +           (cond ((wide-char-p (char (car str/attributes) end))
  +                  (disp-print-line screen point-y (cons "$" nil) nil :start-x start-x)
  +                  (disp-print-line screen point-y str/attributes nil
  +                                   :start-x (+ start-x 1) :string-start start :string-end (1- end))
  +                  (disp-print-line screen point-y (cons " $" nil) nil :start-x (+ start-x (1- end)))
  +                  (decf visual-cursor-x))
  +                 (t
  +                  (disp-print-line screen point-y (cons "$" nil) nil :start-x start-x)
  +                  (disp-print-line screen point-y str/attributes nil
  +                                   :start-x (+ start-x 1)
  +                                   :string-start start
  +                                   :string-end end)
  +                  (disp-print-line screen point-y (cons "$" nil) nil
  +                                   :start-x (+ start-x (1+ end)))))))
  +        (t
  +         (let ((start (- visual-cursor-x cols -2)))
  +           (disp-print-line screen point-y (cons "$" nil) nil :start-x start-x)
  +           (disp-print-line screen point-y str/attributes t
  +                            :start-x (+ start-x 1)
  +                            :string-start (wide-index (car str/attributes) start)))
  +         (setq visual-cursor-x (- cols 1))))
  +      point-y)))
   
   (defun screen-display-lines (screen redraw-flag buffer view-point cursor-point focus-window-p)
     (let* ((truncate-lines (variable-value 'truncate-lines :default buffer))
  
positive.code: 
  (defvar *truncate-str/attributes* (cons " " (list '(0 1 lem::truncate-attribute))))
  
  (defun screen-display-line-wrapping (screen screen-width start-x view-charpos
                                              visual-cursor-x visual-cursor-y
                                              point-x point-y str/attributes)
    (declare (ignore visual-cursor-x visual-cursor-y point-x))
    (when (and (< 0 view-charpos) (= point-y 0))
      (setf str/attributes
            (cons (subseq (car str/attributes) view-charpos)
                  (lem-base::subseq-elements (cdr str/attributes)
                                             view-charpos
                                             (length (car str/attributes))))))
    (let ((start 0))
      (loop :for i := (wide-index (car str/attributes)
                                  (1- screen-width)
                                  :start start)
  
negative.code:                      (charms/ll:wmove (screen-%scrwin screen) y 0)
                       (charms/ll:wclrtoeol (screen-%scrwin screen)))
                     (let ((screen-width (- (screen-width screen) left-width))
                           y2)
                       (when left-str/attr
                         (screen-print-string screen
  