anchor.diff:                             (make-string (- disp-x0 pos-x)
                                           :initial-element #\u200b)))))
   
  -;; workaround for display problem of utf-16 surrogate pair characters (incomplete)
  +;; deal with utf-16 surrogate pair characters (output)
   (defun remake-string (string)
     (let ((clist    '())
           (splitted nil))
  
positive.code:          (pos-y   (get-pos-y view x y)))
      (loop :while (< pos-x disp-x0)
         :for code := (get-charcode-from-scrwin view pos-x pos-y)
         :do (setf disp-x (lem-base:char-width (code-char code) disp-x))
           (setf pos-x (+ pos-x (if (< code #x10000) 1 2))))
      (- disp-x start-x)))
  (defun mouse-move-to-cursor (window x y)
    (lem:move-point (lem:current-point) (lem::window-view-point window))
  
negative.code:        (lem:redraw-display))
        )))
  
  ;; deal with utf-16 surrogate pair characters (input)
  (defun get-key (code)
    (when (<= #xd800 code #xdbff)
      (charms/ll:timeout 100)
  