Request: An additional hook in plot.new() that is called prior to the call to 
.Internal(plot.new()).
Reason: To allow the hook to set up or modify a graphics device that the new 
plot will appear in.

The code change needed for this is simple - just 4 new lines of R code in 
src/library/graphics/R/plot.R:plot.new()

Current definition of plot.new() in src/library/graphics/R/plot.R:

plot.new <- function()
{
    .Internal(plot.new())
    for(fun in getHook("plot.new")) {
        if(is.character(fun)) fun <- get(fun)
        try(fun())
    }
    invisible()
}

New definition of plot.new() in src/library/graphics/R/plot.R:

plot.new <- function()
{
    for(fun in getHook("plot.prenew")) {
        if(is.character(fun)) fun <- get(fun)
        try(fun())
    }
    .Internal(plot.new())
    for(fun in getHook("plot.new")) {
        if(is.character(fun)) fun <- get(fun)
        try(fun())
    }
    invisible()
}

In src/library/graphics/man/frame.Rd after the existing sentence beginning "There is 
a hook..." in the DETAILS section, the following sentence could be added:

"There is another hook called \code{"plot.prenew"} which is called before advancing 
the frame.  This hook can be used to create a new plot "

The name of the hook is not very important -- I've suggested "plot.prenew" here.  Another 
possibility could be "plot.new0".

More detail on the reason:

In a tabbed graphics widget 
(https://r-forge.r-project.org/projects/tabbedplots/ ), having this hook would 
enable it to operate in a mode where a new tab is automatically created for 
each new plot.

thanks for your consideration,

Tony Plate

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to