LocalizeVariables doesn't!
- To: mathgroup at smc.vnet.net
 - Subject: [mg123940] LocalizeVariables doesn't!
 - From: Frank Iannarilli <frankeye at cox.net>
 - Date: Sun, 1 Jan 2012 02:27:01 -0500 (EST)
 - Delivered-to: l-mathgroup@mail-archive0.wolfram.com
 - Reply-to: comp.soft-sys.math.mathematica at googlegroups.com
 
My reading of Docs on the LocalizeVariables->True option of Manipulate[] is that all variables associated with Controls will be localized (inside a DynamicModule).  To prevent "local" Manipulate variable name leaks into the Global namespace, I declare them as "dummy" controls, using: ControlType->None.  But this evidently doesn't work as I'd expect:
Try the following execution sequence:
?Global`*
  (* should NOT list myPicture as a variable *)
symbolLeaker[]:= Manipulate[....  (* definition cell later below *)
symbolLeaker[]  (* Invoke it *)
?Global`*
   (* myPicture now shows up in the Global` namespace !??! *)
What gives?
Thanks,
Frank
----------------------
symbolLeaker[] := Manipulate[
 
  myPicture = Table[Sin[i*j/cdivisor], {i, 1, 32}, {j, 1, 32}];
  ListPlot3D[myPicture, PlotLabel -> "Image", PlotRange -> All],
 
  (* >>>>>>> CONTROL/LAYOUT SECTION <<<<<<<<< *)
  Item[Style["Symbol Leaker", 16, Bold, Brown], Alignment -> Center],
  Delimiter,
  {{cdivisor, 64, "Sine Inverse Freq."}, Range[4, 128]},
 
  (* Dummy control variables,
  which are actually variables we'd like to keep localized to within \
this Manipulate, or otherwise they'd leak out as session-
  global variables.  A good rule of thumb:
  if a variable is included in TrackSymbols, it better be localized. 
  LocalizeVariables->
  True localizes variables associated with Controls.  *)
  {myPicture, ControlType -> None},
 
  (* Manipulate options *)
  LocalizeVariables -> True,
  TrackedSymbols :> {cdivisor},
  ContinuousAction -> False
  ]