# $EPIC: set_output_rewrite.txt,v 1.2 2006/08/20 15:02:36 sthalik Exp $
set output_rewrite
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 |
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-
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!
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.
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.