Emacs Typescript错误行格式输出 - 用户定义的选项?

时间:2016-03-25 12:45:04

标签: emacs typescript

我们已经开始使用TypeScript和Emacs作为我们选择的编辑器。

我们发现的一个问题是TypeScript错误行格式似乎与Emacs编译模式错误处理不兼容。

e.g。

如果我们编译一个C程序并引入一个故意的错误,我们得到

t1.c:6:5: error: use of undeclared identifier 'a'                                       

如果我们为TypeScript编译器做同样的事情(忽略消息,它的格式很重要)

utilities.ts(13,18): error TS2384: Overload signatures must all be ambient or non-ambient.

Emacs可以使用键命令ESC-g n处理第一种类型的错误消息,并将主编辑器窗口移动到错误位置。

Emacs无法处理第二种错误行格式。

我们通过将TypeScript编译器包装在Perl脚本中并使Perl脚本适当地重新格式化行来破解了一种解决方法。这有效,但有点像kludge,如果TypeScript有更多的灵活性,那就太好了。

我们想知道是否有标志或某种方法将Typescript错误输出更改为与Emacs兼容的格式。

1 个答案:

答案 0 :(得分:1)

t1.c:6:5: ...格式实际上是GNU编码标准中记录的官方格式,因此我认为您应该联系Typescript编译器的作者并要求他们更改错误消息的格式。

同时,您需要调整compilation-error-regexp-alist来解释compile.el如何识别Typescript的错误消息。

可能类似

(eval-after-load 'compile
  (add-to-list 'compilation-error-regexp-alist
               '("^\\([^(\n]+\\)(\\([0-9]+\\),\\([0-9]+\\)):" 1 2 3)))

可能会让你开始。如果某些消息不是实际错误,但更像是警告或辅助信息,则可以对上述内容进行改进。有关格式的详细信息,请参阅C-h v compilation-error-regexp-alist RET