3

在 Visual Studio 2008 中以编程方式强制关键字大写的最简单方法是什么?

我们使用专有的命令分隔语言(如 HTML)。我们正在尝试从旧版编辑器迁移到 Visual Studio 2008。我们的编码标准是将命令大写。旧的编辑器被定制为识别命令开始分隔符并强制大写,直到输入结束分隔符或按下转义键。

在 Visual Studio 2008 中最好的方法是什么?可以用宏或加载项来完成吗?

(2009 年 1 月 12 日编辑)

感谢您迄今为止的建议。我认为他们没有回答我的问题。

说明:

  • 以前的编辑器是 CodeWright,因此那里的自定义不能移植到 Visual Studio。
  • 源代码不是 C#。StyleCop 似乎专门用于 C#。我们的语言类似于 HTML 等标记语言,但具有不同的分隔符和命令。
  • 我试图实际大写作为开发人员类型,而不是提醒他们适当的大写。由于命令都是定界的,我们当前的编辑器实际上在输入开始定界符时打开了 Caps Lock。当按下结束分隔符或退出键时,大写锁定将关闭。这与键盘上 Caps Lock 的状态无关。
4

3 回答 3

4

试用Microsoft 网站上提供的StyleCop 。您可能必须针对您的特定编码标准调整规则集。对于我们使用的编码标准,它开箱即用几乎是完美的。

于 2009-01-09T00:16:21.777 回答
1

虽然耗时,但这篇SO 帖子向您展示了如何将标签添加到 VS2005 中的验证设置中。我认为这种方法在 2008 年没有改变。

如果您要从旧版本的 Visual Studio 迁移,则可以只导入旧设置和自定义标签。

于 2009-01-09T00:15:46.210 回答
1

这可能不是最好的解决方案,但这是我想出的。

使用宏来捕获按键事件。

就是这样:

  1. 在 Visual Studio 中,转到工具->宏->宏 IDE菜单
  2. 双击“MyMacros”查看不同的部分
  3. 双击“环境事件”
  4. 在环境事件模块中添加以下代码。
  5. 保存文件并返回常规 VS IDE 进行测试。

    Private My_AutoCaps As Boolean = False
    Private Sub TextDocumentKeyPressEvents_BeforeKeyPress(ByVal Keypress _
      As String, ByVal Selection As EnvDTE.TextSelection, _
      ByVal InStatementCompletion As Boolean, ByRef CancelKeyPress As Boolean) _
      Handles TextDocumentKeyPressEvents.BeforeKeyPress
         Dim fileName As String = UCase(Selection.DTE.ActiveDocument.Name)
         If ( fileName.EndsWith(".CPI") ) Then
             If (My_AutoCaps) Then
                 'MsgBox(Keypress)
                 If (Keypress = "(" Or Keypress = ":") Then
                     'MsgBox("End of command character pressed.")
                     My_AutoCaps = False
                     Return
                 ElseIf (Keypress >= "a" And Keypress <= "z") Then
                     'MsgBox("Letter pressed.")
                     Selection.Text = UCase(Keypress)
                     CancelKeyPress = True
                 End If
             Else 'AutoCap is not on yet
                 If (Keypress = "^") Then
                     'MsgBox("You pressed the Start Command character.")
                     My_AutoCaps = True
                     Return
                 End If
             End If
         End If
    End Sub
    

此宏仅限于 *.CPI 文件。

我还没有想出如何捕获 Esc 键,但这现在可以工作。

于 2009-01-15T22:06:26.193 回答