Thanks, but I have all that already working (I'm using liboop for the
asynchronous I/O and it has a readline adapter). My question is not
about I/O, only about display.
OK, sorry, I didn't get that from your mail. In rlwrap (which also deals with the problem of responding to asynchronous events while keeping the prompt and input line intact) I use some low-level terminal manipulation to e.g. move the cursor and clear the current line. You may be right that one should be able to do without (although I'm out of my depth there) but it is not too painful - just use tgetstr() to get some control sequences for the current terminal and wrap them in a few functions clear_line(), move_cursor(where) etc.
Hans