*** GvimExt.orig/gvimext.h	2008-01-31 12:35:40.292782600 -0700
--- GvimExt/gvimext.h	2008-01-30 17:43:03.405000900 -0700
***************
*** 136,142 ****
  	    LPCSTR pszCmd,
  	    LPCSTR pszParam,
  	    int iShowCmd,
! 	    int useDiff);
  
  public:
      int		 m_cntOfHWnd;
--- 136,143 ----
  	    LPCSTR pszCmd,
  	    LPCSTR pszParam,
  	    int iShowCmd,
! 	    int useDiff,
! 	    int useTabs);
  
  public:
      int		 m_cntOfHWnd;
*** GvimExt.orig/gvimext.cpp	2008-01-31 12:35:40.277158800 -0700
--- GvimExt/gvimext.cpp	2008-01-31 12:33:15.397661400 -0700
***************
*** 1,6 ****
--- 1,8 ----
  /* vi:set ts=8 sts=4 sw=4:
   *
   * VIM - Vi IMproved	gvimext by Tianmiao Hu
+  *                      Tab support added by Erik Falor
+  *                                           <ewfalor@gmail.com>
   *
   * Do ":help uganda"  in Vim to read copying and usage conditions.
   * Do ":help credits" in Vim to see a list of people who contributed.
***************
*** 42,47 ****
--- 44,59 ----
   * enough */
  #define BUFSIZE 1100
  
+ #define NODIFF  0
+ #define USEDIFF 1
+ #define NOTABS  0
+ #define USETABS 1
+ 
+ #define SINGLEGVIM 0
+ #define TABBEDGVIM 1
+ #define MULTIGVIMS 2
+ #define DIFFGVIM   3
+ 
  //
  // Get the name of the Gvim executable to use, with the path.
  // When "runtime" is non-zero, we were called to find the runtime directory.
***************
*** 584,596 ****
  		indexMenu++,
  		MF_STRING|MF_BYPOSITION,
  		idCmd++,
! 		_("Edit with &multiple Vims"));
  
  	InsertMenu(hMenu,
  		indexMenu++,
  		MF_STRING|MF_BYPOSITION,
  		idCmd++,
! 		_("Edit with single &Vim"));
  
  	if (cbFiles <= 4)
  	{
--- 596,614 ----
  		indexMenu++,
  		MF_STRING|MF_BYPOSITION,
  		idCmd++,
! 		_("Edit with single &Vim"));
  
  	InsertMenu(hMenu,
  		indexMenu++,
  		MF_STRING|MF_BYPOSITION,
  		idCmd++,
! 		_("Edit with single Vim &tabbed"));
! 
! 	InsertMenu(hMenu,
! 		indexMenu++,
! 		MF_STRING|MF_BYPOSITION,
! 		idCmd++,
! 		_("Edit with &multiple Vims"));
  
  	if (cbFiles <= 4)
  	{
***************
*** 599,609 ****
  		    indexMenu++,
  		    MF_STRING|MF_BYPOSITION,
  		    idCmd++,
! 		    _("Diff with Vim"));
! 	    m_edit_existing_off = 3;
  	}
  	else
! 	    m_edit_existing_off = 2;
  
      }
      else
--- 617,627 ----
  		    indexMenu++,
  		    MF_STRING|MF_BYPOSITION,
  		    idCmd++,
! 		    _("Diffy with Vim"));
! 	    m_edit_existing_off = 4;
  	}
  	else
! 	    m_edit_existing_off = 3;
  
      }
      else
***************
*** 689,716 ****
  	{
  	    switch (idCmd)
  	    {
! 		case 0:
! 		    hr = InvokeGvim(lpcmi->hwnd,
  			    lpcmi->lpDirectory,
  			    lpcmi->lpVerb,
  			    lpcmi->lpParameters,
! 			    lpcmi->nShow);
  		    break;
! 		case 1:
  		    hr = InvokeSingleGvim(lpcmi->hwnd,
  			    lpcmi->lpDirectory,
  			    lpcmi->lpVerb,
  			    lpcmi->lpParameters,
  			    lpcmi->nShow,
! 			    0);
  		    break;
! 		case 2:
  		    hr = InvokeSingleGvim(lpcmi->hwnd,
  			    lpcmi->lpDirectory,
  			    lpcmi->lpVerb,
  			    lpcmi->lpParameters,
  			    lpcmi->nShow,
! 			    1);
  		    break;
  	    }
  	}
--- 707,748 ----
  	{
  	    switch (idCmd)
  	    {
! 		case SINGLEGVIM:
! 		    hr = InvokeSingleGvim(lpcmi->hwnd,
  			    lpcmi->lpDirectory,
  			    lpcmi->lpVerb,
  			    lpcmi->lpParameters,
! 			    lpcmi->nShow,
! 			    NODIFF,
! 			    NOTABS);
  		    break;
! 
! 		case TABBEDGVIM:
  		    hr = InvokeSingleGvim(lpcmi->hwnd,
  			    lpcmi->lpDirectory,
  			    lpcmi->lpVerb,
  			    lpcmi->lpParameters,
  			    lpcmi->nShow,
! 			    NODIFF,
! 			    USETABS);
! 		    break;
! 
! 		case MULTIGVIMS:
! 		    hr = InvokeGvim(lpcmi->hwnd,
! 			    lpcmi->lpDirectory,
! 			    lpcmi->lpVerb,
! 			    lpcmi->lpParameters,
! 			    lpcmi->nShow);
  		    break;
! 
! 		case DIFFGVIM:
  		    hr = InvokeSingleGvim(lpcmi->hwnd,
  			    lpcmi->lpDirectory,
  			    lpcmi->lpVerb,
  			    lpcmi->lpParameters,
  			    lpcmi->nShow,
! 			    USEDIFF,
! 			    NOTABS);
  		    break;
  	    }
  	}
***************
*** 915,921 ****
  				   LPCSTR pszCmd,
  				   LPCSTR pszParam,
  				   int iShowCmd,
! 				   int useDiff)
  {
      char	m_szFileUserClickedOn[BUFSIZE];
      char	*cmdStr;
--- 947,954 ----
  				   LPCSTR pszCmd,
  				   LPCSTR pszParam,
  				   int iShowCmd,
! 				   int useDiff,
! 				   int useTabs)
  {
      char	m_szFileUserClickedOn[BUFSIZE];
      char	*cmdStr;
***************
*** 928,933 ****
--- 961,968 ----
      getGvimName(cmdStr, 0);
      if (useDiff)
  	strcat(cmdStr, " -d");
+     if (useTabs)
+ 	strcat(cmdStr, " -p");
      for (i = 0; i < cbFiles; i++)
      {
  	DragQueryFile((HDROP)medium.hGlobal,
