作者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