Dart でエラーのあるソース ファイルを正しく識別するために、コンパイル モードを取得しようとしています。スタック トレースの例を次に示します。
Illegal argument(s): Id has invalid characters sample.xmi
#0 Id.Id (package:ebisu/src/ebisu_id/id.dart:23:7)
#1 id (package:ebisu/src/ebisu_dart_meta/meta.dart:1104:22)
#2 library (package:ebisu/src/ebisu_dart_meta/meta.dart:1108:46)
#3 Converter.convert (file:///home/user/open_source/codegen/dart/xmi/lib/xmi_to_dart.dart:44:30)
#4 main (file:///home/user/open_source/codegen/dart/xmi/lib/xmi_to_dart.dart:164:20)
まず、使用するのに最適なダーツ モードがわかりません。私はこれらの2つを見つけました:
- https://github.com/nex3/dart-mode/blob/master/dart-mode.el
- http://dart.googlecode.com/svn/trunk/dart/tools/utils/elisp/dart-mode.el
どれが推奨されているかわかりませんか?最初のものを使用しようとしていますが、コンパイル エラーのサポートに関連するものは何も表示されません。後者には何かがありますが、一致していません (コンパイラ メッセージ/スタック トレースが進化したため、おそらく古くなっています)。ここで、私の試みでは、これらの行を最初のダーツ モード ファイルに追加しました。
(require 'compile)
(add-to-list 'compilation-error-regexp-alist 'dart)
(add-to-list 'compilation-error-regexp-alist-alist
'(dart "(file://\\([^:]*\\):\\([0-9]*\\):\\([0-9]*\\))" 1 2 3))
したがって、これは「...(file:///...)」としてリストされている行と一致し、エラーに正しくジャンプします。これ (または他の式) は、例の '...(package:ebisu/src/...)' の #0 スタック フレームのような行を誤って識別し、「Find this error in ...」というエラー タイプ メッセージを残します。 " ジャンプ先のファイル名を入力するように要求するミニバッファー。これを修正したい。それで、本当に2つの質問があります。パッケージの一致をどのように取得したかわかりません。おそらく他の一致アルゴリズムですか?次に、現在のディレクトリ (CWD) でファイルを検索してテキストを処理するように、「#0」スタック フレームを一致させる方法はありますか?
(package:ebisu/src/ebisu_id/id.dart:23:7)
の等価物として
(file://CWD/packages/ebisu/src/ebisu_id/id.dart:23:7)
どこで CWD は現在の作業ディレクトリに置き換えられたテキストですか?