> On 3/25/20 1:14 PM, Daniel Colascione wrote: > >> Ping? Anything I can do to help? > > OK, I sat down and looked at this code, since I'm homebound. I added the > active mark/region features (rl_activate_mark/rl_deactivate_mark/etc.) > and a couple of the smaller pieces (_rl_cr, the so/se sequences).
Thanks! > Can you > tell me why you decided to make the region management functions public? > Did you anticipate external application functions wanting to manage the > region? I was imagining applications wanting to highlight certain regions, e.g., a shell showing which command in a pipeline failed. You can also imagine a readline user supporting something like xterm-mouse-mode. Making the region functions public isn't essential right now though. > I haven't touched the face code in display.c. I'd like to find a simpler > way to do it: the patch seems to have a lot of overhead and adds more > complexity than I'd like at a time when I'm trying to make the redisplay > code simpler. I don't know of a better way to do that yet. The redisplay code needs to track the intended attribute state of each character in the buffer. I'm not sure what simpler approach might be viable. Fat characters? You'd still have to support the old char* interface, and you'd still need something like puts_face to "propertize" any strings we add to the buffer. A face system preserves the existing format of the buffer at least, and the redisplay update code is a logical extension of the current diffing logic.