Bold/underlined/colors and ri

Folks:

It’s always bugged me that ‘ri’’ throws away a fair amount of
font-related stuff when it outputs to a terminal. In the new ri, I’d
like to be able to keep it. However, that leaves me with a couple of
(apparent) problems:

  1. I’d like to use the terminfo low-level methods in curses to get the
    strings to use to (for example) embolden strings, but the standard Ruby
    curses library doesn’t seem to implement these.

  2. Even if I assume ANSI-style escape sequences, getting these to pass
    transparently through a pager program seems to be system-dependent.

Ideally, I’d like to be able to have a nicely configurable output that
used colors and/or bold/underlining to add information to the ri
output. I’d like it to be paged too.

Anyone got any ideas?

Cheers

Dave

You can use the same approach as man does: it relies on a pager’s
ability to do highlighting and underlining when a backspace character
is used. If you do, for example, “man man > man.txt” and then “vi
man.txt”, you would notice a bunch of backspace characters. If man
wants to highlight “NAME”, it outputs it as “N^HNA^HAM^HME^HE”. The
same approach is used for underlining (I am not sure whether other font
styles are also supported). Pagers can use this information to do
actual highlighting/underlining depending on a terminal currently in
use.

A benefit of such approach, among others, is that even if you redirect
the output to a file, it is easy to get rid of “font styles” with a
simple search-and-replace" command in vi. With using escape sequences
it will not be that trivial.

Sincerely,
Gennady Bystritsky

···

On Dec 20, 2003, at 19:51, Dave Thomas wrote:

Folks:

It’s always bugged me that ‘ri’’ throws away a fair amount of
font-related stuff when it outputs to a terminal. In the new ri, I’d
like to be able to keep it. However, that leaves me with a couple of
(apparent) problems:

  1. I’d like to use the terminfo low-level methods in curses to get the
    strings to use to (for example) embolden strings, but the standard
    Ruby curses library doesn’t seem to implement these.

  2. Even if I assume ANSI-style escape sequences, getting these to pass
    transparently through a pager program seems to be system-dependent.

Ideally, I’d like to be able to have a nicely configurable output that
used colors and/or bold/underlining to add information to the ri
output. I’d like it to be paged too.

Anyone got any ideas?

Cheers

Dave