对VS2012构建的Emacs支持

Emacs support for VS2012 builds

本文关键字:Emacs 支持 构建 VS2012      更新时间:2023-10-16

我正试图得到我的。Emacs设置,这样我就可以从Emacs内部做VS2012项目的构建。

我按照Emacswiki上的说明来做这件事。它在过去的VS2005中为我工作。

问题是这个新版本的VS在每个错误/警告行前面附加了一个CPU名称,emacs的c++编译器解析会感到困惑,并认为这是文件名的一部分。例如,错误:

5>c:devprojmy_class.h(35): warning C4100: 'command' : unreferenced formal parameter (my_class.cpp)

当使用"next error"访问时,不是显示文件和行,而是提示:

Find this error in (default 5>my_class.h): ~/dev/proj/

我可以在我的。emacs(或者C和c++模式)中做一个调整来解决这个问题吗?或者,是否有更新版本的Emacs(或mode .el文件)可以更好地处理VS2012 ?我目前使用的是GNU Emacs 24.2.1

我想我已经找到了。

问题是不是 GNU Emacs没有尝试支持VS2012编译器消息,问题是它在支持中有几个错误(在24.2.1中)。

一点背景知识:Emacs用来识别错误和警告的所有regexp都在一个变量中,该变量具有迷人的冗余名称compilation-error-regexp-alist-alist。这是在compile.el elisp文件中声明的。

主要问题是使用了列表中找到的第一个匹配,而不是最大的。在edg-1 (Edison Design Group的LLVM前端)的列表上有一个regexp,恰好与VS2012错误和警告相匹配。它在列表中比msft更早,所以它被使用。

这个问题在emacs开发列表中讨论过,并在2012年10月14日发布了补丁。

有两个相当简单的解决方案。

  1. 升级到Emacs 24.3或更高版本。这应该有补丁。
  2. (方便)编辑你的lisp/progmodes/compile。el文件。在compilation-error-regexp-alist-alist中找到"msft"条目,并将其移动到冒犯的"edg-1"条目前面的某个地方。在此过程中,您可能希望在第一个regexp行末尾的反斜杠之前添加?(请参阅diff链接)。然后字节编译文件并重启emacs。