Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs 如何在编译模式下从包跳转到堆栈跟踪错误_Emacs_Dart - Fatal编程技术网

Emacs 如何在编译模式下从包跳转到堆栈跟踪错误

Emacs 如何在编译模式下从包跳转到堆栈跟踪错误,emacs,dart,Emacs,Dart,我正在尝试获得编译模式,以正确识别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:ebis

我正在尝试获得编译模式,以正确识别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)
首先,我不确定使用哪种最佳省道模式。我发现有两个:

不确定推荐哪一种?我正在尝试使用第一个,但我没有看到任何与编译错误支持相关的内容。后者有一些功能,但不匹配(可能随着编译器消息/堆栈跟踪的发展而过时)。在这里,在我的尝试中,我已将以下几行添加到第一个dart模式文件中:

(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…”,请求我输入要跳转到的文件名。我想解决这个问题。所以,有两个问题真的,我不确定它是如何得到包匹配的,也许是其他匹配算法?第二,是否有方法匹配“#0”堆栈帧,以便它只在当前目录(CWD)中查找文件并处理文本

(package:ebisu/src/ebisu_id/id.dart:23:7) 
相当于

(file://CWD/packages/ebisu/src/ebisu_id/id.dart:23:7)
CWD的文本替换为当前工作目录的位置?

如果将修补程序应用于compile.el,您应该能够执行以下操作:

(add-to-list 'compilation-error-regexp-alist 'dart-package)
(add-to-list 'compilation-error-regexp-alist-alist 
             '(dart-package "(package:\\([^:]*\\):\\([0-9]*\\):\\([0-9]*\\))"
                            (1 "packages/%s") 2 3))
编译错误regexp alist的docstring提到了这种格式字符串技巧,但如果没有补丁,它似乎无法正常工作