作者holio (Hydra)
看板EZsoft
标题[共享] gvim 在 win32 下的系统右键选单修改版
时间Thu Feb 1 17:33:31 2007
下载位址:
http://www.electronicfiles.net/files/7445/gvimext_dll_custom.zip
(号称不会删档 不过改日不幸被删的话 请拿下面的diff做patch吧)
内含: gvimext.dll(改) gvimext.inf gvimext.reg patch README.txt uninst.bat
除了gvimext.dll有动 其它只有把UNIX换行改成DOS换行
GvimExt原始的程式码在:
http://svn.sourceforge.net/viewvc/vim/vim7/src/GvimExt/
这是gvim在win32下的右键系统选单(gvimext.dll)的修改版 修改结果如下
选单项目最多出现两条 各为
1. Edit with vim
2. Diff with vim (只在选了2-4个档案时才会出现, 预设)
其中1(edit)会以新增tab形式开在同一视窗 (GVIM)
2(diff)会每次新开一个视窗 (GVIMDIFF, GVIMDIFF1, GVIMDIFF2, ....)
以上是我照自己使用需求修改的 如果跟你期望不同.....sad
安装方法
A. 原本没有右键选单 (如免安装版)
照附档的README.txt中的INSTALLATION段做 不过我没试过XD 不保证可以成功
B. 原本有右键选单 (如安装版)
也就是会有一个旧的gvimext.dll 而且这个dll会被万恶explorer.exe锁住
我个人用unlocker解不开 所以
1. 终结所有explorer.exe (然後会只剩桌布)
2. 开一个cmd 把新的gvimext.dll盖过旧的
3. 执行一个explorer.exe 即回复正常
修改内容
=========patch=========
--- gvimext.old.cpp 2007-02-01 10:36:07.015625000 +0800
+++ gvimext.cpp 2007-02-01 15:31:00.484375000 +0800
@@ -576,7 +576,6 @@
// Initialize m_cntOfHWnd to 0
m_cntOfHWnd = 0;
// Retieve all the vim instances
- EnumWindows(EnumWindowsProc, (LPARAM)this);
if (cbFiles > 1)
{
@@ -584,13 +583,7 @@
indexMenu++,
MF_STRING|MF_BYPOSITION,
idCmd++,
- _("Edit with &multiple Vims"));
-
- InsertMenu(hMenu,
- indexMenu++,
- MF_STRING|MF_BYPOSITION,
- idCmd++,
- _("Edit with single &Vim"));
+ _("Edit with &Vim"));
if (cbFiles <= 4)
{
@@ -600,10 +593,7 @@
MF_STRING|MF_BYPOSITION,
idCmd++,
_("Diff with Vim"));
- m_edit_existing_off = 3;
}
- else
- m_edit_existing_off = 2;
}
else
@@ -613,9 +603,10 @@
MF_STRING|MF_BYPOSITION,
idCmd++,
_("Edit with &Vim"));
- m_edit_existing_off = 1;
}
+ m_edit_existing_off = idCmdFirst - idCmd;
+ /*
// Now display all the vim instances
for (int i = 0; i < m_cntOfHWnd; i++)
{
@@ -642,6 +633,7 @@
idCmd++,
temp);
}
+ */
// InsertMenu(hMenu, indexMenu++, MF_SEPARATOR|MF_BYPOSITION, 0, NULL);
// Must return number of menu items we added.
@@ -690,13 +682,6 @@
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,
@@ -704,7 +689,7 @@
lpcmi->nShow,
0);
break;
- case 2:
+ case 1:
hr = InvokeSingleGvim(lpcmi->hwnd,
lpcmi->lpDirectory,
lpcmi->lpVerb,
@@ -927,7 +912,9 @@
cmdStr = (char *)malloc(cmdlen);
getGvimName(cmdStr, 0);
if (useDiff)
- strcat(cmdStr, " -d");
+ strcat(cmdStr, " --servername GVIMDIFF -d");
+ else
+ strcat(cmdStr, " --servername GVIM --remote-tab-silent");
for (i = 0; i < cbFiles; i++)
{
DragQueryFile((HDROP)medium.hGlobal,
======end of patch=====
win32下还有人在用gvim吗 QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.31.138.82
1F:推 dsewnr:push :-) 02/01 18:37
2F:推 desty:这个 patch 很棒! 02/01 21:51
3F:推 teee:我会._./ 02/02 12:13
4F:推 kornelius:我! 09/21 20:39