commit bash-20051123 snapshot
[platform/upstream/bash.git] / vi_mode.c.diff
1 *** ../bash-3.0/lib/readline/vi_mode.c  Tue Jul 13 14:08:27 2004
2 --- lib/readline/vi_mode.c      Tue Aug 17 00:12:09 2004
3 ***************
4 *** 273,280 ****
5 --- 273,282 ----
6       {
7       case '?':
8 +       _rl_free_saved_history_line ();
9         rl_noninc_forward_search (count, key);
10         break;
11   
12       case '/':
13 +       _rl_free_saved_history_line ();
14         rl_noninc_reverse_search (count, key);
15         break;
16 ***************
17 *** 691,695 ****
18     wchar_t wc;
19     char mb[MB_LEN_MAX+1];
20 !   int mblen;
21     mbstate_t ps;
22   
23 --- 693,697 ----
24     wchar_t wc;
25     char mb[MB_LEN_MAX+1];
26 !   int mblen, p;
27     mbstate_t ps;
28   
29 ***************
30 *** 714,722 ****
31         if (wc)
32         {
33           mblen = wcrtomb (mb, wc, &ps);
34           if (mblen >= 0)
35             mb[mblen] = '\0';
36           rl_begin_undo_group ();
37 !         rl_delete (1, 0);
38           rl_insert_text (mb);
39           rl_end_undo_group ();
40 --- 716,727 ----
41         if (wc)
42         {
43 +         p = rl_point;
44           mblen = wcrtomb (mb, wc, &ps);
45           if (mblen >= 0)
46             mb[mblen] = '\0';
47           rl_begin_undo_group ();
48 !         rl_vi_delete (1, 0);
49 !         if (rl_point < p)     /* Did we retreat at EOL? */
50 !           rl_point++; /* XXX - should we advance more than 1 for mbchar? */
51           rl_insert_text (mb);
52           rl_end_undo_group ();
53 ***************
54 *** 1311,1320 ****
55   #if defined (HANDLE_MULTIBYTE)
56         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
57 !       while (_rl_insert_char (1, c))
58 !         {
59 !           RL_SETSTATE (RL_STATE_MOREINPUT);
60 !           c = rl_read_key ();
61 !           RL_UNSETSTATE (RL_STATE_MOREINPUT);
62 !         }
63         else
64   #endif
65 --- 1316,1329 ----
66   #if defined (HANDLE_MULTIBYTE)
67         if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
68 !       {
69 !         if (rl_point < p)             /* Did we retreat at EOL? */
70 !           rl_point++;
71 !         while (_rl_insert_char (1, c))
72 !           {
73 !             RL_SETSTATE (RL_STATE_MOREINPUT);
74 !             c = rl_read_key ();
75 !             RL_UNSETSTATE (RL_STATE_MOREINPUT);
76 !           }
77 !       }
78         else
79   #endif