Quickly swap assignment operands

Quickly swap assignment operands

It often happens that you need to swap the operands of an assignment. For example, say that you have this set of assignments:

p1.FirstName = m_FirstNamep1.LastName = m_LastName

and later in your source code you want to add a similar set of assignments, but with reversed operands:

m_FirstName = p1.FirstNamem_LastName = p1.LastName

Here’s a macro that lets you perform this operation automatically:

Sub SwapOperands()    DTE.ActiveDocument.Selection.StartOfLine _        (vsStartOfLineOptions.vsStartOfLineOptionsFirstText)    DTE.ExecuteCommand("Edit.Find")    DTE.Find.Action = vsFindAction.vsFindActionFind    DTE.Find.FindWhat = "="    DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument    DTE.Find.MatchCase = False    DTE.Find.MatchWholeWord = False    DTE.Find.Backwards = False    DTE.Find.MatchInHiddenText = False    DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral    DTE.Find.Execute()    DTE.Windows.Item(Constants.vsWindowKindFindReplace).Close()    DTE.ActiveDocument.Selection.Delete()    DTE.ActiveDocument.Selection.StartOfLine _        (vsStartOfLineOptions.vsStartOfLineOptionsFirstText, True)    DTE.ActiveDocument.Selection.Cut()    DTE.ActiveDocument.Selection.EndOfLine()    DTE.ActiveDocument.Selection.Text = "= "    DTE.ActiveDocument.Selection.Paste()End Sub

For best usability, you should store this macro in a macro module, then assign a convenient shortcut to it, for example (two keystrokes): Ctrl-Shift-V, Ctrl-Shift-V. You can do this assignment from the Keyboard page in the Tools-Options dialog box. To execute the macro, place the caret on the assignment statement and press the shortcut you assigned to it.


Share the Post: