Table of Contents

# $EPIC: set_output_rewrite.txt,v 1.2 2006/08/20 15:02:36 sthalik Exp $

Synopsis:

set output_rewrite

Description:

If this /SET is defined (by default, it is un-set), then every time a LOGICAL line of output is about to be sent to a window, the /SET value is expanded, and the result of that expansion is substituted for the original text. The expansion is parsed in the context that:

$0 The window refnum the output is going to
$1- The text itself

Examples:

This would timestamp all output to all windows:

/SET OUTPUT_REWRITE $Z $1-

This would timestamp all output to all windows with a custom timestamp format:

/SET OUTPUT_REWRITE $strftime(%X) $1-

This would return proceed all output to all windows with the output of the user defined function $myfunc() called with the window number.

/SET OUTPUT_REWRITE $myfunc($0) $1-

Notes:

When changing /set output_rewrite inside of an alias, please remember that $'s are expanded before the /set is called, and so things like $1- or $myfunc($0) would be expanded at the /set time and not at the rewrite time. Make sure to double up your $$'s in such cases!

Practical:

For every line of output that goes to the screen, /on window is thrown. However, /on window cannot be recursively called, so there are some instances where output goes to the window without /on window having been thrown. This makes it hard to write general purpose time stamp handlers. Therefore, a general purpose way of doing final-editing on window output is needed. This set provides that capability.

Performance Note:

This is a very expensive operation, but is cheaper than using an /on window, and probably less of a hassle than redefining a zillion other /on's. It also is pretty reliable, since it will always be honored for all lines of output.