在 Visual Studio 2008 中以编程方式强制大写?
-
06-07-2019 - |
题
在 Visual Studio 2008 中以编程方式强制关键字大写的最简单方法是什么?
我们使用专有的命令分隔语言(如 HTML)。我们正在尝试从较旧的编辑器迁移到 Visual Studio 2008。我们的编码标准是将命令大写。旧编辑器经过自定义,可以识别命令开始分隔符并强制大写,直到键入结束分隔符或按下转义键。
在 Visual Studio 2008 中执行此操作的最佳方法是什么?可以通过宏或者插件来完成吗?
(2009 年 1 月 12 日编辑)
感谢您迄今为止提出的建议。我认为他们没有回答我的问题。
澄清:
- 以前的编辑器是 CodeWright,因此其中的自定义无法移植到 Visual Studio。
- 源代码不是 C#。StyleCop 似乎是专门针对 C# 的。我们的语言类似于 HTML 等标记语言,但具有不同的分隔符和命令。
- 我试图在开发人员键入时实际大写,而不是提醒他们正确的大写。由于命令都是分隔的,我们当前的编辑器实际上在键入开始分隔符时打开大写锁定。当按下结束分隔符或退出键时,大写锁定将关闭。这与键盘上 Caps Lock 的状态无关。
解决方案 3
这可能不是最好的解决方案,但这是我想到的。
使用宏捕获按键事件。
就是这样:
- 在 Visual Studio 中,转到 工具->宏->宏IDE 菜单
- 双击“MyMacros”查看不同部分
- 双击“环境事件”
- 在环境事件模块中添加以下代码。
保存文件并返回常规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 键,但现在可以了。
不隶属于 StackOverflow