Yukihiro Nakadaira wrote:

> I defined InsertEnter autocommand
> 
>   :autocmd InsertEnter * call setline(1, strftime("%c"))
> 
> and started Insert mode at end of line with "a" or "A".  I expected
> 
>   1 Tue Mar 27 20:00:00 2007
>   2 abc|
> (| is cursor)
> 
> But cursor was moved before last character.
> 
>   1 Tue Mar 27 20:00:00 2007
>   2 ab|c
> 
> If "c" is multi-byte character, cursor is displayed at end of line.
> 
>   1 Tue Mar 27 20:00:00 2007
>   2 abc|
> 
> But it is actually placed in middle of multi-byte character.  Then
> typing key breaks that character.
> 
>   1 Tue Mar 27 20:00:00 2007
>   2 ab<first-byte><second-byte>X|<last-byte>

This should help:

*** eval.c~     Tue Mar 27 16:47:56 2007
--- eval.c      Tue Mar 27 21:55:26 2007
***************
*** 14397,14403 ****
            if (u_savesub(lnum) == OK && ml_replace(lnum, line, TRUE) == OK)
            {
                changed_bytes(lnum, 0);
!               check_cursor_col();
                rettv->vval.v_number = 0;       /* OK */
            }
        }
--- 14397,14404 ----
            if (u_savesub(lnum) == OK && ml_replace(lnum, line, TRUE) == OK)
            {
                changed_bytes(lnum, 0);
!               if (lnum == curwin->w_cursor.lnum)
!                   check_cursor_col();
                rettv->vval.v_number = 0;       /* OK */
            }
        }


There can still be a problem when appending to line 1 and it ends in a
multi-byte character.  Then this patch should help:


*** misc2.c~    Wed Feb  7 05:00:13 2007
--- misc2.c     Tue Mar 27 21:59:56 2007
***************
*** 516,522 ****
--- 516,529 ----
                || virtual_active())
            curwin->w_cursor.col = len;
        else
+       {
            curwin->w_cursor.col = len - 1;
+ #ifdef FEAT_MBYTE
+           /* prevent cursor from moving on the trail byte */
+           if (has_mbyte)
+               mb_adjust_cursor();
+ #endif
+       }
      }
  
  #ifdef FEAT_VIRTUALEDIT

-- 
SIGIRO -- irony detected (iron core dumped)

 /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Reply via email to