私はEmacsのメジャーモードを開発しています。たとえば、フォントの表示が行われたときにソースコードにブレークポイントを設定する方法はありますか?Emacs Lispメジャーモードのデバッグ
答えて
ステップ実行したい機能のLispソースを見つけてそこにM-x edebug-defun
と入力します。その後、その関数が実行されるたびに自動的にEdebugに配置され、必要に応じてステップを実行することができます。
奇数回で呼び出すことができるので、フォント機能はややこしいことがあります。 message
関数を使用して、メッセージを*Messages*
バッファに書き込むことができます。もう1つのトリックは、Font Lockをオフにして(機能が自動的に呼び出されないように)、デバッグしている関数をedebug-defun
で準備し、それを手動で呼び出すことです。 (M-:
(a.k.a. eval-expression
)を使用して非インタラクティブ機能を呼び出すことができます)。
デバッグ用マニュアルelispはfound hereです。上述したよう
あなたはedebug
を使用することができ、またありますM-Xデバッグ・エントリーに、あなたは(setq debug-on-quit t)
を設定することができます。リンク内のすべてのオプションをチェックしてください。どのように猫をスキンにしたいのかによって異なります。
他のプログラミング言語と同様に、printステートメントでデバッグできます。 (message "here, foo=%d" foo)
はあなたの友人です。 (おそらくこれらのメッセージは*Messages*
バッファに蓄積されているので、あまりにも速く進むと問題にはなりません)。trace-function
も役に立ちます。
私はたくさんのemacsモードを書いており、デバッガはめったに必要ありませんでした。通常、この問題は、よく配置されたいくつかの印刷ステートメントで公開されます。
原則として、デバッガは栄光の「挿入印刷ステートメント」マシンですが、コード自体を損なわずに自動化します。私はelispの機能をデバッグするのに便利です – Alex
また、いくつかのlispスニペットをすばやくデバッグしたい場合は、ielmモードを使用したい場合もあります。これは、たとえばpython対話モードのように動作します。
edebug
の代わりにdebug
を使用できます。関数の入力時にデバッガを開くには、M-x debug-on-entry THE-FUNCTION
を使用します。または、関数debug
の呼び出しをソースコードに挿入して、ブレークポイントとして機能させます(コードの再評価)。
しかし実際には、再表示などの奇妙な時間にフォントが実際に発生します。実際にフォント化プロセスをデバッグする必要がある場合は、正規表現だけでなく関数をfont-lock-keywords
に使用できます。
しかし実際には、フォントロックのデバッグの問題について具体的に説明する必要があります。通常、人々は(a)font-lock-keywords
(構造)を理解し、(b)彼らが望むものと一致しない正規表現を持っているという問題があります。 。はい、ちょうどあなたがLispのソースコードにしたい任意の時点で(debug)
を挿入し、デバッガはその時点で入力されます
- 1. EmacsのJavascriptメジャーモード
- 2. Emacsメジャーモードへのプリプロセッサの追加
- 3. 現在のemacsメジャーモードを編集する
- 4. Emacsでメジャーモードのマイナモードに入る
- 5. emacs lisp:* H elp *
- 6. Emacs Lispに:
- 7. emacsメジャーモードをリロードするには?
- 8. バッククォートと `in emacs lisp
- 9. EmacsのないLisp/Schemeインタプリタ?
- 10. emacs lispのstrstr()ですか?
- 11. emacs lispスクリプトを実行
- 12. Emacs Lispに面白いエラー
- 13. Emacs Lispに文字テーブル
- 14. メジャーモードのリロードなしでemacsのフォントロックキーワードを更新する
- 15. 省略モード(Emacs)のメジャーモード間の略語を共有する
- 16. Emacsでメジャーモードのグローバルマイナーを永久に無効にする
- 17. 共通lispとemacs lispの構造の相違点
- 18. Emacs rubyメジャーモードを更新しています
- 19. 空リストのemacs lispでの乗算
- 20. Emacs lispでのデータ型の概要
- 21. Emacs Lisp:(function(lambda ...))と(lambda ...)の違いは?
- 22. Emacs-Lispモードでの自動補完
- 23. Emacs Lisp:複数のコメント開始値
- 24. Emacs site-lispディレクトリを見つける
- 25. Emacs lisp - `&&`をシェルに送る方法は?
- 26. Emacs Lisp - 新しいウィンドウを開く
- 27. Emacs + GDB + SCons +デバッグのステップ
- 28. Emacsでのファイルのインポート同じディレクトリにあるLisp/Emacsの設定ファイル
- 29. emacsとdistelでデバッグerlangアプリケーション
- 30. emacs lispで無限ループを解消する方法は? (的環境:emacsの)
はい、これは私のインデントのために動作します。「ブレークポイント*についてのあなたの質問に答えるためにとにかく
、あなたが警告したように、フォント化機能ではなく警告します!ありがとう。 – Alex