On 4/19/14, 3:44 PM, Trond Endrestøl wrote:
> Hi,
> 
> I'm running GNU bash 4.3.11 on several branches of FreeBSD, more 
> specifically stable/{8,9,10}, and head (11.0-CURRENT), both 32-bit 
> (i386) and 64-bit (amd64).
> 
> Whenever horizontal-scroll-mode is set to on in .inputrc, backwards 
> incremental search fails to repaint the command line when doing 
> successive tappings on C-r. bash will misbehave even further when I 
> hit the enter key. More explanation follows.

Coincidentally, I've been looking at this problem for the last couple of
days, based on another report.  I've attached what I have so far, which
seems to fix the problem according to the testing I've done so far.  Let
me know how it works for you.

Chet


-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU    c...@case.edu    http://cnswww.cns.cwru.edu/~chet/
*** ../bash-4.3-patched/lib/readline/display.c	2014-04-08 18:19:36.000000000 -0400
--- lib/readline/display.c	2014-04-20 18:32:52.000000000 -0400
***************
*** 1638,1642 ****
       the spot of first difference is before the end of the invisible chars,
       lendiff needs to be adjusted. */
!   if (current_line == 0 && !_rl_horizontal_scroll_mode &&
        current_invis_chars != visible_wrap_offset)
      {
--- 1638,1642 ----
       the spot of first difference is before the end of the invisible chars,
       lendiff needs to be adjusted. */
!   if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
        current_invis_chars != visible_wrap_offset)
      {
***************
*** 1826,1831 ****
  		_rl_last_c_pos += bytes_to_insert;
  
  	      if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
! 		goto clear_rest_of_line;
  	    }
  	}
--- 1826,1836 ----
  		_rl_last_c_pos += bytes_to_insert;
  
+ 	      /* XXX - we only want to do this if we are at the end of the line
+ 		 so we move there with _rl_move_cursor_relative */
  	      if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
! 		{
! 		  _rl_move_cursor_relative (ne-new, new);
! 		  goto clear_rest_of_line;
! 		}
  	    }
  	}

Reply via email to