In addition to "Edit with Vim", this patch will add the following context menus,
* View with Vim
* View with multiple Vims
* View with single Vim
* Diff with Vim (read only)
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---
diff -dur ext.orig/gvimext.cpp ext/gvimext.cpp
--- ext.orig/gvimext.cpp 2009-10-01 13:40:26.000000000 +0700
+++ ext/gvimext.cpp 2009-10-01 14:26:50.000000000 +0700
@@ -590,8 +590,20 @@
indexMenu++,
MF_STRING|MF_BYPOSITION,
idCmd++,
+ _("View with multiple Vims"));
+
+ InsertMenu(hMenu,
+ indexMenu++,
+ MF_STRING|MF_BYPOSITION,
+ idCmd++,
_("Edit with single &Vim"));
+ InsertMenu(hMenu,
+ indexMenu++,
+ MF_STRING|MF_BYPOSITION,
+ idCmd++,
+ _("View with single Vim"));
+
if (cbFiles <= 4)
{
// Can edit up to 4 files in diff mode
@@ -600,10 +612,15 @@
MF_STRING|MF_BYPOSITION,
idCmd++,
_("Diff with Vim"));
- m_edit_existing_off = 3;
+ InsertMenu(hMenu,
+ indexMenu++,
+ MF_STRING|MF_BYPOSITION,
+ idCmd++,
+ _("Diff with Vim (read only)"));
+ m_edit_existing_off = 6;
}
else
- m_edit_existing_off = 2;
+ m_edit_existing_off = 4;
}
else
@@ -613,7 +630,12 @@
MF_STRING|MF_BYPOSITION,
idCmd++,
_("Edit with &Vim"));
- m_edit_existing_off = 1;
+ InsertMenu(hMenu,
+ indexMenu++,
+ MF_STRING|MF_BYPOSITION,
+ idCmd++,
+ _("View with Vim"));
+ m_edit_existing_off = 2;
}
// Now display all the vim instances
@@ -699,20 +721,43 @@
lpcmi->nShow);
break;
case 1:
- hr = InvokeSingleGvim(lpcmi->hwnd,
+ hr = InvokeGvim(lpcmi->hwnd,
lpcmi->lpDirectory,
lpcmi->lpVerb,
lpcmi->lpParameters,
lpcmi->nShow,
- 0);
+ " -R");
break;
case 2:
hr = InvokeSingleGvim(lpcmi->hwnd,
lpcmi->lpDirectory,
lpcmi->lpVerb,
lpcmi->lpParameters,
+ lpcmi->nShow);
+ break;
+ case 3:
+ hr = InvokeSingleGvim(lpcmi->hwnd,
+ lpcmi->lpDirectory,
+ lpcmi->lpVerb,
+ lpcmi->lpParameters,
lpcmi->nShow,
- 1);
+ " -R");
+ break;
+ case 4:
+ hr = InvokeSingleGvim(lpcmi->hwnd,
+ lpcmi->lpDirectory,
+ lpcmi->lpVerb,
+ lpcmi->lpParameters,
+ lpcmi->nShow,
+ " -d");
+ break;
+ case 5:
+ hr = InvokeSingleGvim(lpcmi->hwnd,
+ lpcmi->lpDirectory,
+ lpcmi->lpVerb,
+ lpcmi->lpParameters,
+ lpcmi->nShow,
+ " -d -R");
break;
}
}
@@ -846,7 +891,8 @@
LPCSTR /* pszWorkingDir */,
LPCSTR /* pszCmd */,
LPCSTR /* pszParam */,
- int /* iShowCmd */)
+ int /* iShowCmd */,
+ const char* arg)
{
char m_szFileUserClickedOn[BUFSIZE];
char cmdStr[BUFSIZE];
@@ -860,6 +906,9 @@
sizeof(m_szFileUserClickedOn));
getGvimName(cmdStr, 0);
+ // No need to check for buffer overflow, since it not rely on user
+ // input.
+ if (arg) strcat(cmdStr, arg);
strcat(cmdStr, " \"");
if ((strlen(cmdStr) + strlen(m_szFileUserClickedOn) + 2) < BUFSIZE)
@@ -917,7 +966,7 @@
LPCSTR /* pszCmd */,
LPCSTR /* pszParam */,
int /* iShowCmd */,
- int useDiff)
+ const char* arg)
{
char m_szFileUserClickedOn[BUFSIZE];
char *cmdStr;
@@ -928,8 +977,9 @@
cmdlen = BUFSIZE;
cmdStr = (char *)malloc(cmdlen);
getGvimName(cmdStr, 0);
- if (useDiff)
- strcat(cmdStr, " -d");
+ // No need to check for buffer overflow, since it not rely on user
+ // input.
+ if (arg) strcat(cmdStr, arg);
for (i = 0; i < cbFiles; i++)
{
DragQueryFile((HDROP)medium.hGlobal,
diff -dur ext.orig/gvimext.h ext/gvimext.h
--- ext.orig/gvimext.h 2009-10-01 14:20:39.000000000 +0700
+++ ext/gvimext.h 2009-10-01 14:26:10.000000000 +0700
@@ -129,14 +129,15 @@
LPCSTR pszWorkingDir,
LPCSTR pszCmd,
LPCSTR pszParam,
- int iShowCmd);
+ int iShowCmd,
+ const char* arg = NULL);
STDMETHODIMP InvokeSingleGvim(HWND hParent,
LPCSTR pszWorkingDir,
LPCSTR pszCmd,
LPCSTR pszParam,
int iShowCmd,
- int useDiff);
+ const char* arg = NULL);
public:
int m_cntOfHWnd;