[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 | }
|
---|