技术开发 频道

让Visual Studio支持CUDA代码折叠

        【IT168 技术】光把CUDA SDK中的usertype.dat文件复制到IDE目录下,只能让VS支持CUDA的关键字高亮显示;而VS好用的代码折叠却不能应用到CU文件上,真是让人气愤.于是我就翻翻注册表,发现了可以让VS支持CU文件代码折叠的方法:

  HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\[XXX]\Languages\Language Services\C/C++

  下,向"NCB Default C/C++ Extensions"项里追加.cu;即可,譬如".cpp;.cxx;.c;.cc;.h;.hh;.hxx;.hpp;.inl;.tlh;.cu;"

  注释:[XXX]是你的VS版本号.

  如此一来,重启VS即可开到CU文件也享用到代码折叠服务!

  再来说一下打印服务的问题,原本VS里面代开CU文件,可以看到打印按钮和菜单项是Disabled的,这可急煞人了,大家知道VS可以提供代码高亮和现实行号功能,这样打印出来的代码非常清晰工整,但是现在VS死活不让我们打印CU文件,不知道MS心里的什么.

  那么如何解决呢,其实VS的打印功能的启用/禁用是通过宏来实现的,我们打开宏管理器,编辑VSEditor模块里的IsPrintableFile函数,向其中添加.cu的支持,修改后的代码如下:

  Function IsPrintableFile(ByVal projItem As EnvDTE.ProjectItem) As Boolean

  Dim fileName As String

  Dim extensions As New System.Collections.Specialized.StringCollection

  ' 如果添加到项目的文件属于可以打印的类型,

  ' 则将该文件类型的扩展名添加到以下列表:

  Dim exts As String() = {".cpp", ".c", ".h", ".cu", ".idl", ".def", ".rgs", ".rc", ".cs", ".vb", ".xml", ".txt", ".jsl"}

  extensions.AddRange(exts)

  fileName
= projItem.FileNames(1)

  Return extensions.Contains(System.IO.Path.GetExtension(fileName).ToLower())

  End Function

  然后重新打开CU文件,你就会发现VS已经让你打印它了.

  这里说明一下,还有几个宏函数没有提供对CUDA的支持,您可以参考下面的代码一并给他改了:

  Utilities模块:

  ''

  '' 此模块和其他模块的 Helper 函数。

  ''

  Function LineOrientedCommentStart(Optional ByVal document As Document = Nothing) As String

  Dim extension As String

  If (document Is Nothing) Then

  document
= DTE.ActiveDocument

  End If

  extension
= document.Name

  If (extension.EndsWith(
".cs") Or extension.EndsWith(".cpp") Or extension.EndsWith(".cu") Or extension.EndsWith(".h") Or extension.EndsWith(".idl") Or extension.EndsWith(".jsl")) Then

  Return
"//"

  ElseIf (extension.EndsWith(
".vb")) Then

  Return
"'"

  Else

  Throw New Exception(
"Unrecognized file type. You can add this file type by modifying the function Utilities.LineOrientedCommentStart to include the extension of this file.")

  End If

  End Function
0
相关文章