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



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

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

例如

如果我们编译一个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脚本适当地重新格式化行。这是可行的,但有点笨拙,如果TypeScript有一点灵活性就好了。

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

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

您还可以通过运行类似tsc --pretty false app.ts的程序来关闭漂亮模式,然后emacs编译模式将开始识别错误输出。

最新更新