[25e84be] | 1 | Submitted By: Jonathan Norman (jonathan at bluesquarelinux.co.uk) |
---|
| 2 | Date: 2009-12-31 |
---|
| 3 | Initial Package Version: 6.0 |
---|
[613a326] | 4 | Origin: Upstream |
---|
| 5 | Upstream Status: Applied |
---|
[25e84be] | 6 | Description: Contains all upstream patches up to 6.0-004 |
---|
[613a326] | 7 | |
---|
| 8 | diff -Naur readline-6.0.orig/display.c readline-6.0/display.c |
---|
[25e84be] | 9 | --- readline-6.0.orig/display.c 2009-12-31 18:52:45.000000000 +0000 |
---|
| 10 | +++ readline-6.0/display.c 2009-12-31 19:05:02.000000000 +0000 |
---|
[613a326] | 11 | @@ -512,6 +512,7 @@ |
---|
| 12 | /* Block keyboard interrupts because this function manipulates global |
---|
| 13 | data structures. */ |
---|
| 14 | _rl_block_sigint (); |
---|
| 15 | + RL_SETSTATE (RL_STATE_REDISPLAYING); |
---|
| 16 | |
---|
| 17 | if (!rl_display_prompt) |
---|
| 18 | rl_display_prompt = ""; |
---|
[25e84be] | 19 | @@ -1191,6 +1192,8 @@ |
---|
| 20 | if (!rl_display_fixed || forced_display || lmargin != last_lmargin) |
---|
| 21 | { |
---|
| 22 | forced_display = 0; |
---|
| 23 | + o_cpos = _rl_last_c_pos; |
---|
| 24 | + cpos_adjusted = 0; |
---|
| 25 | update_line (&visible_line[last_lmargin], |
---|
| 26 | &invisible_line[lmargin], |
---|
| 27 | 0, |
---|
| 28 | @@ -1198,6 +1201,13 @@ |
---|
| 29 | _rl_screenwidth + (lmargin ? 0 : wrap_offset), |
---|
| 30 | 0); |
---|
| 31 | |
---|
| 32 | + if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && |
---|
| 33 | + cpos_adjusted == 0 && |
---|
| 34 | + _rl_last_c_pos != o_cpos && |
---|
| 35 | + _rl_last_c_pos > wrap_offset && |
---|
| 36 | + o_cpos < prompt_last_invisible) |
---|
| 37 | + _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ |
---|
| 38 | + |
---|
| 39 | /* If the visible new line is shorter than the old, but the number |
---|
| 40 | of invisible characters is greater, and we are at the end of |
---|
| 41 | the new line, we need to clear to eol. */ |
---|
| 42 | @@ -1236,6 +1246,7 @@ |
---|
[613a326] | 43 | visible_wrap_offset = wrap_offset; |
---|
| 44 | } |
---|
| 45 | |
---|
| 46 | + RL_UNSETSTATE (RL_STATE_REDISPLAYING); |
---|
| 47 | _rl_release_sigint (); |
---|
| 48 | } |
---|
| 49 | |
---|
[25e84be] | 50 | @@ -1772,7 +1783,7 @@ |
---|
[613a326] | 51 | space_to_eol will insert too many spaces. XXX - maybe we should |
---|
| 52 | adjust col_lendiff based on the difference between _rl_last_c_pos |
---|
| 53 | and _rl_screenwidth */ |
---|
| 54 | - if (col_lendiff && (_rl_last_c_pos < _rl_screenwidth)) |
---|
| 55 | + if (col_lendiff && ((MB_CUR_MAX == 1 || rl_byte_oriented) || (_rl_last_c_pos < _rl_screenwidth))) |
---|
| 56 | #endif |
---|
| 57 | { |
---|
| 58 | if (_rl_term_autowrap && current_line < inv_botlin) |
---|
[25e84be] | 59 | @@ -1892,6 +1903,10 @@ |
---|
[613a326] | 60 | |
---|
| 61 | woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); |
---|
| 62 | cpos = _rl_last_c_pos; |
---|
| 63 | + |
---|
| 64 | + if (cpos == 0 && cpos == new) |
---|
| 65 | + return; |
---|
| 66 | + |
---|
| 67 | #if defined (HANDLE_MULTIBYTE) |
---|
| 68 | /* If we have multibyte characters, NEW is indexed by the buffer point in |
---|
| 69 | a multibyte string, but _rl_last_c_pos is the display position. In |
---|
[25e84be] | 70 | @@ -1905,9 +1920,9 @@ |
---|
[613a326] | 71 | prompt string, since they're both buffer indices and DPOS is a |
---|
| 72 | desired display position. */ |
---|
| 73 | if ((new > prompt_last_invisible) || /* XXX - don't use woff here */ |
---|
| 74 | - (prompt_physical_chars > _rl_screenwidth && |
---|
| 75 | + (prompt_physical_chars >= _rl_screenwidth && |
---|
| 76 | _rl_last_v_pos == prompt_last_screen_line && |
---|
| 77 | - wrap_offset >= woff && |
---|
| 78 | + wrap_offset >= woff && dpos >= woff && |
---|
| 79 | new > (prompt_last_invisible-(_rl_screenwidth*_rl_last_v_pos)-wrap_offset))) |
---|
| 80 | /* XXX last comparison might need to be >= */ |
---|
| 81 | { |
---|
| 82 | diff -Naur readline-6.0.orig/patchlevel readline-6.0/patchlevel |
---|
[25e84be] | 83 | --- readline-6.0.orig/patchlevel 2009-12-31 18:52:45.000000000 +0000 |
---|
| 84 | +++ readline-6.0/patchlevel 2009-12-31 18:58:11.000000000 +0000 |
---|
[613a326] | 85 | @@ -1,3 +1,3 @@ |
---|
| 86 | # Do not edit -- exists only for use by patch |
---|
| 87 | |
---|
| 88 | -0 |
---|
| 89 | +3 |
---|
| 90 | diff -Naur readline-6.0.orig/readline.h readline-6.0/readline.h |
---|
[25e84be] | 91 | --- readline-6.0.orig/readline.h 2009-12-31 18:52:45.000000000 +0000 |
---|
| 92 | +++ readline-6.0/readline.h 2009-12-31 18:58:11.000000000 +0000 |
---|
[613a326] | 93 | @@ -814,8 +814,9 @@ |
---|
| 94 | #define RL_STATE_VIMOTION 0x100000 /* reading vi motion arg */ |
---|
| 95 | #define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */ |
---|
| 96 | #define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */ |
---|
| 97 | +#define RL_STATE_REDISPLAYING 0x800000 /* updating terminal display */ |
---|
| 98 | |
---|
| 99 | -#define RL_STATE_DONE 0x800000 /* done; accepted line */ |
---|
| 100 | +#define RL_STATE_DONE 0x1000000 /* done; accepted line */ |
---|
| 101 | |
---|
| 102 | #define RL_SETSTATE(x) (rl_readline_state |= (x)) |
---|
| 103 | #define RL_UNSETSTATE(x) (rl_readline_state &= ~(x)) |
---|
| 104 | diff -Naur readline-6.0.orig/terminal.c readline-6.0/terminal.c |
---|
[25e84be] | 105 | --- readline-6.0.orig/terminal.c 2009-12-31 18:52:45.000000000 +0000 |
---|
| 106 | +++ readline-6.0/terminal.c 2009-12-31 18:58:11.000000000 +0000 |
---|
[613a326] | 107 | @@ -355,7 +355,7 @@ |
---|
| 108 | _rl_get_screen_size (fileno (rl_instream), 1); |
---|
| 109 | if (CUSTOM_REDISPLAY_FUNC ()) |
---|
| 110 | rl_forced_update_display (); |
---|
| 111 | - else |
---|
| 112 | + else if (RL_ISSTATE(RL_STATE_REDISPLAYING) == 0) |
---|
| 113 | _rl_redisplay_after_sigwinch (); |
---|
| 114 | } |
---|
| 115 | } |
---|