2009-01-09 79 views
3

什麼是在Visual Studio 2008中以編程方式強制關鍵字大寫的最簡單方法?在Visual Studio 2008中以編程方式執行大寫?

我們使用專有的命令分隔語言(如HTML)。我們正試圖從一個較老的編輯器遷移到Visual Studio 2008.我們的編碼標準是大寫命令。舊的編輯器被定製爲識別命令開始分隔符並強制大寫,直到鍵入結束分隔符或按下轉義鍵。

什麼是在Visual Studio 2008中做到這一點的最佳方式?可以用宏或加載項來完成嗎?

(編輯2009年1月12日)

謝謝你的建議爲止。我不認爲他們回答我的問題。

澄清:

  • 以前編輯是這樣的CodeWright自定義有不可移植到Visual Studio。
  • 源代碼不是C#。 StyleCop似乎專門用於C#。我們的語言與HTML之類的標記語言類似,但具有不同的分隔符和命令。
  • 我試圖實際使用開發人員類型,而不是提醒他們適當的大寫。由於命令都是分隔的,我們當前的編輯器實際上會在輸入開始分隔符時打開Caps Lock。當按下結束分隔符或退出鍵時,大寫鎖定將被關閉。這與鍵盤上Caps Lock的狀態無關。

回答

1

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

使用宏來捕獲按鍵事件。

方法如下:

  1. 在Visual Studio轉到工具 - > 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鍵,但現在可以工作。

1

儘管耗時,this SO帖子展示瞭如何將標籤添加到VS2005中的驗證設置。我不認爲這種方法在2008年發生了變化。

如果您要從舊版本的Visual Studio移植,您可能只需導入舊的設置和自定義標籤。

4

試用StyleCop,可從微軟的網站上獲得。您可能需要調整您的特定編碼標準的規則集。對於我們使用的編碼標準,它幾乎是完美的。

+0

不錯,我已經看過這個工具的討論,但直到現在都忽略了它。這一定會有所幫助! – BobbyShaftoe 2009-01-09 00:55:43

相關問題