===============================
Visual Studio - Vim Integration
===============================

Copyright (C) 1997 Heiko Erhardt

VisVim is a Visual Studio Add-In that allows Vim to be integrated
as the default text editor. It will be used instead of the Visual
Studio built-in editor when you double-click on a file or press F4
after compiling (it will go to the proper line in the Vim buffer).
The file can be loaded exclusively by Vim or additionally to the
builtin Visual Studio editor (this option can be set in the VisVim
configuration dialog inside Visual Studio).
Vim does not replace the Visual Studio editor, it still runs in its
own window.

VisVim is based upon VisEmacs by Christopher Payne
(Copyright (C) Christopher Payne 1997).

Author: Heiko Erhardt <heiko.erhardt@gmx.net>
Based upon: VisEmacs by Christopher Payne <payneca@sagian.com>
Version: 1.0
Created: 23 Oct 1997
Date: 23 Oct 1997

VisVim was originally GNU GPL licensed, as stated below.  On March 21 2012
Heiko Erhardt declared this work to be relicensed under the Vim license, as
stated in ../../runtime/doc/uganda.txt (or ":help uganda" in Vim).

VisVim is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

VisVim is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.


Requirements
------------

VisVim works with the *OLE-enabled* version of Vim version 5.0 and higher
only!!!  You must download the extra archive containing the OLE-enabled
executable from your Vim download site.  When building your own Vim
executable, use the if_ole_vc.mak makefile (Vim 5.1 and higher).
VisVim needs DevStudio 5.0 or higher. It does not work with DevStudio 4.2.


Installation
------------

1) Close running instances of DevStudio.

2) Copy VisVim.dll into a convenient directory like \vim,
   \vim\lib, or \vim\addin

3) Register the DLL using regsvr32.exe ...  (Skip this on Windows 95/98)
   Example:
   > cd \vim\addin
   > regsvr32 VisVim.dll
   On NT, you should do this from an administrator account.
   Before installing a new version of VisVim you should unregister
   the old one using
   > regsvr32 -unregister VisVim.dll
   The batch files register.bat and unregister.bat can do that for you.

3a) If you didn't do this yet: Register the OLE gvim:
   > gvim -register

4) Start Visual Studio and go to:
      Tools
	 Customize...
	    Add-Ins and Macro Files

5) Click on Browse, and point Visual Studio to your VisVim.dll file.

6) Click the checkbox to indicate that you want to use the Add-In, and
   Close the Customize dialog box.

7) You should notice the VisVim Toolbar with the Vim Icon.
   Click the first item of the toolbar to get to the options dialog.


Compiling VisVim
----------------

Two Options:

1) Load the VisVim.mak file as a Workspace in Visual Studio and compile

2) Use the MSVC command line compiler:
	vcvars32
	nmake -f VisVim.mak


Using VisVim
------------

The VisVim DLL exposes several functions to the user. These functions are
accessible using the toolbar or by assigning hotkeys to them (see below).
The following functions are visible on the toolbar (from left to right):

1. VisVim settings dialog
   The settings you adjust here will be saved in the registry and
   will be reloaded on program startup.

2. Enable Vim
   Enables Vim as Visual Studio editor. Control will be switched to Vim when:
   - Clicking a file in the file view
   - Clicking a compiler error message line
   - Using the 'File-Open' Dialog
   - Showing the current source line when encountering a debugger breakpoint.
   - Using File-New

3. Disable Vim
   The internal Visual Studio editor will be used to edit files.

4. Toggle enable state
   Toggles the enable state of VisVim. Use this function if you want to have
   one button only to activate/deactivate Vim.

5. Load current file in Vim
   Loads the file shown in the internal editor into Vim. Use this function if
   you want the internal editor to stay active and just edit one file in Vim.
   This command works always whether Vim is enabled as default editor or not.

You cannot use DevStudio's debugger commands from inside Vim, so you should
disable Vim before running the debugger.

You can customize the Vim toolbar itself or add the Vim buttons to other
toolbars.
To have fast access to the VisVim options dialog I suggest to create keyboard
shortcuts:

1) Choose
      Tools
	 Customize...
	    Keyboard
2) Choose Category:AddIns and Commands:VisVim.
3) Choose 'Main' as editor, enter each hotkey and press the Assign button.
   I suggest:
       VisVimDialogCmd    Alt+Shift+V
       VisVimEnableCmd    Alt+Shift+E
       VisVimDisableCmd   Alt+Shift+D
       VisVimToggleCmd    Alt+Shift+T
       VisVimLoadCmd      Alt+Shift+G
4) Close the dialog

Now a typical debugging example:

Using "Alt+Shift+d" you turn off Vim before starting the debugger.
After hitting the breakpoint you single step through your application
using the internal source code editor and examine variables.
When you stumble across the line with the null pointer
assignment, just press "Alt+Shift+g", and correct the error in Vim.
Save the file, press Alt+Tab to return to DevStudio and press F7 to compile.
That's it.


Troubleshooting
---------------

1. When opening a file in DevStudio the file is opened in the DevStudio
   editor and immediately vanishes. No Vim shows up.
   Cause:       Probably you don't have the OLE-enabled Vim or you didn't
		register it.
   Explanation: VisVim is notified by DevStudio if an 'open document' event
		occurs. It then closes the document in the internal editor
		and tries to start Vim. If Vim isn't properly OLE-registered,
		this won't work.
   Workaround:  Download and install the OLE-enable version of Vim and
		execute "gvim -register".

2. Sometimes when clicking on a file, the file won't be opened by Vim but
   instead the Visual Studio editor comes up.
   Cause:       The file was already loaded by the DevStudio editor.
   Explanation: VisVim works by hooks exposed by Visual Studio.
		Most of the functionality works from the OpenDocument hook.
		If a document is already loaded in the Visual Studio editor,
		no 'open document' event will be generated when clicking the
		file in the file list.
   Workaround:  Close the document in Visual Studio first.

3. I can't get VisVim to work. Either the Vim toolbar does not appear at all
   or weird crashes happen.
   Cause:       The Visual Studio installation is messed up.
   Explanation: I can't give you one. Ask M$.
   Workaround:  Reinstall DevStudio (I know this is brute, but in some cases
		it helped). There was one case where the service pack 1 had
		to be installed, too.

4. If an instance of Vim is already running, VisVim will use that instance
   and not start a new one.
   Cause:	 This is proper OLE behaviour
   Explanation:  Some call it a bug, some a feature. That's just the way OLE
		 works.

5. When being in insert mode in Vim and selecting a file in Visual Studio,
   the Vim command :e ... is inserted as text instead of being executed.
   Cause:	 You probably know...
   Explanation:  The Vim OLE automation interface interprets the VisVim
		 commands as if they were typed in by the user.
		 So if you're in insert mode Vim considers it to be text.
		 I decided against sending an ESC before the command because
		 it may cause a beep or at least a screen flash when noeb is
		 set.
   Workaround:	 Get used to press ESC before switching to DevStudio.

6. I'm tired of VisVim but I can't get rid of it. I can't delete it in
   Tools-Customize-Add-Ins.
   Cause:	 You can't delete an item you once added to the add-ins
		 list box.
   Explanation:  M$ just didn't put a 'delete' button in the dialog box.
		 Unfortunately there is no DEL key accellerator as well...
   Workaround:	 You can't kill it, but you can knock it out:
		 1. Uncheck the check box in front of 'Vim Developer Studio
		    Add-in'.
		 2. Close Visual Studio.
		 3. Delete VisVim.dll or move it somewhere it can't be found.
		 4. Run Visual Studio.
		 5. Tools -> Customize ->Add-ins and Macro-Files.
		 6. A message appears:
		    ".../VisVim.dll" "This add-in no longer exists.  It will
		    no longer be displayed."
		 That's it!


Change history
--------------

1.0a to 1.0
-----------

- All settings in the VisVim dialog are remembered between DevStudio sessions
  by keeping them in the registry (HKEY_CURRENT_USER\Software\Vim\VisVim).
- Added an option to do a :cd before opening the file (having a file opened
  by clicking it but finding out to be still in C:\Windows\system when trying to
  open another file by ":e" can be annoying). Change directory can be
  done to the source file's directory or it's parent directory.
- Added some explanations to the error message for the CO_E_CLASSSTRING error
  ("Use OLE Vim and make sure to register...").

1.0 to 1.1a
-----------

- The VisVim toolbar button now shows the new Vim icon instead of the old one.
- Made some changes to the documentation, added the troubleshooting chapter
  and ToDo list.
- File-New-* now invokes Vim instead of the builtin editor if enabled.

1.1 to 1.1b
-----------

- Extended the VisVim toolbar to have multiple buttons instead of one.
- Moved the enable/disable commands from the settings dialog to the toolbar.
- Added the toggle enable/disable command
- Added the 'load current file' command.

1.1b to 1.2
-----------

No new features, just some fine tuning:

- Changed the GUID of the VisVim OLE interface to avoid conflicts with a
  version of VisEmacs or VisVile on the same computer (Guy Gascoigne)
- Fixed a bug caused by a bug in the Developer Studio add-in code generator
  (Clark Morgan)
- Fixed a memory leak (Clark Morgan)
- Added an option in the VisVim dialog to prepend ESC before the first command
  that is sent to Vim. This will avoid inserting the command as text when Vim
  is still in insert mode.
- An :update command is sent to Vim before any other command to update the
  current file if it is modified, or else the following :cd or :e command will fail.

1.2 to 1.3a
-----------

- Fixed a bug caused by a missing EnableModeless() function call in VimLoad().
  This seems to reduce VisVim crashing DevStudio on some systems (it
  occasionally still seems to happen, but it's more stable now).
  (Vince Negri)
- Added support for the new CTRL-\ CTRL-N command of Vim 5.4a.
  This prevents Vim from beeping when a VisVim command is executed and Vim is
  not in insert mode.


ToDo List
---------

P1 is highest priority, P10 lowest

P9  Switching to DevStudio using ALT-TAB may get annoying. Would be nice to
    have the option to map ActivateApplication("Visual Studio") in Vim.
    Vim DLLs would solve that problem.

P8  Execute :tag command in Vim for word under cursor in DevStudio

P7  Controlling the Visual Studio Debugger from inside Vim
    See message above. Also a 'Debug' highlight group and a
    command to highlight a certain line would be necessary.

P6  Provide an option to open the current file in VisVim in
    Visual Studio editor
    Same as above message. A kind of two way OLE automation would have to be
    established between VisVim and Vim. Also a 'Debug' highlight group and a
    command to highlight a certain line would be necessary.


Known Problems
--------------

- Occasional memory corruptions in DevStudio may appear on some systems.
  Reinstalling DevStudio helped in some cases.
  The cause of these crashes is unclear; there is no way to debug this.
  Recompiling VisVim with DevStudio SP3 didn't help.
  I assume it's a problem deep inside the DevStudio add-in OLE interfaces.
  This will hopefully be fixed with DevStudio 6.


Have fun!

Heiko Erhardt
heiko.erhardt@gmx.net

