【问题标题】:Programmatically enforce capitalization in Visual Studio 2008?在 Visual Studio 2008 中以编程方式强制大写?
【发布时间】:2009-01-09 00:09:58
【问题描述】:

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

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

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

(2009 年 1 月 12 日编辑)

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

澄清:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 很好,我已经看到讨论过这个工具,但直到现在都忽略了它。这肯定会有所帮助!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      使用宏来捕获按键事件。

      方法如下:

      1. 在 Visual Studio 中,转到 Tools->Macros->Macros 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
        

      此宏仅限于 *.CPI 文件。

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

      【讨论】:

        猜你喜欢
        • 2022-07-04
        • 1970-01-01
        • 1970-01-01
        • 2019-04-16
        • 1970-01-01
        • 2017-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多