From murdoch.duncan at gmail.com  Wed Sep  1 15:59:22 2010
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Wed, 01 Sep 2010 09:59:22 -0400
Subject: [Rd] introspective capabilities
In-Reply-To: <8762ypmw62.fsf@cantab.net>
References: <87iq2ws25s.fsf@cantab.net> <4C7BD5BB.7050501@gmail.com>
	<8762ypmw62.fsf@cantab.net>
Message-ID: <4C7E5C3A.7070006@gmail.com>

On 01/09/2010 9:27 AM, Christophe Rhodes wrote:
> Duncan Murdoch <murdoch.duncan at gmail.com> writes:
>
> > On 27/08/2010 7:52 AM, Christophe Rhodes wrote:
> >> Hi,
> >>
> >> Is there any way, from R code, to perform introspection as to where
> >> certain names acquired their values?
> >
> > There's the "keep.source" option to source() and the optional
> > "srcfile" argument to parse() that tell R to keep this information.
> > If you haven't changed the default
> > getOption("keep.source") from TRUE, then source will default to
> > keeping it, and you can find the original location of a function
> > definition for function f by looking in attr(body(f), "srcref").  See
> > ?srcref for the format; there aren't a lot of user-level utility
> > functions for working with this.
>
> Thanks.  This is enough for my immediate purposes: supporting
> single-keystroke (M-.) jumping to source locations of functions.
>
> > For packages, the relevant option is "keep.source.pkgs" at the time
> > the package is installed.
>
> Thank you.
>
> Is there anything like a cross-referencing database within R?  The
> functionality I'm looking for here is to be able to name a function, and
> come back with a list of functions (or srcrefs) where that name is
> used.  (I realise that this is not in general possible; just the
> lexically-apparent cases would be enough).


There is no such database already built, but I imagine the functions in 
the codetools package could construct one. 

Duncan Murdoch



[Rd] introspective capabilities
Duncan Murdoch