bug-bash
[Top][All Lists]
Advanced

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

Re: Setting READLINE_POINT isn't always applied (4.0.24)


From: Henning Bekel
Subject: Re: Setting READLINE_POINT isn't always applied (4.0.24)
Date: Mon, 20 Jul 2009 13:08:02 +0200
User-agent: KNode/0.99.01

Chet Ramey wrote:

> Henning Bekel wrote:
>> Hello,
>> If I try to change READLINE_LINE and READLINE_POINT from a
>> function bound via bind -x, then setting READLINE_POINT is not
>> applied every second time I invoke the function. Instead, the
>> cursor is placed at the end of the line.
>> 
>> Simple test case:
>> 
>> test_rl () {
>>     READLINE_LINE="$READLINE_LINE#edited"
>>     READLINE_POINT=3
>> }
>> 
>> bind -x '"\ew": test_rl'
>> 
>> And keep hitting \ew... every first time the cursor is placed
>> at position 3, every second time it ends up at the end of the
>> line.
>> 
>> Is this the intended behavior or is it a bug?
> 
> It's a bug.  A fix will appear as a patch to bash-4.0.

Thanks!

>> Also, is it intended that the modified line is drawn on a new
>> line? For example, if I wrote a function that increments the
>> word at READLINE_POINT if it contains only digits, and i wanted
>> to increase a value by hitting a keyseq five times, I'd end up
>> with five lines being printed in my terminal. I'd love to see
>> this work like readline's own editing functions (e.g.
>> upcase-word) or macros that edit the line without printing it
>> again on a new line. But maybe I just misinterpreted the
>> purpose of this new feature. If so, could you explain it's
>> intended purpose?
> 
> It's intended.  Since the command executed as a result of `bind
> -x' is an arbitrary one that can do anything it wants to the
> display, it's better to completely redraw the line.

I already assumed this, just thought I'd make sure, thanks.

> I wonder if we could specify whether or not to completely redraw
> the line with a return status.

As far as I see it there hasn't been a reason to return a specific 
value from a function bound via -x in the past, has there? Still, 
maybe some users have done so out of principle (as in "I just 
always return 0 on success for any function"), and thus giving 
meaning to the return value might result in unexpected behaviour 
for existing code... not sure about this.

Alternatively, couldn't another option like '-X' be introduced for 
bind to explicitly request not to redraw the line completely? Or 
would you consider this feature creep?

Best Regards,
Henning







reply via email to

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