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