2011-08-11 9 views
4

ActionMenuClearAll["Global`*"]を実行するカスタムパレットを作成しました。これは目的のアクションを実行しますが、フロントエンドは、ClearAll["Global`*"]がノートブックセルから直接実行されたときに発生する(それ以外の何かが実行された後にのみ更新されます)ので、色を黒から青(標準)に即座に更新しません。フロントエンドの表示状態のリフレッシュを開始する方法はありますか?カスタムパレットからClearAll ["Global` *"]を実行してローカル変数の色を更新しないのはなぜですか?

編集:パレットからパッケージを読み込むと同じことが起こります(青はすぐに黒に更新されません)。

+2

を与えます彼のノートブックは常にシンボルの状態をチェックすることはできないので、あなたがカーソルを動かすときのように、使用中であることが分かっているときだけそれを行います。この問題はあなたにとって大きな問題ですか? (別名:すべてのSO投稿は右下にあなたの名前で自動的に署名されているので、投稿に追加しないと好きです。) – Simon

+0

巨大な問題ではありませんが、ClearAllを使用して私の機能、そしてこのパレットは私の行動を簡素化しますが、私は別の色を得るために何か他のことをする必要がある場合は大きくはありません。 私の署名をreRemoved(私はあなたが最初に私がそこにputtedしていたと確信していたので、私の心を失っていたと思った...) –

答えて

6

正確にエレガントな、それが動作します(メインループがClearAllを後に一度と呼ばれることがあります)なし:もちろん

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". 
+0

良い方法 - +1。ところで、StackOverflowへようこそ! –

+0

Rolf、StackOverflowへようこそ! Mathematicaの知識豊富なユーザをコミュニティに招待するには、常に良いことです。あなたがここでそれを楽しむことを願っています。あなたの答えについては、私は2番目の作品に同じエラーが発生します。最初のものが動作しますが、メッセージも生成されます: "ClearAll :: clloc:ローカル変数の結果をクリアできません。" " –

関連する問題