anchor.diff:           (disp-x0    (+ disp-width start-x))
            (pos-x      (get-pos-x view disp-width y :modeline modeline))
            (pos-y      (get-pos-y view disp-width y :modeline modeline)))
  -    ;; write zero-width-space characters (#\u200b)
  +    ;; write string of zero-width-space character (#\u200b)
       ;; only when horizontal splitted window
       ;; (to reduce the possibility of copying zero-width-space characters to clipboard)
       (when (and (> disp-x0 pos-x)
  
positive.code:          (pos-x    (if floating 0 start-x))
           (pos-y    (get-pos-y view x y :modeline modeline)))
      (loop :while (< disp-x disp-x0)
         :for c-code := (get-charcode-from-scrwin view pos-x pos-y)
         :for c := (code-char c-code)
         :do (setf disp-x (lem-base:char-width c disp-x))
           ;; pos-x is incremented only 1 at wide characters
           ;; (except for utf-16 surrogate pair characters)
           (setf pos-x (+ pos-x (if (< c-code #x10000) 1 2))))
      pos-x))
  (defun get-pos-y (view x y &key (modeline nil))
    (+ y (ncurses-view-y view) (if modeline (ncurses-view-height view) 0)))
  
  ;; for mintty and ConEmu
  ;; adjust line width by using zero-width-space characters (#\u200b)
  (defun adjust-line (view x y &key (modeline nil))
    (unless (or (eq *windows-term-type* :mintty)
                (eq *windows-term-type* :conemu))
  
negative.code:           (lem:window-width  window)
            (lem:window-height window)))
  ;; for ConEmu
  ;; get mouse disp-x for pointing wide characters properly
  (defun mouse-get-disp-x (view x y)
    (unless (eq *windows-term-type* :conemu)
      (return-from mouse-get-disp-x x))
    (let* ((start-x (ncurses-view-x view))
           (disp-x0 (+ x start-x))
           (disp-x  start-x)
           (pos-x   start-x)
           (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))
    (lem:move-to-next-virtual-line (lem:current-point) y)
    (lem:move-to-virtual-line-column (lem:current-point)
                                     (mouse-get-disp-x (lem:window-view window) x y)))
  (defun mouse-event-proc (bstate x1 y1)
    (lambda ()
      (cond
  