From romain.francois at dbmail.com  Fri Mar 20 23:05:08 2009
From: romain.francois at dbmail.com (Romain Francois)
Date: Fri, 20 Mar 2009 23:05:08 +0100
Subject: [Rd] throwing a "condition" when the current working directory
	changes
Message-ID: <49C41314.9010908@dbmail.com>

Hi,

Would it make sense to throw a condition when the working directory 
changes, so that interested parties (such as guis can act based on the 
change using an appropriate calling handler), and not interested parties 
can just ignore it.

For example, something like this:

setwd <- function (dir) {
       out <- .Internal(setwd(dir))
       setwdCondition <- simpleCondition( paste( "setwd: ", dir)  )
       class( setwdCondition ) <- c("setwd", "condition" )
       setwdCondition$dir <- dir
       signalCondition( setwdCondition )
       invisible( out )
}

which could handled like this to have your prompt responding to changes 
of current directory:

withCallingHandlers( f()  , setwd = function(e) options( prompt = 
sprintf( "[%s]> ", e$dir )  )   )

Beyond the simple example, would it make sense to define a set of 
condition or events, or is this abusing the concept of conditions and 
something else should be used ? hooks ?

Also, is there a way to "register" a calling handler so that it listens 
to every top-level command. Something like options( "error") but for 
handling other kinds of conditions ?

Romain

-- 
Romain Francois
Independent R Consultant
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr



[Rd] throwing a "condition" when the current working directory changes
Romain Francois