繁体   English   中英

Emacs对VS2012版本的支持

[英]Emacs support for VS2012 builds

我正在尝试设置.emacs,以便可以从Emacs内部进行VS2012项目的构建。

我按照Emacswiki上的说明进行操作 过去在VS2005中对我有用。

问题在于,此新版本的VS在每条错误/警告行的前面都添加了CPU名称,而emacs的C ++编译器解析变得混乱,并认为这是文件名的一部分。 例如,错误:

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

当访问“下一个错误”时,不是提示文件和行,而是提示我:

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

我可以在.emacs(或C和C ++模式)中进行一些调整来解决此问题吗? 另外,是否有较新版本的Emacs(或模式.el文件)可以更好地处理VS2012? 我目前正在使用GNU Emacs 24.2.1

我想我已经找到了。

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

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

主要问题是使用了列表找到的第一个匹配项,而不是最大的匹配项。 edg-1(爱迪生设计小组的LLVM前端)列表上有一个正则表达式,恰好与VS2012错误和警告相匹配。 它在列表中早于msft,因此已被使用。 Presto:目录匹配错误。

此问题在emacs开发人员列表上的该线程中进行了讨论,并在2012年10月14日修复了补丁

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

  1. 升级到Emacs 24.3或更高版本。 这应该有补丁。
  2. (方便使用)编辑lisp / progmodes / compile.el文件。 在compile compilation-error-regexp-alist-alist找到“ msft”条目,然后将其移动到有问题的“ edg-1”条目之前。 在执行此操作时,可能需要添加一个? 在反斜杠前的第一条正则表达式行的末尾(请参见diff链接 )。 然后对文件进行字节编译并重新启动emacs。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM