Helmをデバッグする方法


7

私は舵取りに問題があるのでdebug-on-error、問題の特定に努めました。これで問題が発生するたびに、*Backtrace*バッファーは期待どおりに表示されますが、私はまだヘルムの主要モードの1つであり、バックトレースバッファーをナビゲートして正常にデバッグすることができません。

メジャーモードはまだミニバッファーを使用しており、キーシーケンスを "盗用"してデバッグを妨げているようです。helm-mulit-occur進行中を終了すると、バックトレースバッファーがクリアされ、デバッグを続行できません。

elispデバッガーを実行したままメジャーモードを「一時停止」して、通常どおりデバッグできるようにする方法はありますか?


どの機能がバックトレースをトリガーしていますか?私debug-on-entryhelm(エラーがなかったのでエラーが発生したため、debug-on-errorはトリガーされませんでした)を使用し、引き続きデバッグできます。
Vamsi 2014

@Vamsi:私が使用helm-multi-occurしていて、helmが正常に実行された後しばらくしてから発生している特定のエラーはhelm-interpret-value: Symbol must be a function or a variableです。
nispio 2014

このメジャーモードのキーマップで、キーf5をother-windowにバインドします。その後、それから切り替えることができるはずです。また、enable-recursive-minibuffersをtに設定します。
Malabarba 2014

@Malabarba:other-windowこのモードではコマンドは何も実行せず、ミニバッファーには常にフォーカスがあるようです。C-h mコマンドにマッピングされてhelm-helpdescribe-modeますが、手動で実行すると、にいることがわかりminibuffer-inactive-modeます。
nispio 14

1
バックトレースを見ると、helm-interpret-valueを呼び出している関数を特定できるはずです。次に、それをEdebugして、何が起こっているかを調べることができます。
Malabarba、2014年

回答:


3

コマンドhelm-toggle-suspend-updateC-!デフォルトでバインドされます。helmを閉じたり、再帰的な更新を終了したりすることはありませんが、一時的にhelm-modeの「侵襲性」が大幅に低下します。更新を一時停止すると、helmがキーボードとマウスのすべての入力を「盗む」ことがなくなり、別のウィンドウでhelmプロセスをデバッグできるようになります。


2

メジャーモードを「一時停止」することはできませんが、質問へのコメントで示唆されているように、エラーをトリガーしたバッファーからバックトレースバッファーに移動することが可能です。バッファのモードは、エラーが発生した場所を上書きした場合、そのキーマップに明示的にキーを追加し、別のバッファに移動するには、通常のグローバルバインディングがありますあなたが別のバッファを選択する機能をバック与えます。

ただし、モードがユーザー入力をより洗練された方法で読み取り、離れることができない場合もあります。そのような完了バッファ/モードの場合にはhelm意味があります。

ただし、単に終了してhelmからに移動できる場合があります*Backtrace*。バッファはウィンドウに表示されなくなりますが、それでも存在し、最新のバックトレースが含まれているはずです。「バックトレースバッファがクリアされた」とのことですが、バッファは単に消えるか、その内容は本当にクリアされていますか?後者の場合helm、これはバグと見なされる可能性があるため、リポジトリで課題を開くことができます。


ヘルムがまだアクティブな間に、バックトレースバッファーをクリックし、キーシーケンスを再バインドしてM-x other-window直接呼び出してみましたが、ヘルムコンプリートミニバッファーからフォーカスを外すことはできません。バックトレースバッファーが最初に表示されるときは、アクティブウィンドウですが、ほとんどすべてのキー操作がヘルムによって「盗まれ」、完了モードに戻ります。C-g元に戻す情報がなく、バックトレースバッファーがクリアされた状態でヘルムを終了すると、
nispio 2014年

1
helmが再帰編集を使用しているように聞こえます(を参照してください(elisp)Recursive Editing。などのパッケージには意味がありますhelmが、終了するとhelm(コマンドを定期的に呼び出すか、ケースで中止することにより)前のレベルに戻るため、現在のレベルのバックトレースが失われます。。あなたは正しい軌道に乗って、完全になかったので、多分舵がすでにこれを解決する方法を提供し、それ以外の問題を開いて、そのよくある質問をご確認ください。M-x fundamental-mode仕事もかもしれないが、それは、これは間違ったバッファにモードを変更することも可能だけれども。
メガネザルを

1
前のコメントの解析エラー:括弧が一致していません。;-)
nispio 2014年

どういう意味かわからない。
tarsius 2014年

タイトルを変更してください。ほとんどの場合、「メジャーモードのデバッグ」は問題を引き起こしません。この問題はヘルムに非常に固有です。
tarsius 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.