Retrieving pasteable function definition without contexts preprended
- To: mathgroup at smc.vnet.net
- Subject: [mg123866] [mg123866] Retrieving pasteable function definition without contexts preprended
- From: Szabolcs Horvát <szhorvat at gmail.com>
- Date: Sun, 25 Dec 2011 06:34:31 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Dear MathGroup, I'm essentially asking the same question that E. Martin-Serrano has asked this February (message quoted at the end): http://forums.wolfram.com/mathgroup/archive/2011/Feb/msg00515.html What is the best way to print the definition of a package symbols without contexts, so it's more readable? To his question (what is a substitute to Developer`ContextFreeForm), we can use Block[{$ContextPath = Append[$ContextPath = "contextIdontWantPrinted`", FullDefinition[symbol]] This method still has a problem though. The definition that's printed cannot be copied directly because quotation marks are missing. I would like to copy it to Workbench for formatting. Take for example the definition of RunThrough which contains WriteString[tmpfile, "\n"]. The "\n" part won't show at all. Are there any other solutions? Do you have any other suggestion about making it easy to read the code of already defined function (when we don't have access to the source file)? Note: I also asked about this here <http://stackoverflow.com/questions/8607813> and got an alternative answer to pasting to Workbench for formatting. > Hi, > > > > On 2003, I sent to MathGroup the question whose answer is in the link below. > > > > http://forums.wolfram.com/mathgroup/archive/2003/Jun/msg00146.html > > > > The idea was to remove the description of the context of local variables in > packages (the syntactical sugar, I said in that post), as to make clearer > the definitions inside the private context of packages, which really makes > obscure these definitions. > > > > With the answer given in the link to me question, I wrote a trivial function > which made the trick as follows, > > > > FullSymbolInfo[s_Symbol]:=Module[{d=FullDefinition[s]//Developer`ContextFree > Form},If[d==Null,Print["Symbol '"<>ToString[s]<>"' not defined"],d]] > > > > The idea was *Developer`ContextFreeForm* applied to the (full) definition of > the symbols in the private context, but now without the > Developer`ContextFreeForm* facility available, the function does not work > any more (I think it worked up to the version 6). > > > > I have unsuccessfully tried to find a substitution for it, (for the > *Developer`ContextFreeForm* command) might someone in the group come up with > an alternative? The function *FullSymbolInfo[s_Symbol]* used to be very > useful. > > > > Cheers. > > > > E. Martin-Serrano -- Szabolcs Horvát Mma QA site proposal: http://area51.stackexchange.com/proposals/37304