/** Runs a command in the Plugins/Macros submenu on the current thread. */
 public static boolean runMacroCommand(String name) {
   if (instance == null) return false;
   // IJ.log("runMacroCommand: "+name+" "+instance.nMacros);
   if (name.startsWith(commandPrefixS)) name = name.substring(1);
   for (int i = 0; i < instance.nMacros; i++) {
     // IJ.log("  "+i+" "+instance.macroNames[i]);
     if (name.equals(instance.macroNames[i])) {
       MacroRunner mm = new MacroRunner();
       mm.run(instance.pgm, instance.macroStarts[i], name);
       return true;
     }
   }
   return false;
 }
 public boolean runMacroTool(String name) {
   for (int i = 0; i < nMacros; i++) {
     if (macroNames[i].startsWith(name)) {
       if (macroToolThread != null
           && macroToolThread.getName().indexOf(name) != -1
           && macroToolThread.isAlive())
         return false; // do nothing if this tool is already running
       MacroRunner mw = new MacroRunner(pgm, macroStarts[i], name, (String) null);
       macroToolThread = mw.getThread();
       // IJ.log("runMacroTool: "+macroToolThread);
       return true;
     }
   }
   return false;
 }