bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Readline-5.2 Official Patch 4


From: Chet Ramey
Subject: Readline-5.2 Official Patch 4
Date: Tue, 1 May 2007 09:07:09 -0400

                           READLINE PATCH REPORT
                           =====================

Readline-Release: 5.2
Patch-ID: readline52-004

Bug-Reported-by: Peter Volkov <address@hidden>
Bug-Reference-ID: <address@hidden>
Bug-Reference-URL: 
http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html

Bug-Description:

When restoring the original prompt after finishing an incremental search,
bash sometimes places the cursor incorrectly if the primary prompt contains
invisible characters.

Patch:

*** ../readline-5.2.3/display.c Fri Apr 20 13:30:16 2007
--- display.c   Fri Apr 20 15:17:01 2007
***************
*** 1599,1604 ****
          if (temp > 0)
            {
              _rl_output_some_chars (nfd, temp);
!             _rl_last_c_pos += _rl_col_width (nfd, 0, temp);;
            }
        }
--- 1599,1618 ----
          if (temp > 0)
            {
+             /* If nfd begins at the prompt, or before the invisible
+                characters in the prompt, we need to adjust _rl_last_c_pos
+                in a multibyte locale to account for the wrap offset and
+                set cpos_adjusted accordingly. */
              _rl_output_some_chars (nfd, temp);
!             if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
!               {
!                   _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
!                   if (current_line == 0 && wrap_offset &&  ((nfd - new) <= 
prompt_last_invisible))
!                   {
!                     _rl_last_c_pos -= wrap_offset;
!                     cpos_adjusted = 1;
!                   }
!               }
!               else
!                 _rl_last_c_pos += temp;
            }
        }
***************
*** 1608,1613 ****
--- 1622,1639 ----
          if (temp > 0)
            {
+             /* If nfd begins at the prompt, or before the invisible
+                characters in the prompt, we need to adjust _rl_last_c_pos
+                in a multibyte locale to account for the wrap offset and
+                set cpos_adjusted accordingly. */
              _rl_output_some_chars (nfd, temp);
              _rl_last_c_pos += col_temp;               /* XXX */
+             if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+               {
+                 if (current_line == 0 && wrap_offset &&  ((nfd - new) <= 
prompt_last_invisible))
+                   {
+                     _rl_last_c_pos -= wrap_offset;
+                     cpos_adjusted = 1;
+                   }
+               }
            }
          lendiff = (oe - old) - (ne - new);

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                                Live Strong.
Chet Ramey, ITS, CWRU    address@hidden    http://tiswww.tis.case.edu/~chet/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]