在Visual Studio 2008中以编程方式强制执行大写?

时间:2009-01-09 00:09:59

标签: visual-studio visual-studio-2008 customization

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

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

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

(编辑1-12-2009)

感谢您提出的建议。我不认为他们回答了我的问题。

澄清:

  • 之前的编辑器是CodeWright,因此那里的自定义设备无法移植到visual studio。
  • 源代码不是C#。 StyleCop似乎专门用于C#。我们的语言类似于HTML等标记语言,但具有不同的分隔符和命令。
  • 我试图以开发人员类型的形式实际资本化,而不是提醒他们正确的资本化。由于命令都是分隔的,因此当键入起始分隔符时,我们当前的编辑器实际上会打开Caps Lock。当按下结束定界符或退出键时,大写锁定将被关闭。这与键盘上的Caps Lock状态无关。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

使用宏捕获按键事件。

以下是:

  1. 在Visual Studio中,转到工具 - >宏 - >宏IDE 菜单
  2. 双击“MyMacros”以查看不同的部分
  3. 双击“EnvironmentEvents”
  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
    
  6. 此宏仅限于* .CPI文件。

    我还没有弄清楚如何捕获Esc键,但现在可以使用了。