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. > 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 wonder if we could specify whether or not to completely redraw the line with a return status. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/