ジャスティンの答えに追加する:
私のslimeconfigには、clojureスタックトレースからファイルと行にジャンプすることになっている次のものがあります。
残念ながら、現時点では実際には機能しないことを認めなければなりません-関数は正しいファイルを見つけることができません-しかし、私が知る限り、project-root
定義方法を変更するか、ファイルシステム上のプロジェクトの構造(私はそれを調べる時間や傾向がありませんでした)。
しかし、それは良い点をもたらしますが、このようなほとんどの機能では、一般的でポータブルな方法でプロジェクトのルートを理解するのは少し難しいです。この場合、ディレクトリに依存してsrc
いますが、Pythonプロジェクトにはおそらく適切ではありません。
したがって、Justinが中断したところから続けて、以下の関数からいくつかのヒントを取得し、テストケースエラーからファイル名と行番号を解析し、行番号へのリンクを作成し、とを使用compilation-parse-errors-filename-function
しpropertize
てgud
バッファ内の行にリンク。
それが機能するようになったら、あなた自身の質問に答えを追加してください。多くの人がそれを役に立つと思うでしょう。
(defun slime-jump-to-trace (&optional on)
"Jump to the file/line that the current stack trace line references.
Only works with files in your project root's src/, not in dependencies."
(interactive)
(save-excursion
(beginning-of-line)
(search-forward-regexp "[0-9]: \\([^$(]+\\).*?\\([0-9]*\\))")
(let ((line (string-to-number (match-string 2)))
(ns-path (split-string (match-string 1) "\\."))
(project-root (locate-dominating-file default-directory "src/")))
(find-file (format "%s/src/%s.clj" project-root
(mapconcat 'identity ns-path "/")))
(goto-line line))))
また、この関数をWebのどこかからコピーしたのですが、URLを思い出せません。Phil Hagelberg(技術)の優れたEmacsスターターキットからのもののようです。