Search code examples
visual-studioemacspair-programming

Visual Studio 2008: Smoothly switch between Emacs and default keybindings


Is there any way in Visual Studio 2008 to smoothly switch between using Emacs keybindings and the default ones? I will soon be doing some pair programming and I need my Emacs keybindings to keep myself from going insane.


Solution

  • Create a new VS macro and add this code :

    Sub ToggleEmacsKeyBindings()
    
        Dim emacsSchemeName As String = "Emacs"
        Dim defaultSchemeName As String = "(Default)"
    
        Dim props As EnvDTE.Properties = DTE.Properties("Environment", "Keyboard")
        Dim propsItem As EnvDTE.Property = props.Item("SchemeName")
    
        Dim previousScheme As String = propsItem.Value
    
        If propsItem.Value = emacsSchemeName Then
            propsItem.Value = defaultSchemeName
        ElseIf propsItem.Value = defaultSchemeName Then
            propsItem.Value = emacsSchemeName
        End If
    
        MsgBox("Previous Scheme: " + previousScheme + Environment.NewLine + Environment.NewLine + "New Scheme: " + propsItem.Value)
    
    End Sub
    

    You can then assign a keyboard shortcut to this macro to more quickly and easily toggle between Emacs and 'Default' keyboard scheme.

    (Note: This works in VS 2005 and have not tested in VS 2008 but it should work too. It also works in VS 2010 with the Emacs emulation extension installed.)