正確にはエレガントではありませんが、機能します (ClearAll の後にメイン ループを 1 回呼び出す必要があります)。
ActionMenu["Clear",
{"Clear global variables" :> (ClearAll["Global`*"];
Block[{nb}, nb = CreateDocument[ExpressionCell[42, "Input"],
Visible -> False]; SelectionMove[nb, All, Notebook];
SelectionEvaluate[nb]; NotebookDelete[nb];])}]
もちろん、Mathematica 8 の新しい NotebookEvaluate 関数を使用する必要がありますが、ここでは機能しないようです (つまり、
ActionMenu["Clear",
{"Clear global variables" :> (ClearAll["Global`*"];
Block[{nb}, nb = CreateDocument[ExpressionCell[42, "Input"],
Visible -> False]; NotebookEvaluate[nb];
NotebookDelete[nb];])}]
エラーメッセージを表示します
Could not process unknown packet "1".