我们已经开始使用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兼容的格式。
答案 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
。