2010-04-01 10 views
7

Rozważ fragment kodu CSS z pliku .css w Visual Studio 2010, aby go skomentować.Visual Studio 2010: wyróżnij tekst i komentarz CSS

alt text

Normalnie Ctrl + E, Ctrl + C omówi wybranego HTML i innego kodu źródłowego.

Ale podkreślając kod CSS & wykonujących to skrót wyników combo w komunikat ostrzegawczy:

Kombinacja klucz jest związany z poleceniem (Komentarz wybór), które nie są obecnie dostępne.

Czy istnieje pasek narzędzi lub skrót klawiaturowy w programie Visual Studio 2010, aby skomentować podświetlony tekst CSS?

Odpowiedz

8

Polecenie wyboru komentarza nie jest dostępne dla plików css.

Można jednak stworzyć prosty makro i przypisać skrót klawiaturowy do niego ...

Sub CommentCSS() 
    Dim selection As String 
    selection = DTE.ActiveDocument.Selection.Text 
    selection = "/*" + selection + " */"   
    DTE.ActiveDocument.Selection.Text = selection 
End Sub 

Aby „Odkomentuj” wybór użyć innego prostego makra:

Sub UncommentCSS() 
    Dim selection As String 
    selection = DTE.ActiveDocument.Selection.Text 
    selection = selection.Remove(0, 2) 
    selection = selection.Remove(selection.Length - 2, 2) 
    DTE.ActiveDocument.Selection.Text = selection 
End Sub 
2
Option Strict Off 
Option Explicit Off 
Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports EnvDTE90a 
Imports EnvDTE100 
Imports System.Diagnostics 

Public Module RecordingModule 
    'Document Comment[English Version] 
    'Author:kai cui([email protected]) 
    'BuildTime:2010-7-8 15:26:19 
    'Purpose:To patch the bug of Visual Studio 2010 can not make correct comments of css 

    '文档注释[简体中文] 
    '作者:崔凯([email protected]) 
    '创建时间:2010年7月8日15:30:24 
    '目的:修正Visual Studio 2010对CSS添加的错误注释 


    Sub CommentCSS() 
     'ref:VSEditor.CommentRegion() 
     'source code: 
     ' '' CommentRegion 将面向行的注释语法放在 
     ' '' 所选内容涉及的每一行的行首,并创建撤消操作 
     ' '' 以便对编辑的所有行仅执行一次撤消操作。 
     ' '' 
     'Sub CommentRegion() 
     ' Dim selection As EnvDTE.TextSelection 
     ' Dim startPoint As EnvDTE.EditPoint 
     ' Dim endPoint As TextPoint 
     ' Dim commentStart As String 

     ' selection = DTE.ActiveDocument.Selection() 
     ' startPoint = selection.TopPoint.CreateEditPoint() 
     ' endPoint = selection.BottomPoint 
     ' commentStart = Utilities.LineOrientedCommentStart() 

     ' DTE.UndoContext.Open("Comment Region") 
     ' Try 
     '  Do While (True) 
     '   Dim line As Integer 

     '   line = startPoint.Line 
     '   startPoint.Insert(commentStart) 
     '   startPoint.LineDown() 
     '   startPoint.StartOfLine() 
     '   If (line = endPoint.Line) Then 
     '    Exit Do 
     '   End If 
     '  Loop 
     ' Finally 
     '  ' 如果发生错误,则要确保对撤消上下文进行清理。 
     '  ' 否则,编辑器可能会处于永久的撤消上下文中。 
     '  DTE.UndoContext.Close() 
     ' End Try 
     'End Sub 
     Dim selection As EnvDTE.TextSelection 
     Dim startPoint As EnvDTE.EditPoint 
     Dim endPoint As TextPoint 
     Dim commentStart As String 
     Dim commentEnd As String 


     selection = DTE.ActiveDocument.Selection() 
     startPoint = selection.TopPoint.CreateEditPoint() 
     endPoint = selection.BottomPoint 
     commentStart = "/*" 
     commentEnd = "*/" 

     DTE.UndoContext.Open("Comment Region") 
     Try 
      Do While (True) 
       Dim line As Integer 
       line = startPoint.Line 
       startPoint.Insert(commentStart) 
       startPoint.EndOfLine() 
       startPoint.Insert(commentEnd) 
       startPoint.LineDown() 
       startPoint.StartOfLine() 
       If (line = endPoint.Line) Then 
        Exit Do 
       End If 
      Loop 
     Finally 
      ' 如果发生错误,则要确保对撤消上下文进行清理。 
      ' 否则,编辑器可能会处于永久的撤消上下文中。 
      DTE.UndoContext.Close() 
     End Try 



    End Sub 

    Sub UncommentCSS() 
     'ref:Find.FindReplace 
     'url:http://msdn.microsoft.com/zh-cn/library/envdte.find.findreplace(v=VS.80).aspx 
     'source code: 
     'Sub FindReplaceExample() 
     ' Dim objTextDoc As TextDocument 
     ' Dim objEditPt As EditPoint 
     ' Dim iCtr As Integer 
     ' Dim objFind As Find 

     ' ' Create a new text file. 
     ' DTE.ItemOperations.NewFile("General\Text File") 

     ' ' Get a handle to the new document and create an EditPoint. 
     ' objTextDoc = DTE.ActiveDocument.Object("TextDocument") 
     ' objEditPt = objTextDoc.StartPoint.CreateEditPoint 
     ' objFind = objTextDoc.DTE.Find 

     ' ' Insert ten lines of text. 
     ' For iCtr = 1 To 10 
     '  objEditPt.Insert("This is a test." & Chr(13)) 
     ' Next iCtr 
     ' objEditPt.StartOfDocument() 
     ' objFind.FindReplace(vsFindAction.vsFindActionReplaceAll, "test", vsFindOptions.vsFindOptionsMatchWholeWord, "NEW THING", vsFindTarget.vsFindTargetOpenDocuments, , , vsFindResultsLocation.vsFindResultsNone) 
     'End Sub 


     Dim objEditPt As EditPoint 
     Dim objFind As Find 

     Dim selection As EnvDTE.TextSelection 
     Dim startPoint As EnvDTE.EditPoint 
     Dim endPoint As TextPoint 
     Dim commentStart As String 
     Dim commentEnd As String 

     selection = DTE.ActiveDocument.Selection() 
     startPoint = selection.TopPoint.CreateEditPoint() 
     endPoint = selection.BottomPoint 
     commentStart = "/*" 
     commentEnd = "*/" 

     objEditPt = selection.TopPoint.CreateEditPoint() 
     objFind = selection.DTE.Find 

     objEditPt.StartOfDocument() 
     objFind.FindReplace(vsFindAction.vsFindActionReplaceAll, commentStart, vsFindOptions.vsFindOptionsMatchWholeWord, "", vsFindTarget.vsFindTargetOpenDocuments, , , vsFindResultsLocation.vsFindResultsNone) 
     objFind.FindReplace(vsFindAction.vsFindActionReplaceAll, commentEnd, vsFindOptions.vsFindOptionsMatchWholeWord, "", vsFindTarget.vsFindTargetOpenDocuments, , , vsFindResultsLocation.vsFindResultsNone) 
    End Sub 


End Module 
1
Option Strict Off 
Option Explicit Off 
Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports EnvDTE90a 
Imports EnvDTE100 
Imports System.Diagnostics 

Public Module RecordingModule 

    Sub CommentCode() 
     Dim objSel As TextSelection = DTE.ActiveDocument.Selection 

     If objSel.IsEmpty Then 
      singleLine = True 
      'Dim ts1 As TextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection) 
      'Dim ep1 As EditPoint2 = ts1.TopPoint.CreateEditPoint() 
      'Dim ep2 As EditPoint2 = ts1.BottomPoint.CreateEditPoint() 
      'text = ep1.GetLines(ep1.Line, ep2.Line + 1) 
     End If 


     Dim fileName = DTE.ActiveDocument.FullName 

     ' We should default to regular commenting if we're not editing CSS. 
     ' This allows this macro to be attached to the Ctrl+K+C shortcut 
     ' without breaking existing file format commenting. 
     If fileName.EndsWith(".cs") Then 
      If objSel.Text.Trim().StartsWith("//") Then 
       DTE.ExecuteCommand("Edit.UncommentSelection") 
       Return 
      Else 
       DTE.ExecuteCommand("Edit.CommentSelection") 
       Return 
      End If 
     End If 

     If fileName.EndsWith(".css") Then 
      ' enable undo 
      Dim weOpenedUndo As Boolean = False 
      If Not DTE.UndoContext.IsOpen Then 
       DTE.UndoContext.Open("comment/uncomment code") 
       weOpenedUndo = True 
      End If 

      ' locate cursor 
      Dim startPoint As VirtualPoint 
      startPoint = objSel.ActivePoint 
      Dim iCol As Int32 = startPoint.DisplayColumn 
      Dim iRow As Int32 = startPoint.Line 

      ' locate selection beginning and end 
      Dim ep1 As EditPoint2 = objSel.TopPoint.CreateEditPoint() 
      Dim ep2 As EditPoint2 = objSel.BottomPoint.CreateEditPoint() 

      ' in case no text is selected 
      If objSel.IsEmpty Then 
       objSel.SelectLine() 
      End If 

      ' process selection 
      If objSel.Text.Trim().StartsWith("/*") Then 
       ' uncomment 
       objSel.MoveToPoint(objSel.TopPoint) 
       objSel.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText) 
       objSel.Delete(2) 
       While ep1.Line < ep2.Line 
        objSel.MoveToDisplayColumn(ep1.Line, 0) 
        ep1.LineDown() 
       End While 
       objSel.EndOfLine() 
       objSel.DeleteLeft(2) 
      Else 
       ' comment 
       objSel.MoveToPoint(objSel.TopPoint) 
       objSel.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText) 
       objSel.Text = "/*" 
       While ep1.Line < ep2.Line 
        objSel.MoveToDisplayColumn(ep1.Line, 0) 
        ep1.LineDown() 
       End While 
       objSel.EndOfLine() 
       objSel.Text = "*/" 
      End If 

      ' move back to the original cursor point 
      objSel.MoveToDisplayColumn(iRow, iCol) 

      ' close the undo 
      If weOpenedUndo Then 
       DTE.UndoContext.Close() 
      End If 

     End If 
    End Sub 

End Module 
0

hm, zdobądź ReSharper, a milion boli natychmiast zniknie.

+0

um, i o ile widzę, nie ma skrótu do komentarzy dla plików CSS w ReSharper. –