To: vim_dev@googlegroups.com Subject: Patch 9.0.0698 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.0698 Problem: VisVim is outdated, does not work with current Visual Studio. Solution: Remove VisVim. (Martin Tournoij) Files: Filelist, Makefile, READMEdir/README_extra.txt, READMEdir/README_ole.txt, READMEdir/README_srcdos.txt, nsis/README.txt, nsis/gvim.nsi, nsis/lang/danish.nsi, nsis/lang/dutch.nsi, nsis/lang/english.nsi, nsis/lang/german.nsi, nsis/lang/italian.nsi, nsis/lang/japanese.nsi, nsis/lang/russian.nsi, nsis/lang/serbian.nsi, nsis/lang/simpchinese.nsi, nsis/lang/tradchinese.nsi, nsis/lang/turkish.nsi, runtime/doc/if_ole.txt, src/VisVim/Commands.cpp, src/VisVim/Commands.h, src/VisVim/DSAddIn.cpp, src/VisVim/DSAddIn.h, src/VisVim/OleAut.cpp, src/VisVim/OleAut.h, src/VisVim/README_VisVim.txt, src/VisVim/Reg.cpp, src/VisVim/Register.bat, src/VisVim/Res/ToolbarL.bmp, src/VisVim/Res/ToolbarM.bmp, src/VisVim/Resource.h, src/VisVim/StdAfx.cpp, src/VisVim/StdAfx.h, src/VisVim/UnRegist.bat, src/VisVim/VisVim.cpp, src/VisVim/VisVim.def, src/VisVim/VisVim.dll, src/VisVim/VisVim.h, src/VisVim/VisVim.mak, src/VisVim/VisVim.odl, src/VisVim/VisVim.rc, src/VisVim/VsReadMe.txt, uninstall.txt *** ../vim-9.0.0697/Filelist 2022-09-26 19:50:07.463112932 +0100 --- Filelist 2022-10-08 17:02:06.685722357 +0100 *************** *** 590,619 **** nsis/README.txt \ nsis/lang/*.nsi \ uninstall.txt \ - src/VisVim/Commands.cpp \ - src/VisVim/Commands.h \ - src/VisVim/DSAddIn.cpp \ - src/VisVim/DSAddIn.h \ - src/VisVim/OleAut.cpp \ - src/VisVim/OleAut.h \ - src/VisVim/README_VisVim.txt \ - src/VisVim/Reg.cpp \ - src/VisVim/Register.bat \ - src/VisVim/Resource.h \ - src/VisVim/StdAfx.cpp \ - src/VisVim/StdAfx.h \ - src/VisVim/UnRegist.bat \ - src/VisVim/VisVim.cpp \ - src/VisVim/VisVim.def \ - src/VisVim/VisVim.mak \ - src/VisVim/VisVim.h \ - src/VisVim/VisVim.odl \ - src/VisVim/VisVim.rc \ - src/VisVim/VsReadMe.txt \ # source files for DOS without CR/LF translation (also in the extra archive) SRC_DOS_BIN = \ - src/VisVim/Res/*.bmp \ src/tearoff.bmp \ src/tools.bmp \ src/vim*.ico \ --- 591,599 ---- *************** *** 945,951 **** $(RT_EXTRA) \ $(SRC_EXTRA) \ README_extra.txt \ - src/VisVim/VisVim.dll \ runtime/vimlogo.xpm \ # files in READMEdir that are included from the top dir --- 925,930 ---- *** ../vim-9.0.0697/Makefile 2022-07-02 17:55:14.628322357 +0100 --- Makefile 2022-10-08 17:02:06.685722357 +0100 *************** *** 198,205 **** # - copy these files (get them from a binary archive or build them): # gvimext.dll in src/GvimExt # gvimext64.dll in src/GvimExt - # VisVim.dll in src/VisVim - # Note: VisVim needs to be build with MSVC 5, newer versions don't work. # gvimext64.dll can be obtained from: # https://github.com/vim/vim-win32-installer/releases # It is part of gvim_9.0.*_x64.zip as vim/vim90/GvimExt/gvimext64.dll. --- 198,203 ---- *************** *** 554,561 **** cp uninstallw32.exe dist/vim/$(VIMRTDIR)/uninstall.exe cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll cp README_ole.txt dist/vim/$(VIMRTDIR) - cp src/VisVim/VisVim.dll dist/vim/$(VIMRTDIR)/VisVim.dll - cp src/VisVim/README_VisVim.txt dist/vim/$(VIMRTDIR) cd dist && zip -9 -rD -z gvim$(VERSION)ole.zip vim <$(COMMENT_OLE) cp gvim_ole.pdb dist/gvim$(VERSION)ole.pdb --- 552,557 ---- *** ../vim-9.0.0697/nsis/README.txt 2021-06-01 09:12:21.000000000 +0100 --- nsis/README.txt 2022-10-08 17:02:06.689722348 +0100 *************** *** 27,49 **** 64-bit: src/GvimExt/gvimext64.dll 32-bit: src/GvimExt/gvimext.dll ! 4. Go to the VisVim directory and build VisVim.dll (or get it from a binary ! archive). ! ! 5. Get a "diff.exe" program. If you skip this the built-in diff will always be used (which is fine for most users). If you do have your own "diff.exe" put it in the "../.." directory (above the "vim82" directory, it's the same for all Vim versions). You can find one in previous Vim versions or in this archive: http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz ! 6 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim82" directory). This is required for the terminal window. ! 7. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have to do this on Unix. Make sure the file is in DOS file format! ! 8. Get gettext and iconv DLLs from the following site: https://github.com/mlocati/gettext-iconv-windows/releases Both 64- and 32-bit versions are needed. Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract --- 27,46 ---- 64-bit: src/GvimExt/gvimext64.dll 32-bit: src/GvimExt/gvimext.dll ! 4. Get a "diff.exe" program. If you skip this the built-in diff will always be used (which is fine for most users). If you do have your own "diff.exe" put it in the "../.." directory (above the "vim82" directory, it's the same for all Vim versions). You can find one in previous Vim versions or in this archive: http://www.mossbayeng.com/~ron/vim/diffutils.tar.gz ! 5 Also put winpty32.dll and winpty-agent.exe in "../.." (above the "vim82" directory). This is required for the terminal window. ! 6. Do "make uganda.nsis.txt" in runtime/doc. This requires sed, you may have to do this on Unix. Make sure the file is in DOS file format! ! 7. Get gettext and iconv DLLs from the following site: https://github.com/mlocati/gettext-iconv-windows/releases Both 64- and 32-bit versions are needed. Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract *** ../vim-9.0.0697/nsis/gvim.nsi 2022-08-24 18:07:56.889586310 +0100 --- nsis/gvim.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 36,44 **** # Comment the next line if you do not want to add Native Language Support !define HAVE_NLS - # Uncomment the next line if you want to include VisVim extension: - #!define HAVE_VIS_VIM - # Comment the following line to create an English-only installer: !define HAVE_MULTI_LANG --- 36,41 ---- *************** *** 55,63 **** # ----------- No configurable settings below this line ----------- !include "Library.nsh" # For DLL install - !ifdef HAVE_VIS_VIM - !include "UpgradeDLL.nsh" # for VisVim.dll - !endif !include "LogicLib.nsh" !include "MUI2.nsh" !include "nsDialogs.nsh" --- 52,57 ---- *************** *** 537,553 **** SectionGroupEnd ########################################################## - !ifdef HAVE_VIS_VIM - Section "$(str_section_vis_vim)" id_section_visvim - SectionIn 3 - - SetOutPath $0 - !insertmacro UpgradeDLL "${VIMSRC}\VisVim\VisVim.dll" "$0\VisVim.dll" "$0" - File ${VIMSRC}\VisVim\README_VisVim.txt - SectionEnd - !endif - - ########################################################## !ifdef HAVE_NLS Section "$(str_section_nls)" id_section_nls SectionIn 1 3 --- 531,536 ---- *************** *** 634,645 **** SectionGetSize ${id_section_editwith} $4 IntOp $3 $3 + $4 ${EndIf} - !ifdef HAVE_VIS_VIM - ${If} ${SectionIsSelected} ${id_section_visvim} - SectionGetSize ${id_section_visvim} $4 - IntOp $3 $3 + $4 - ${EndIf} - !endif !ifdef HAVE_NLS ${If} ${SectionIsSelected} ${id_section_nls} SectionGetSize ${id_section_nls} $4 --- 617,622 ---- *************** *** 670,678 **** !insertmacro SaveSectionSelection ${id_section_vimrc} "select_vimrc" !insertmacro SaveSectionSelection ${id_section_pluginhome} "select_pluginhome" !insertmacro SaveSectionSelection ${id_section_pluginvim} "select_pluginvim" - !ifdef HAVE_VIS_VIM - !insertmacro SaveSectionSelection ${id_section_visvim} "select_visvim" - !endif !ifdef HAVE_NLS !insertmacro SaveSectionSelection ${id_section_nls} "select_nls" !endif --- 647,652 ---- *************** *** 744,752 **** !insertmacro LoadSectionSelection ${id_section_vimrc} "select_vimrc" !insertmacro LoadSectionSelection ${id_section_pluginhome} "select_pluginhome" !insertmacro LoadSectionSelection ${id_section_pluginvim} "select_pluginvim" - !ifdef HAVE_VIS_VIM - !insertmacro LoadSectionSelection ${id_section_visvim} "select_visvim" - !endif !ifdef HAVE_NLS !insertmacro LoadSectionSelection ${id_section_nls} "select_nls" !endif --- 718,723 ---- *************** *** 921,929 **** !insertmacro MUI_DESCRIPTION_TEXT ${id_group_plugin} $(str_desc_plugin) !insertmacro MUI_DESCRIPTION_TEXT ${id_section_pluginhome} $(str_desc_plugin_home) !insertmacro MUI_DESCRIPTION_TEXT ${id_section_pluginvim} $(str_desc_plugin_vim) - !ifdef HAVE_VIS_VIM - !insertmacro MUI_DESCRIPTION_TEXT ${id_section_visvim} $(str_desc_vis_vim) - !endif !ifdef HAVE_NLS !insertmacro MUI_DESCRIPTION_TEXT ${id_section_nls} $(str_desc_nls) !endif --- 892,897 ---- *************** *** 947,959 **** # created. Thus the "vim61" directory is included in it. StrCpy $0 "$INSTDIR" - !ifdef HAVE_VIS_VIM - # If VisVim was installed, unregister the DLL. - ${If} ${FileExists} "$0\VisVim.dll" - ExecWait "regsvr32.exe /u /s $0\VisVim.dll" - ${EndIf} - !endif - # delete the context menu entry and batch files DetailPrint "$(str_msg_unregistering)" nsExec::Exec "$0\uninstall.exe -nsis" --- 915,920 ---- *************** *** 1046,1054 **** RMDir /r $0\syntax RMDir /r $0\tools RMDir /r $0\tutor - !ifdef HAVE_VIS_VIM - RMDir /r $0\VisVim - !endif RMDir /r $0\lang RMDir /r $0\keymap Delete $0\*.exe --- 1007,1012 ---- *** ../vim-9.0.0697/nsis/lang/danish.nsi 2019-02-13 17:18:53.000000000 +0000 --- nsis/lang/danish.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 79,87 **** LangString str_section_plugin_vim ${LANG_DANISH} "Delte" LangString str_desc_plugin_vim ${LANG_DANISH} "Opret plugin-mapper i Vim-installationsmappe, det bruges af alle pÃ¥ systemet." - LangString str_section_vis_vim ${LANG_DANISH} "VisVim-udvidelser" - LangString str_desc_vis_vim ${LANG_DANISH} "VisVim-udvidelser til integrering i Microsoft Visual Studio." - LangString str_section_nls ${LANG_DANISH} "Understøttelse af modersmÃ¥l" LangString str_desc_nls ${LANG_DANISH} "Installer filer til understøttelse af modersmÃ¥l." --- 79,84 ---- *** ../vim-9.0.0697/nsis/lang/dutch.nsi 2019-01-09 19:44:20.000000000 +0000 --- nsis/lang/dutch.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 123,133 **** "Creëer plugin mappen in Vim installatie map, deze worden gebruikt \ voor iedereen op het systeem." - LangString str_section_vis_vim ${LANG_DUTCH} \ - "VisVim extensie" - LangString str_desc_vis_vim ${LANG_DUTCH} \ - "VisVim extensie voor Microsoft Visual Studio integratie." - LangString str_section_nls ${LANG_DUTCH} \ "Ondersteuning voor andere talen" LangString str_desc_nls ${LANG_DUTCH} \ --- 123,128 ---- *** ../vim-9.0.0697/nsis/lang/english.nsi 2021-05-01 20:15:59.000000000 +0100 --- nsis/lang/english.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 121,131 **** "Create plugin directories in Vim install directory, it is used for \ everybody on the system." - LangString str_section_vis_vim ${LANG_ENGLISH} \ - "VisVim Extension" - LangString str_desc_vis_vim ${LANG_ENGLISH} \ - "VisVim Extension for Microsoft Visual Studio integration." - LangString str_section_nls ${LANG_ENGLISH} \ "Native Language Support" LangString str_desc_nls ${LANG_ENGLISH} \ --- 121,126 ---- *** ../vim-9.0.0697/nsis/lang/german.nsi 2019-01-09 19:44:20.000000000 +0000 --- nsis/lang/german.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 122,132 **** "Plugin-Verzeichnisse im Vim-Installationsverzeichnis erstellen. Diese werden \ für alle Benutzer dieses Systems genutzt." - LangString str_section_vis_vim ${LANG_GERMAN} \ - "VisVim-Erweiterung" - LangString str_desc_vis_vim ${LANG_GERMAN} \ - "VisVim-Erweiterung zur Integration in Microsoft Visual Studio." - LangString str_section_nls ${LANG_GERMAN} \ "Unterstützung für andere Sprachen" LangString str_desc_nls ${LANG_GERMAN} \ --- 122,127 ---- *** ../vim-9.0.0697/nsis/lang/italian.nsi 2020-09-09 11:13:35.000000000 +0100 --- nsis/lang/italian.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 123,133 **** "Crea directory per plugin nella directory di installazione di Vim \ per uso da parte di tutti gli utenti di questo sistema." - LangString str_section_vis_vim ${LANG_ITALIAN} \ - "Estensione VisVim" - LangString str_desc_vis_vim ${LANG_ITALIAN} \ - "Estensione VisVim per integrazione con Microsoft Visual Studio." - LangString str_section_nls ${LANG_ITALIAN} \ "Supporto Multilingue (NLS)" LangString str_desc_nls ${LANG_ITALIAN} \ --- 123,128 ---- *** ../vim-9.0.0697/nsis/lang/japanese.nsi 2019-01-09 19:44:20.000000000 +0000 --- nsis/lang/japanese.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 128,138 **** LangString str_desc_plugin_vim ${LANG_JAPANESE} \ "プラグインディレクトリを Vim のインストールディレクトリに作成します。システムの全員で共有されます。" - LangString str_section_vis_vim ${LANG_JAPANESE} \ - "VisVim 拡張" - LangString str_desc_vis_vim ${LANG_JAPANESE} \ - "Microsoft Visual Studio 統合用の VisVim 拡張。" - LangString str_section_nls ${LANG_JAPANESE} \ "多言語サポート" LangString str_desc_nls ${LANG_JAPANESE} \ --- 128,133 ---- *** ../vim-9.0.0697/nsis/lang/russian.nsi 2020-09-21 19:13:13.000000000 +0100 --- nsis/lang/russian.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 125,135 **** Модули в этом каталоге будут доступны для любого пользователя \ зарегистрировавшегося в системе" - LangString str_section_vis_vim ${LANG_RUSSIAN} \ - "Подключаемый модуль VisVim" - LangString str_desc_vis_vim ${LANG_RUSSIAN} \ - "Подключаемый модуль VisVim используется для интеграции с Microsoft Visual Studio" - LangString str_section_nls ${LANG_RUSSIAN} \ "Поддержка региональных языков" LangString str_desc_nls ${LANG_RUSSIAN} \ --- 125,130 ---- *** ../vim-9.0.0697/nsis/lang/serbian.nsi 2019-09-08 12:06:34.000000000 +0100 --- nsis/lang/serbian.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 121,131 **** "Креира директоријуме додатака у Vim инсталационом директоријуму, користе их сви \ на систему." - LangString str_section_vis_vim ${LANG_SERBIAN} \ - "VisVim проширење" - LangString str_desc_vis_vim ${LANG_SERBIAN} \ - "VisVim проширење за Microsoft Visual Studio интеграцију." - LangString str_section_nls ${LANG_SERBIAN} \ "Подршка за домаћи језик" LangString str_desc_nls ${LANG_SERBIAN} \ --- 121,126 ---- *** ../vim-9.0.0697/nsis/lang/simpchinese.nsi 2019-10-02 21:48:30.000000000 +0100 --- nsis/lang/simpchinese.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 120,130 **** "在 Vim 安装目录下创建(空的)插件目录结构,系统上所有用户都能使用安装在\ 该目录下的扩展插件。" - LangString str_section_vis_vim ${LANG_SIMPCHINESE} \ - "VisVim 插件" - LangString str_desc_vis_vim ${LANG_SIMPCHINESE} \ - "安装与 Visual Studio 集成的 VisVim 插件。" - LangString str_section_nls ${LANG_SIMPCHINESE} \ "安装多语言支持" LangString str_desc_nls ${LANG_SIMPCHINESE} \ --- 120,125 ---- *** ../vim-9.0.0697/nsis/lang/tradchinese.nsi 2019-01-09 19:44:20.000000000 +0000 --- nsis/lang/tradchinese.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 121,131 **** "在 Vim 安裝資料夾下建立(空的)插件資料夾結構,電腦上所有用戶都能使用安裝\ 在該資料夾里的擴展插件。" - LangString str_section_vis_vim ${LANG_TRADCHINESE} \ - "安裝 VisVim 插件" - LangString str_desc_vis_vim ${LANG_TRADCHINESE} \ - "VisVim 是用于與微軟 Microsoft Visual Studio 軟體進行整合的插件。" - LangString str_section_nls ${LANG_TRADCHINESE} \ "安裝本地語言支持" LangString str_desc_nls ${LANG_TRADCHINESE} \ --- 121,126 ---- *** ../vim-9.0.0697/nsis/lang/turkish.nsi 2021-08-19 19:07:06.000000000 +0100 --- nsis/lang/turkish.nsi 2022-10-08 17:02:06.689722348 +0100 *************** *** 90,100 **** "Eklenti dizinlerini Vim yükleme dizininde oluşturur. Bu eklentilerden \ bilgisayarın tüm kullanıcıları yararlanabilir." - LangString str_section_vis_vim ${LANG_TURKISH} \ - "VisVim eklentisi" - LangString str_desc_vis_vim ${LANG_TURKISH} \ - "Microsoft Visual Studio entegrasyonu için VisVim eklentisi" - LangString str_section_nls ${LANG_TURKISH} \ "Ek dil desteği" LangString str_desc_nls ${LANG_TURKISH} \ --- 90,95 ---- *** ../vim-9.0.0697/runtime/doc/if_ole.txt 2022-06-28 11:21:05.000000000 +0100 --- runtime/doc/if_ole.txt 2022-10-08 17:07:04.073075563 +0100 *************** *** 1,4 **** ! *if_ole.txt* For Vim version 9.0. Last change: 2019 Dec 07 VIM REFERENCE MANUAL by Paul Moore --- 1,4 ---- ! *if_ole.txt* For Vim version 9.0. Last change: 2022 Oct 08 VIM REFERENCE MANUAL by Paul Moore *************** *** 156,173 **** gvim -silent -unregister ============================================================================== ! 5. MS Visual Studio integration *MSVisualStudio* *VisVim* ! The OLE version can be used to run Vim as the editor in Microsoft Visual ! Studio. This is called "VisVim". It is included in the archive that contains ! the OLE version. The documentation can be found in the runtime directory, the ! README_VisVim.txt file. Using Vim with Visual Studio .Net~ ! With .Net you no longer really need VisVim, since .Net studio has support for ! external editors. Follow these directions: In .Net Studio choose from the menu Tools->External Tools... Add --- 156,169 ---- gvim -silent -unregister ============================================================================== ! 5. MS Visual Studio integration *MSVisualStudio* ! The old "VisVim" integration was removed from Vim in patch 9.0.0698. Using Vim with Visual Studio .Net~ ! .Net studio has support for external editors. Follow these directions: In .Net Studio choose from the menu Tools->External Tools... Add *** ../vim-9.0.0697/src/VisVim/Commands.cpp 2019-04-17 17:26:51.000000000 +0100 --- src/VisVim/Commands.cpp 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,710 **** - #include "stdafx.h" - #include // For _bstr_t - #include "VisVim.h" - #include "Commands.h" - #include "OleAut.h" - - #ifdef _DEBUG - #define new DEBUG_NEW - #undef THIS_FILE - static char THIS_FILE[] = __FILE__; - - #endif - - - // Change directory before opening file? - #define CD_SOURCE 0 // Cd to source path - #define CD_SOURCE_PARENT 1 // Cd to parent directory of source path - #define CD_NONE 2 // No cd - - - static BOOL g_bEnableVim = TRUE; // Vim enabled - static BOOL g_bDevStudioEditor = FALSE; // Open file in Dev Studio editor simultaneously - static BOOL g_bNewTabs = FALSE; - static int g_ChangeDir = CD_NONE; // CD after file open? - - static void VimSetEnableState(BOOL bEnableState); - static BOOL VimOpenFile(BSTR& FileName, long LineNr); - static DISPID VimGetDispatchId(COleAutomationControl& VimOle, char* Method); - static void VimErrDiag(COleAutomationControl& VimOle); - static void VimChangeDir(COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName); - static void DebugMsg(char* Msg, char* Arg = NULL); - - - ///////////////////////////////////////////////////////////////////////////// - // CCommands - - CCommands::CCommands() - { - // m_pApplication == NULL; M$ Code generation bug!!! - m_pApplication = NULL; - m_pApplicationEventsObj = NULL; - m_pDebuggerEventsObj = NULL; - } - - CCommands::~CCommands() - { - ASSERT(m_pApplication != NULL); - if (m_pApplication) - { - m_pApplication->Release(); - m_pApplication = NULL; - } - } - - void CCommands::SetApplicationObject(IApplication * pApplication) - { - // This function assumes pApplication has already been AddRef'd - // for us, which CDSAddIn did in its QueryInterface call - // just before it called us. - m_pApplication = pApplication; - if (! m_pApplication) - return; - - // Create Application event handlers - XApplicationEventsObj::CreateInstance(&m_pApplicationEventsObj); - if (! m_pApplicationEventsObj) - { - ReportInternalError("XApplicationEventsObj::CreateInstance"); - return; - } - m_pApplicationEventsObj->AddRef(); - m_pApplicationEventsObj->Connect(m_pApplication); - m_pApplicationEventsObj->m_pCommands = this; - - #ifdef NEVER - // Create Debugger event handler - CComPtr < IDispatch > pDebugger; - if (SUCCEEDED(m_pApplication->get_Debugger(&pDebugger)) - && pDebugger != NULL) - { - XDebuggerEventsObj::CreateInstance(&m_pDebuggerEventsObj); - m_pDebuggerEventsObj->AddRef(); - m_pDebuggerEventsObj->Connect(pDebugger); - m_pDebuggerEventsObj->m_pCommands = this; - } - #endif - - // Get settings from registry HKEY_CURRENT_USER\Software\Vim\VisVim - HKEY hAppKey = GetAppKey("Vim"); - if (hAppKey) - { - HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim"); - if (hSectionKey) - { - g_bEnableVim = GetRegistryInt(hSectionKey, "EnableVim", - g_bEnableVim); - g_bDevStudioEditor = GetRegistryInt(hSectionKey, - "DevStudioEditor", g_bDevStudioEditor); - g_bNewTabs = GetRegistryInt(hSectionKey, "NewTabs", - g_bNewTabs); - g_ChangeDir = GetRegistryInt(hSectionKey, "ChangeDir", - g_ChangeDir); - RegCloseKey(hSectionKey); - } - RegCloseKey(hAppKey); - } - } - - void CCommands::UnadviseFromEvents() - { - ASSERT(m_pApplicationEventsObj != NULL); - if (m_pApplicationEventsObj) - { - m_pApplicationEventsObj->Disconnect(m_pApplication); - m_pApplicationEventsObj->Release(); - m_pApplicationEventsObj = NULL; - } - - #ifdef NEVER - if (m_pDebuggerEventsObj) - { - // Since we were able to connect to the Debugger events, we - // should be able to access the Debugger object again to - // unadvise from its events (thus the VERIFY_OK below--see - // stdafx.h). - CComPtr < IDispatch > pDebugger; - VERIFY_OK(m_pApplication->get_Debugger(&pDebugger)); - ASSERT(pDebugger != NULL); - m_pDebuggerEventsObj->Disconnect(pDebugger); - m_pDebuggerEventsObj->Release(); - m_pDebuggerEventsObj = NULL; - } - #endif - } - - - ///////////////////////////////////////////////////////////////////////////// - // Event handlers - - // Application events - - HRESULT CCommands::XApplicationEvents::BeforeBuildStart() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::BuildFinish(long nNumErrors, long nNumWarnings) - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::BeforeApplicationShutDown() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - // The open document event handle is the place where the real interface work - // is done. - // Vim gets called from here. - // - HRESULT CCommands::XApplicationEvents::DocumentOpen(IDispatch * theDocument) - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - - if (! g_bEnableVim) - // Vim not enabled or empty command line entered - return S_OK; - - // First get the current file name and line number - - // Get the document object - CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(theDocument); - if (! pDoc) - return S_OK; - - BSTR FileName; - long LineNr = -1; - - // Get the document name - if (FAILED(pDoc->get_FullName(&FileName))) - return S_OK; - - LPDISPATCH pDispSel; - - // Get a selection object dispatch pointer - if (SUCCEEDED(pDoc->get_Selection(&pDispSel))) - { - // Get the selection object - CComQIPtr < ITextSelection, &IID_ITextSelection > pSel(pDispSel); - - if (pSel) - // Get the selection line number - pSel->get_CurrentLine(&LineNr); - - pDispSel->Release(); - } - - // Open the file in Vim and position to the current line - if (VimOpenFile(FileName, LineNr)) - { - if (! g_bDevStudioEditor) - { - // Close the document in developer studio - CComVariant vSaveChanges = dsSaveChangesPrompt; - DsSaveStatus Saved; - - pDoc->Close(vSaveChanges, &Saved); - } - } - - // We're done here - SysFreeString(FileName); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::BeforeDocumentClose(IDispatch * theDocument) - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::DocumentSave(IDispatch * theDocument) - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::NewDocument(IDispatch * theDocument) - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - - if (! g_bEnableVim) - // Vim not enabled or empty command line entered - return S_OK; - - // First get the current file name and line number - - CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(theDocument); - if (! pDoc) - return S_OK; - - BSTR FileName; - HRESULT hr; - - hr = pDoc->get_FullName(&FileName); - if (FAILED(hr)) - return S_OK; - - // Open the file in Vim and position to the current line - if (VimOpenFile(FileName, 0)) - { - if (! g_bDevStudioEditor) - { - // Close the document in developer studio - CComVariant vSaveChanges = dsSaveChangesPrompt; - DsSaveStatus Saved; - - pDoc->Close(vSaveChanges, &Saved); - } - } - - SysFreeString(FileName); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::WindowActivate(IDispatch * theWindow) - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::WindowDeactivate(IDispatch * theWindow) - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::WorkspaceOpen() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::WorkspaceClose() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - HRESULT CCommands::XApplicationEvents::NewWorkspace() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - // Debugger event - - HRESULT CCommands::XDebuggerEvents::BreakpointHit(IDispatch * pBreakpoint) - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return S_OK; - } - - - ///////////////////////////////////////////////////////////////////////////// - // VisVim dialog - - class CMainDialog : public CDialog - { - public: - CMainDialog(CWnd * pParent = NULL); // Standard constructor - - //{{AFX_DATA(CMainDialog) - enum { IDD = IDD_ADDINMAIN }; - int m_ChangeDir; - BOOL m_bDevStudioEditor; - BOOL m_bNewTabs; - //}}AFX_DATA - - //{{AFX_VIRTUAL(CMainDialog) - protected: - virtual void DoDataExchange(CDataExchange * pDX); // DDX/DDV support - //}}AFX_VIRTUAL - - protected: - //{{AFX_MSG(CMainDialog) - afx_msg void OnEnable(); - afx_msg void OnDisable(); - //}}AFX_MSG - DECLARE_MESSAGE_MAP() - }; - - CMainDialog::CMainDialog(CWnd * pParent /* =NULL */ ) - : CDialog(CMainDialog::IDD, pParent) - { - //{{AFX_DATA_INIT(CMainDialog) - m_ChangeDir = -1; - m_bDevStudioEditor = FALSE; - m_bNewTabs = FALSE; - //}}AFX_DATA_INIT - } - - void CMainDialog::DoDataExchange(CDataExchange * pDX) - { - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CMainDialog) - DDX_Radio(pDX, IDC_CD_SOURCE_PATH, m_ChangeDir); - DDX_Check(pDX, IDC_DEVSTUDIO_EDITOR, m_bDevStudioEditor); - DDX_Check(pDX, IDC_NEW_TABS, m_bNewTabs); - //}}AFX_DATA_MAP - } - - BEGIN_MESSAGE_MAP(CMainDialog, CDialog) - //{{AFX_MSG_MAP(CMainDialog) - //}}AFX_MSG_MAP - END_MESSAGE_MAP() - - - ///////////////////////////////////////////////////////////////////////////// - // CCommands methods - - STDMETHODIMP CCommands::VisVimDialog() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - - // Use m_pApplication to access the Developer Studio Application - // object, - // and VERIFY_OK to see error strings in DEBUG builds of your add-in - // (see stdafx.h) - - VERIFY_OK(m_pApplication->EnableModeless(VARIANT_FALSE)); - - CMainDialog Dlg; - - Dlg.m_bDevStudioEditor = g_bDevStudioEditor; - Dlg.m_bNewTabs = g_bNewTabs; - Dlg.m_ChangeDir = g_ChangeDir; - if (Dlg.DoModal() == IDOK) - { - g_bDevStudioEditor = Dlg.m_bDevStudioEditor; - g_bNewTabs = Dlg.m_bNewTabs; - g_ChangeDir = Dlg.m_ChangeDir; - - // Save settings to registry HKEY_CURRENT_USER\Software\Vim\VisVim - HKEY hAppKey = GetAppKey("Vim"); - if (hAppKey) - { - HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim"); - if (hSectionKey) - { - WriteRegistryInt(hSectionKey, "DevStudioEditor", - g_bDevStudioEditor); - WriteRegistryInt(hSectionKey, "NewTabs", - g_bNewTabs); - WriteRegistryInt(hSectionKey, "ChangeDir", g_ChangeDir); - RegCloseKey(hSectionKey); - } - RegCloseKey(hAppKey); - } - } - - VERIFY_OK(m_pApplication->EnableModeless(VARIANT_TRUE)); - return S_OK; - } - - STDMETHODIMP CCommands::VisVimEnable() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - VimSetEnableState(true); - return S_OK; - } - - STDMETHODIMP CCommands::VisVimDisable() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - VimSetEnableState(false); - return S_OK; - } - - STDMETHODIMP CCommands::VisVimToggle() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - VimSetEnableState(! g_bEnableVim); - return S_OK; - } - - STDMETHODIMP CCommands::VisVimLoad() - { - AFX_MANAGE_STATE(AfxGetStaticModuleState()); - - // Use m_pApplication to access the Developer Studio Application object, - // and VERIFY_OK to see error strings in DEBUG builds of your add-in - // (see stdafx.h) - - CComBSTR bStr; - // Define dispatch pointers for document and selection objects - CComPtr < IDispatch > pDispDoc, pDispSel; - - // Get a document object dispatch pointer - VERIFY_OK(m_pApplication->get_ActiveDocument(&pDispDoc)); - if (! pDispDoc) - return S_OK; - - BSTR FileName; - long LineNr = -1; - - // Get the document object - CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(pDispDoc); - - if (! pDoc) - return S_OK; - - // Get the document name - if (FAILED(pDoc->get_FullName(&FileName))) - return S_OK; - - // Get a selection object dispatch pointer - if (SUCCEEDED(pDoc->get_Selection(&pDispSel))) - { - // Get the selection object - CComQIPtr < ITextSelection, &IID_ITextSelection > pSel(pDispSel); - - if (pSel) - // Get the selection line number - pSel->get_CurrentLine(&LineNr); - } - - // Open the file in Vim - VimOpenFile(FileName, LineNr); - - SysFreeString(FileName); - return S_OK; - } - - - // - // Here we do the actual processing and communication with Vim - // - - // Set the enable state and save to registry - // - static void VimSetEnableState(BOOL bEnableState) - { - g_bEnableVim = bEnableState; - HKEY hAppKey = GetAppKey("Vim"); - if (hAppKey) - { - HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim"); - if (hSectionKey) - WriteRegistryInt(hSectionKey, "EnableVim", g_bEnableVim); - RegCloseKey(hAppKey); - } - } - - // Open the file 'FileName' in Vim and goto line 'LineNr' - // 'FileName' is expected to contain an absolute DOS path including the drive - // letter. - // 'LineNr' must contain a valid line number or 0, e. g. for a new file - // - static BOOL VimOpenFile(BSTR& FileName, long LineNr) - { - - // OLE automation object for com. with Vim - // When the object goes out of scope, its destructor destroys the OLE - // connection; - // This is important to avoid blocking the object - // (in this memory corruption would be likely when terminating Vim - // while still running DevStudio). - // So keep this object local! - COleAutomationControl VimOle; - - // :cd D:/Src2/VisVim/ - // - // Get a dispatch id for the SendKeys method of Vim; - // enables connection to Vim if necessary - DISPID DispatchId; - DispatchId = VimGetDispatchId(VimOle, "SendKeys"); - if (! DispatchId) - // OLE error, can't obtain dispatch id - goto OleError; - - OLECHAR Buf[MAX_OLE_STR]; - char FileNameTmp[MAX_OLE_STR]; - char VimCmd[MAX_OLE_STR]; - char *s, *p; - - // Prepend CTRL-\ CTRL-N to exit insert mode - VimCmd[0] = 0x1c; - VimCmd[1] = 0x0e; - VimCmd[2] = 0; - - #ifdef SINGLE_WINDOW - // Update the current file in Vim if it has been modified. - // Disabled, because it could write the file when you don't want to. - sprintf(VimCmd + 2, ":up\n"); - #endif - if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf))) - goto OleError; - - // Change Vim working directory to where the file is if desired - if (g_ChangeDir != CD_NONE) - VimChangeDir(VimOle, DispatchId, FileName); - - // Make Vim open the file. - // In the filename convert all \ to /, put a \ before a space. - if (g_bNewTabs) - { - sprintf(VimCmd, ":tab drop "); - s = VimCmd + 10; - } - else - { - sprintf(VimCmd, ":drop "); - s = VimCmd + 6; - } - sprintf(FileNameTmp, "%S", (char *)FileName); - for (p = FileNameTmp; *p != '\0' && s < VimCmd + MAX_OLE_STR - 4; ++p) - if (*p == '\\') - *s++ = '/'; - else - { - if (*p == ' ') - *s++ = '\\'; - *s++ = *p; - } - *s++ = '\n'; - *s = '\0'; - - if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf))) - goto OleError; - - if (LineNr > 0) - { - // Goto line - sprintf(VimCmd, ":%ld\n", LineNr); - if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf))) - goto OleError; - } - - // Make Vim come to the foreground - if (! VimOle.Method("SetForeground")) - VimOle.ErrDiag(); - - // We're done - return true; - - OleError: - // There was an OLE error - // Check if it's the "unknown class string" error - VimErrDiag(VimOle); - return false; - } - - // Return the dispatch id for the Vim method 'Method' - // Create the Vim OLE object if necessary - // Returns a valid dispatch id or null on error - // - static DISPID VimGetDispatchId(COleAutomationControl& VimOle, char* Method) - { - // Initialize Vim OLE connection if not already done - if (! VimOle.IsCreated()) - { - if (! VimOle.CreateObject("Vim.Application")) - return NULL; - } - - // Get the dispatch id for the SendKeys method. - // By doing this, we are checking if Vim is still there... - DISPID DispatchId = VimOle.GetDispatchId("SendKeys"); - if (! DispatchId) - { - // We can't get a dispatch id. - // This means that probably Vim has been terminated. - // Don't issue an error message here, instead - // destroy the OLE object and try to connect once more - // - // In fact, this should never happen, because the OLE aut. object - // should not be kept long enough to allow the user to terminate Vim - // to avoid memory corruption (why the heck is there no system garbage - // collection for those damned OLE memory chunks???). - VimOle.DeleteObject(); - if (! VimOle.CreateObject("Vim.Application")) - // If this create fails, it's time for an error msg - return NULL; - - if (! (DispatchId = VimOle.GetDispatchId("SendKeys"))) - // There is something wrong... - return NULL; - } - - return DispatchId; - } - - // Output an error message for an OLE error - // Check on the classstring error, which probably means Vim wasn't registered. - // - static void VimErrDiag(COleAutomationControl& VimOle) - { - SCODE sc = GetScode(VimOle.GetResult()); - if (sc == CO_E_CLASSSTRING) - { - char Buf[256]; - sprintf(Buf, "There is no registered OLE automation server named " - "\"Vim.Application\".\n" - "Use the OLE-enabled version of Vim with VisVim and " - "make sure to register Vim by running \"vim -register\"."); - MessageBox(NULL, Buf, "OLE Error", MB_OK); - } - else - VimOle.ErrDiag(); - } - - // Change directory to the directory the file 'FileName' is in or its parent - // directory according to the setting of the global 'g_ChangeDir': - // 'FileName' is expected to contain an absolute DOS path including the drive - // letter. - // CD_NONE - // CD_SOURCE_PATH - // CD_SOURCE_PARENT - // - static void VimChangeDir(COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName) - { - // Do a :cd first - - // Get the path name of the file ("dir/") - CString StrFileName = FileName; - char Drive[_MAX_DRIVE]; - char Dir[_MAX_DIR]; - char DirUnix[_MAX_DIR * 2]; - char *s, *t; - - _splitpath(StrFileName, Drive, Dir, NULL, NULL); - - // Convert to Unix path name format, escape spaces. - t = DirUnix; - for (s = Dir; *s; ++s) - if (*s == '\\') - *t++ = '/'; - else - { - if (*s == ' ') - *t++ = '\\'; - *t++ = *s; - } - *t = '\0'; - - - // Construct the cd command; append /.. if cd to parent - // directory and not in root directory - OLECHAR Buf[MAX_OLE_STR]; - char VimCmd[MAX_OLE_STR]; - - sprintf(VimCmd, ":cd %s%s%s\n", Drive, DirUnix, - g_ChangeDir == CD_SOURCE_PARENT && DirUnix[1] ? ".." : ""); - VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf)); - } - - #ifdef _DEBUG - // Print out a debug message - // - static void DebugMsg(char* Msg, char* Arg) - { - char Buf[400]; - sprintf(Buf, Msg, Arg); - AfxMessageBox(Buf); - } - #endif --- 0 ---- *** ../vim-9.0.0697/src/VisVim/Commands.h 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/Commands.h 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,127 **** - // Commands.h : header file - // - - #if !defined(AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED_) - #define AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED_ - - #include "vsvtypes.h" - - class CCommands : - public CComDualImpl < ICommands, - &IID_ICommands, - &LIBID_VisVim >, - public CComObjectRoot, - public CComCoClass < CCommands, - &CLSID_Commands > - { - protected: - IApplication * m_pApplication; - - public: - CCommands (); - ~CCommands (); - void SetApplicationObject (IApplication * m_pApplication); - IApplication *GetApplicationObject () - { - return m_pApplication; - } - void UnadviseFromEvents (); - - BEGIN_COM_MAP (CCommands) - COM_INTERFACE_ENTRY (IDispatch) - COM_INTERFACE_ENTRY (ICommands) - END_COM_MAP () - DECLARE_NOT_AGGREGATABLE (CCommands) - - protected: - // This class template is used as the base class for the Application - // event handler object and the Debugger event handler object, - // which are declared below. - template < class IEvents, - const IID * piidEvents, - const GUID * plibid, - class XEvents, - const CLSID * pClsidEvents > - class XEventHandler : - public CComDualImpl < IEvents, - piidEvents, - plibid >, - public CComObjectRoot, - public CComCoClass < XEvents, - pClsidEvents > - { - public: - BEGIN_COM_MAP (XEvents) - COM_INTERFACE_ENTRY (IDispatch) - COM_INTERFACE_ENTRY_IID (*piidEvents, IEvents) - END_COM_MAP () - DECLARE_NOT_AGGREGATABLE (XEvents) - void Connect (IUnknown * pUnk) - { - VERIFY (SUCCEEDED (AtlAdvise (pUnk, this, *piidEvents, - &m_dwAdvise))); - } - void Disconnect (IUnknown * pUnk) - { - AtlUnadvise (pUnk, *piidEvents, m_dwAdvise); - } - - CCommands *m_pCommands; - - protected: - DWORD m_dwAdvise; - }; - - // This object handles events fired by the Application object - class XApplicationEvents : public XEventHandler < IApplicationEvents, - &IID_IApplicationEvents, - &LIBID_VisVim, - XApplicationEvents, - &CLSID_ApplicationEvents > - { - public: - // IApplicationEvents methods - STDMETHOD (BeforeBuildStart) (THIS); - STDMETHOD (BuildFinish) (THIS_ long nNumErrors, long nNumWarnings); - STDMETHOD (BeforeApplicationShutDown) (THIS); - STDMETHOD (DocumentOpen) (THIS_ IDispatch * theDocument); - STDMETHOD (BeforeDocumentClose) (THIS_ IDispatch * theDocument); - STDMETHOD (DocumentSave) (THIS_ IDispatch * theDocument); - STDMETHOD (NewDocument) (THIS_ IDispatch * theDocument); - STDMETHOD (WindowActivate) (THIS_ IDispatch * theWindow); - STDMETHOD (WindowDeactivate) (THIS_ IDispatch * theWindow); - STDMETHOD (WorkspaceOpen) (THIS); - STDMETHOD (WorkspaceClose) (THIS); - STDMETHOD (NewWorkspace) (THIS); - }; - typedef CComObject < XApplicationEvents > XApplicationEventsObj; - XApplicationEventsObj *m_pApplicationEventsObj; - - // This object handles events fired by the Application object - class XDebuggerEvents : public XEventHandler < IDebuggerEvents, - &IID_IDebuggerEvents, - &LIBID_VisVim, - XDebuggerEvents, - &CLSID_DebuggerEvents > - { - public: - // IDebuggerEvents method - STDMETHOD (BreakpointHit) (THIS_ IDispatch * pBreakpoint); - }; - typedef CComObject < XDebuggerEvents > XDebuggerEventsObj; - XDebuggerEventsObj *m_pDebuggerEventsObj; - - public: - // ICommands methods - STDMETHOD (VisVimDialog) (THIS); - STDMETHOD (VisVimEnable) (THIS); - STDMETHOD (VisVimDisable) (THIS); - STDMETHOD (VisVimToggle) (THIS); - STDMETHOD (VisVimLoad) (THIS); - }; - - typedef CComObject < CCommands > CCommandsObj; - - //{{AFX_INSERT_LOCATION}} - - #endif // !defined(AFX_COMMANDS_H__AC726717_2977_11D1_B2F3_006008040780__INCLUDED) --- 0 ---- *** ../vim-9.0.0697/src/VisVim/DSAddIn.cpp 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/DSAddIn.cpp 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,160 **** - #include "stdafx.h" - #include "VisVim.h" - #include "DSAddIn.h" - #include "Commands.h" - - #ifdef _DEBUG - #define new DEBUG_NEW - #undef THIS_FILE - static char THIS_FILE[] = __FILE__; - - #endif - - // This is called when the user first loads the add-in, and on start-up - // of each subsequent Developer Studio session - STDMETHODIMP CDSAddIn::OnConnection (IApplication * pApp, VARIANT_BOOL bFirstTime, - long dwCookie, VARIANT_BOOL * OnConnection) - { - AFX_MANAGE_STATE (AfxGetStaticModuleState ()); - *OnConnection = VARIANT_FALSE; - - // Store info passed to us - IApplication *pApplication = NULL; - HRESULT hr; - - hr = pApp->QueryInterface (IID_IApplication, (void **) &pApplication); - if (FAILED (hr)) - { - ReportLastError (hr); - return E_UNEXPECTED; - } - if (pApplication == NULL) - { - ReportInternalError ("IApplication::QueryInterface"); - return E_UNEXPECTED; - } - - m_dwCookie = dwCookie; - - // Create command dispatch, send info back to DevStudio - CCommandsObj::CreateInstance (&m_pCommands); - if (! m_pCommands) - { - ReportInternalError ("CCommandsObj::CreateInstance"); - return E_UNEXPECTED; - } - m_pCommands->AddRef (); - - // The QueryInterface above AddRef'd the Application object. It will - // be Release'd in CCommand's destructor. - m_pCommands->SetApplicationObject (pApplication); - - hr = pApplication->SetAddInInfo ((long) AfxGetInstanceHandle (), - (LPDISPATCH) m_pCommands, IDR_TOOLBAR_MEDIUM, IDR_TOOLBAR_LARGE, - m_dwCookie); - if (FAILED (hr)) - { - ReportLastError (hr); - return E_UNEXPECTED; - } - - // Inform DevStudio of the commands we implement - if (! AddCommand (pApplication, "VisVimDialog", "VisVimDialogCmd", - IDS_CMD_DIALOG, 0, bFirstTime)) - return E_UNEXPECTED; - if (! AddCommand (pApplication, "VisVimEnable", "VisVimEnableCmd", - IDS_CMD_ENABLE, 1, bFirstTime)) - return E_UNEXPECTED; - if (! AddCommand (pApplication, "VisVimDisable", "VisVimDisableCmd", - IDS_CMD_DISABLE, 2, bFirstTime)) - return E_UNEXPECTED; - if (! AddCommand (pApplication, "VisVimToggle", "VisVimToggleCmd", - IDS_CMD_TOGGLE, 3, bFirstTime)) - return E_UNEXPECTED; - if (! AddCommand (pApplication, "VisVimLoad", "VisVimLoadCmd", - IDS_CMD_LOAD, 4, bFirstTime)) - return E_UNEXPECTED; - - *OnConnection = VARIANT_TRUE; - return S_OK; - } - - // This is called on shut-down, and also when the user unloads the add-in - STDMETHODIMP CDSAddIn::OnDisconnection (VARIANT_BOOL bLastTime) - { - AFX_MANAGE_STATE (AfxGetStaticModuleState ()); - - m_pCommands->UnadviseFromEvents (); - m_pCommands->Release (); - m_pCommands = NULL; - - return S_OK; - } - - // Add a command to DevStudio - // Creates a toolbar button for the command also. - // 'MethodName' is the name of the method specified in the .odl file - // 'StrResId' the resource id of the descriptive string - // 'GlyphIndex' the image index into the command buttons bitmap - // Return true on success - // - bool CDSAddIn::AddCommand (IApplication* pApp, char* MethodName, char* CmdName, - UINT StrResId, UINT GlyphIndex, VARIANT_BOOL bFirstTime) - { - CString CmdString; - CString CmdText; - - CmdText.LoadString (StrResId); - CmdString = CmdName; - CmdString += CmdText; - - CComBSTR bszCmdString (CmdString); - CComBSTR bszMethod (MethodName); - CComBSTR bszCmdName (CmdName); - - // (see stdafx.h for the definition of VERIFY_OK) - - VARIANT_BOOL bRet; - VERIFY_OK (pApp->AddCommand (bszCmdString, bszMethod, GlyphIndex, - m_dwCookie, &bRet)); - if (bRet == VARIANT_FALSE) - { - // AddCommand failed because a command with this name already exists. - ReportInternalError ("IApplication::AddCommand"); - return FALSE; - } - - // Add toolbar buttons only if this is the first time the add-in - // is being loaded. Toolbar buttons are automatically remembered - // by Developer Studio from session to session, so we should only - // add the toolbar buttons once. - if (bFirstTime == VARIANT_TRUE) - VERIFY_OK (pApp->AddCommandBarButton (dsGlyph, bszCmdName, m_dwCookie)); - - return TRUE; - } - - void ReportLastError (HRESULT Err) - { - char *Buf = NULL; - char Msg[512]; - - FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, - NULL, Err, - MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), - Buf, 400, NULL); - sprintf (Msg, "Unexpected error (Error code: %lx)\n%s", Err, Buf); - - ::MessageBox (NULL, Msg, "VisVim", MB_OK | MB_ICONSTOP); - if (Buf) - LocalFree (Buf); - } - - void ReportInternalError (char* Fct) - { - char Msg[512]; - - sprintf (Msg, "Unexpected error\n%s failed", Fct); - ::MessageBox (NULL, Msg, "VisVim", MB_OK | MB_ICONSTOP); - } - --- 0 ---- *** ../vim-9.0.0697/src/VisVim/DSAddIn.h 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/DSAddIn.h 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,53 **** - // DSAddIn.h : header file - // - - #if !defined(AFX_DSADDIN_H__AC726715_2977_11D1_B2F3_006008040780__INCLUDED_) - #define AFX_DSADDIN_H__AC726715_2977_11D1_B2F3_006008040780__INCLUDED_ - - #include "commands.h" - - // {4F9E01C0-406B-11d2-8006-00001C405077} - DEFINE_GUID (CLSID_DSAddIn, - 0x4f9e01c0, 0x406b, 0x11d2, 0x80, 0x6, 0x0, 0x0, 0x1c, 0x40, 0x50, 0x77); - - ///////////////////////////////////////////////////////////////////////////// - // CDSAddIn - - class CDSAddIn : - public IDSAddIn, - public CComObjectRoot, - public CComCoClass < CDSAddIn, - &CLSID_DSAddIn > - { - public: - DECLARE_REGISTRY (CDSAddIn, "VisVim.DSAddIn.1", - "VisVim Developer Studio Add-in", IDS_VISVIM_LONGNAME, - THREADFLAGS_BOTH) - - CDSAddIn () - { - } - - BEGIN_COM_MAP (CDSAddIn) - COM_INTERFACE_ENTRY (IDSAddIn) - END_COM_MAP () - DECLARE_NOT_AGGREGATABLE (CDSAddIn) - - // IDSAddIns - public: - STDMETHOD (OnConnection) (THIS_ IApplication * pApp, VARIANT_BOOL bFirstTime, - long dwCookie, VARIANT_BOOL * OnConnection); - STDMETHOD (OnDisconnection) (THIS_ VARIANT_BOOL bLastTime); - - protected: - bool AddCommand (IApplication* pApp, char* MethodName, char* CmdName, - UINT StrResId, UINT GlyphIndex, VARIANT_BOOL bFirstTime); - - protected: - CCommandsObj * m_pCommands; - DWORD m_dwCookie; - }; - - //{{AFX_INSERT_LOCATION}} - - #endif // !defined(AFX_DSADDIN_H__AC726715_2977_11D1_B2F3_006008040780__INCLUDED) --- 0 ---- *** ../vim-9.0.0697/src/VisVim/OleAut.cpp 2019-04-17 17:26:51.000000000 +0100 --- src/VisVim/OleAut.cpp 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,781 **** - // - // Class for creating OLE automation controllers. - // - // CreateObject() creates an automation object - // Invoke() will call a property or method of the automation object. - // GetProperty() returns a property - // SetProperty() changes a property - // Method() invokes a method - // - // For example, the following VB code will control Microsoft Word: - // - // Private Sub Form_Load() - // Dim wb As Object - // Set wb = CreateObject("Word.Basic") - // wb.AppShow - // wb.FileNewDefault - // wb.Insert "This is a test" - // wb.FileSaveAs "c:\sample.doc)" - // End Sub - // - // A C++ automation controller that does the same can be written as follows: - // the helper functions: - // - // Void FormLoad () - // { - // COleAutomationControl Aut; - // Aut.CreateObject("Word.Basic"); - // Aut.Method ("AppShow"); - // Aut.Method ("FileNewDefault"); - // Aut.Method ("Insert", "s", (LPOLESTR) OLESTR ("This is a test")); - // Aut.Method ("FileSaveAs", "s", OLESTR ("c:\\sample.doc")); - // } - // - // - - #include "stdafx.h" - #include - #include "oleaut.h" - - #ifdef _DEBUG - #define new DEBUG_NEW - #undef THIS_FILE - static char THIS_FILE[] = __FILE__; - #endif - - - static bool CountArgsInFormat (LPCTSTR Format, UINT* nArgs); - static LPCTSTR GetNextVarType (LPCTSTR Format, VARTYPE* pVarType); - - - COleAutomationControl::COleAutomationControl () - { - m_pDispatch = NULL; - m_hResult = NOERROR; - m_nErrArg = 0; - VariantInit (&m_VariantResult); - } - - COleAutomationControl::~COleAutomationControl () - { - DeleteObject (); - } - - void COleAutomationControl::DeleteObject () - { - if (m_pDispatch) - { - m_pDispatch->Release (); - m_pDispatch = NULL; - } - } - - // Creates an instance of the Automation object and - // obtains its IDispatch interface. - // - // Parameters: - // ProgId ProgID of Automation object - // - bool COleAutomationControl::CreateObject (char* ProgId) - { - CLSID ClsId; // CLSID of automation object - LPUNKNOWN pUnknown = NULL; // IUnknown of automation object - - // Retrieve CLSID from the progID that the user specified - LPOLESTR OleProgId = TO_OLE_STR (ProgId); - m_hResult = CLSIDFromProgID (OleProgId, &ClsId); - if (FAILED (m_hResult)) - goto error; - - // Create an instance of the automation object and ask for the - // IDispatch interface - m_hResult = CoCreateInstance (ClsId, NULL, CLSCTX_SERVER, - IID_IUnknown, (void**) &pUnknown); - if (FAILED (m_hResult)) - goto error; - - m_hResult = pUnknown->QueryInterface (IID_IDispatch, (void**) &m_pDispatch); - if (FAILED (m_hResult)) - goto error; - - pUnknown->Release (); - return true; - - error: - if (pUnknown) - pUnknown->Release (); - if (m_pDispatch) - m_pDispatch->Release (); - return false; - } - - // Return the dispatch id of a named service - // This id can be used in subsequent calls to GetProperty (), SetProperty () and - // Method (). This is the preferred method when performance is important. - // - DISPID COleAutomationControl::GetDispatchId (char* Name) - { - DISPID DispatchId; - - ASSERT (m_pDispatch); - - // Get DISPID of property/method - LPOLESTR OleName = TO_OLE_STR (Name); - m_hResult = m_pDispatch->GetIDsOfNames (IID_NULL, &OleName, 1, - LOCALE_USER_DEFAULT, &DispatchId); - if (FAILED (m_hResult)) - return NULL; - return DispatchId; - } - - // The following functions use these parameters: - // - // Parameters: - // - // Name Name of property or method. - // - // Format Format string that describes the variable list of parameters that - // follows. The format string can contain the following characters. - // & = mark the following format character as VT_BYREF - // B = VT_BOOL - // i = VT_I2 - // I = VT_I4 - // r = VT_R2 - // R = VT_R4 - // c = VT_CY - // s = VT_BSTR (string pointer can be passed, - // BSTR will be allocated by this function). - // e = VT_ERROR - // d = VT_DATE - // v = VT_VARIANT. Use this to pass data types that are not described - // in the format string. (For example SafeArrays). - // D = VT_DISPATCH - // U = VT_UNKNOWN - // - // ... Arguments of the property or method. - // Arguments are described by Format. - // - - bool COleAutomationControl::GetProperty (char* Name) - { - return Invoke (DISPATCH_PROPERTYGET, Name, NULL, NULL); - } - - bool COleAutomationControl::GetProperty (DISPID DispatchId) - { - return Invoke (DISPATCH_PROPERTYGET, DispatchId, NULL, NULL); - } - - bool COleAutomationControl::PutProperty (char* Name, LPCTSTR Format, ...) - { - va_list ArgList; - - va_start (ArgList, Format); - bool bRet = Invoke (DISPATCH_PROPERTYPUT, Name, Format, ArgList); - va_end (ArgList); - return bRet; - } - - bool COleAutomationControl::PutProperty (DISPID DispatchId, LPCTSTR Format, ...) - { - va_list ArgList; - - va_start (ArgList, Format); - bool bRet = Invoke (DISPATCH_PROPERTYPUT, DispatchId, Format, ArgList); - va_end (ArgList); - return bRet; - } - - bool COleAutomationControl::Method (char* Name, LPCTSTR Format, ...) - { - va_list ArgList; - - va_start (ArgList, Format); - bool bRet = Invoke (DISPATCH_METHOD, Name, Format, ArgList); - va_end (ArgList); - return bRet; - } - - bool COleAutomationControl::Method (DISPID DispatchId, LPCTSTR Format, ...) - { - va_list ArgList; - - va_start (ArgList, Format); - bool bRet = Invoke (DISPATCH_METHOD, DispatchId, Format, ArgList); - va_end (ArgList); - return bRet; - } - - bool COleAutomationControl::Invoke (WORD Flags, char* Name, - LPCTSTR Format, va_list ArgList) - { - DISPID DispatchId = GetDispatchId (Name); - if (! DispatchId) - return false; - return Invoke (Flags, DispatchId, Format, ArgList); - } - - bool COleAutomationControl::Invoke (WORD Flags, DISPID DispatchId, - LPCTSTR Format, va_list ArgList) - { - UINT ArgCount = 0; - VARIANTARG* ArgVector = NULL; - - ASSERT (m_pDispatch); - - DISPPARAMS DispatchParams; - memset (&DispatchParams, 0, sizeof (DispatchParams)); - - // Determine number of arguments - if (Format) - CountArgsInFormat (Format, &ArgCount); - - // Property puts have a named argument that represents the value that - // the property is being assigned. - DISPID DispIdNamed = DISPID_PROPERTYPUT; - if (Flags & DISPATCH_PROPERTYPUT) - { - if (ArgCount == 0) - { - m_hResult = ResultFromScode (E_INVALIDARG); - return false; - } - DispatchParams.cNamedArgs = 1; - DispatchParams.rgdispidNamedArgs = &DispIdNamed; - } - - if (ArgCount) - { - // Allocate memory for all VARIANTARG parameters - ArgVector = (VARIANTARG*) CoTaskMemAlloc ( - ArgCount * sizeof (VARIANTARG)); - if (! ArgVector) - { - m_hResult = ResultFromScode (E_OUTOFMEMORY); - return false; - } - memset (ArgVector, 0, sizeof (VARIANTARG) * ArgCount); - - // Get ready to walk vararg list - LPCTSTR s = Format; - - VARIANTARG *p = ArgVector + ArgCount - 1; // Params go in opposite order - - for (;;) - { - VariantInit (p); - if (! (s = GetNextVarType (s, &p->vt))) - break; - - if (p < ArgVector) - { - m_hResult = ResultFromScode (E_INVALIDARG); - goto Cleanup; - } - switch (p->vt) - { - case VT_I2: - V_I2 (p) = va_arg (ArgList, short); - break; - case VT_I4: - V_I4 (p) = va_arg (ArgList, long); - break; - case VT_R4: - V_R4 (p) = va_arg (ArgList, float); - break; - case VT_DATE: - case VT_R8: - V_R8 (p) = va_arg (ArgList, double); - break; - case VT_CY: - V_CY (p) = va_arg (ArgList, CY); - break; - case VT_BSTR: - V_BSTR (p) = SysAllocString (va_arg (ArgList, - OLECHAR*)); - if (! p->bstrVal) - { - m_hResult = ResultFromScode (E_OUTOFMEMORY); - p->vt = VT_EMPTY; - goto Cleanup; - } - break; - case VT_DISPATCH: - V_DISPATCH (p) = va_arg (ArgList, LPDISPATCH); - break; - case VT_ERROR: - V_ERROR (p) = va_arg (ArgList, SCODE); - break; - case VT_BOOL: - V_BOOL (p) = va_arg (ArgList, BOOL) ? -1 : 0; - break; - case VT_VARIANT: - *p = va_arg (ArgList, VARIANTARG); - break; - case VT_UNKNOWN: - V_UNKNOWN (p) = va_arg (ArgList, LPUNKNOWN); - break; - - case VT_I2 | VT_BYREF: - V_I2REF (p) = va_arg (ArgList, short*); - break; - case VT_I4 | VT_BYREF: - V_I4REF (p) = va_arg (ArgList, long*); - break; - case VT_R4 | VT_BYREF: - V_R4REF (p) = va_arg (ArgList, float*); - break; - case VT_R8 | VT_BYREF: - V_R8REF (p) = va_arg (ArgList, double*); - break; - case VT_DATE | VT_BYREF: - V_DATEREF (p) = va_arg (ArgList, DATE*); - break; - case VT_CY | VT_BYREF: - V_CYREF (p) = va_arg (ArgList, CY*); - break; - case VT_BSTR | VT_BYREF: - V_BSTRREF (p) = va_arg (ArgList, BSTR*); - break; - case VT_DISPATCH | VT_BYREF: - V_DISPATCHREF (p) = va_arg (ArgList, LPDISPATCH*); - break; - case VT_ERROR | VT_BYREF: - V_ERRORREF (p) = va_arg (ArgList, SCODE*); - break; - case VT_BOOL | VT_BYREF: - { - BOOL* pBool = va_arg (ArgList, BOOL*); - - *pBool = 0; - V_BOOLREF (p) = (VARIANT_BOOL*) pBool; - } - break; - case VT_VARIANT | VT_BYREF: - V_VARIANTREF (p) = va_arg (ArgList, VARIANTARG*); - break; - case VT_UNKNOWN | VT_BYREF: - V_UNKNOWNREF (p) = va_arg (ArgList, LPUNKNOWN*); - break; - - default: - { - m_hResult = ResultFromScode (E_INVALIDARG); - goto Cleanup; - } - break; - } - - --p; // Get ready to fill next argument - } - } - - DispatchParams.cArgs = ArgCount; - DispatchParams.rgvarg = ArgVector; - - // Initialize return variant, in case caller forgot. Caller can pass - // NULL if return value is not expected. - VariantInit (&m_VariantResult); - - // Make the call - m_hResult = m_pDispatch->Invoke (DispatchId, IID_NULL, LOCALE_USER_DEFAULT, - Flags, &DispatchParams, &m_VariantResult, - &m_ExceptionInfo, &m_nErrArg); - - Cleanup: - // Cleanup any arguments that need cleanup - if (ArgCount) - { - VARIANTARG* p = ArgVector; - - while (ArgCount--) - { - switch (p->vt) - { - case VT_BSTR: - VariantClear (p); - break; - } - ++p; - } - CoTaskMemFree (ArgVector); - } - - return FAILED (m_hResult) ? false : true; - } - - #define CASE_SCODE(sc) \ - case sc: \ - lstrcpy((char*)ErrName, (char*)#sc); \ - break; - - void COleAutomationControl::ErrDiag () - { - char ErrName[200]; - - SCODE sc = GetScode (m_hResult); - switch (sc) - { - // SCODE's defined in SCODE.H - CASE_SCODE (S_OK) - CASE_SCODE (S_FALSE) - CASE_SCODE (E_UNEXPECTED) - CASE_SCODE (E_OUTOFMEMORY) - CASE_SCODE (E_INVALIDARG) - CASE_SCODE (E_NOINTERFACE) - CASE_SCODE (E_POINTER) - CASE_SCODE (E_HANDLE) - CASE_SCODE (E_ABORT) - CASE_SCODE (E_FAIL) - CASE_SCODE (E_ACCESSDENIED) - - // SCODE's defined in OLE2.H - CASE_SCODE (OLE_E_OLEVERB) - CASE_SCODE (OLE_E_ADVF) - CASE_SCODE (OLE_E_ENUM_NOMORE) - CASE_SCODE (OLE_E_ADVISENOTSUPPORTED) - CASE_SCODE (OLE_E_NOCONNECTION) - CASE_SCODE (OLE_E_NOTRUNNING) - CASE_SCODE (OLE_E_NOCACHE) - CASE_SCODE (OLE_E_BLANK) - CASE_SCODE (OLE_E_CLASSDIFF) - CASE_SCODE (OLE_E_CANT_GETMONIKER) - CASE_SCODE (OLE_E_CANT_BINDTOSOURCE) - CASE_SCODE (OLE_E_STATIC) - CASE_SCODE (OLE_E_PROMPTSAVECANCELLED) - CASE_SCODE (OLE_E_INVALIDRECT) - CASE_SCODE (OLE_E_WRONGCOMPOBJ) - CASE_SCODE (OLE_E_INVALIDHWND) - CASE_SCODE (OLE_E_NOT_INPLACEACTIVE) - CASE_SCODE (OLE_E_CANTCONVERT) - CASE_SCODE (OLE_E_NOSTORAGE) - - CASE_SCODE (DV_E_FORMATETC) - CASE_SCODE (DV_E_DVTARGETDEVICE) - CASE_SCODE (DV_E_STGMEDIUM) - CASE_SCODE (DV_E_STATDATA) - CASE_SCODE (DV_E_LINDEX) - CASE_SCODE (DV_E_TYMED) - CASE_SCODE (DV_E_CLIPFORMAT) - CASE_SCODE (DV_E_DVASPECT) - CASE_SCODE (DV_E_DVTARGETDEVICE_SIZE) - CASE_SCODE (DV_E_NOIVIEWOBJECT) - - CASE_SCODE (OLE_S_USEREG) - CASE_SCODE (OLE_S_STATIC) - CASE_SCODE (OLE_S_MAC_CLIPFORMAT) - - CASE_SCODE (CONVERT10_E_OLESTREAM_GET) - CASE_SCODE (CONVERT10_E_OLESTREAM_PUT) - CASE_SCODE (CONVERT10_E_OLESTREAM_FMT) - CASE_SCODE (CONVERT10_E_OLESTREAM_BITMAP_TO_DIB) - CASE_SCODE (CONVERT10_E_STG_FMT) - CASE_SCODE (CONVERT10_E_STG_NO_STD_STREAM) - CASE_SCODE (CONVERT10_E_STG_DIB_TO_BITMAP) - CASE_SCODE (CONVERT10_S_NO_PRESENTATION) - - CASE_SCODE (CLIPBRD_E_CANT_OPEN) - CASE_SCODE (CLIPBRD_E_CANT_EMPTY) - CASE_SCODE (CLIPBRD_E_CANT_SET) - CASE_SCODE (CLIPBRD_E_BAD_DATA) - CASE_SCODE (CLIPBRD_E_CANT_CLOSE) - - CASE_SCODE (DRAGDROP_E_NOTREGISTERED) - CASE_SCODE (DRAGDROP_E_ALREADYREGISTERED) - CASE_SCODE (DRAGDROP_E_INVALIDHWND) - CASE_SCODE (DRAGDROP_S_DROP) - CASE_SCODE (DRAGDROP_S_CANCEL) - CASE_SCODE (DRAGDROP_S_USEDEFAULTCURSORS) - - CASE_SCODE (OLEOBJ_E_NOVERBS) - CASE_SCODE (OLEOBJ_E_INVALIDVERB) - CASE_SCODE (OLEOBJ_S_INVALIDVERB) - CASE_SCODE (OLEOBJ_S_CANNOT_DOVERB_NOW) - CASE_SCODE (OLEOBJ_S_INVALIDHWND) - CASE_SCODE (INPLACE_E_NOTUNDOABLE) - CASE_SCODE (INPLACE_E_NOTOOLSPACE) - CASE_SCODE (INPLACE_S_TRUNCATED) - - // SCODE's defined in COMPOBJ.H - CASE_SCODE (CO_E_NOTINITIALIZED) - CASE_SCODE (CO_E_ALREADYINITIALIZED) - CASE_SCODE (CO_E_CANTDETERMINECLASS) - CASE_SCODE (CO_E_CLASSSTRING) - CASE_SCODE (CO_E_IIDSTRING) - CASE_SCODE (CO_E_APPNOTFOUND) - CASE_SCODE (CO_E_APPSINGLEUSE) - CASE_SCODE (CO_E_ERRORINAPP) - CASE_SCODE (CO_E_DLLNOTFOUND) - CASE_SCODE (CO_E_ERRORINDLL) - CASE_SCODE (CO_E_WRONGOSFORAPP) - CASE_SCODE (CO_E_OBJNOTREG) - CASE_SCODE (CO_E_OBJISREG) - CASE_SCODE (CO_E_OBJNOTCONNECTED) - CASE_SCODE (CO_E_APPDIDNTREG) - CASE_SCODE (CLASS_E_NOAGGREGATION) - CASE_SCODE (CLASS_E_CLASSNOTAVAILABLE) - CASE_SCODE (REGDB_E_READREGDB) - CASE_SCODE (REGDB_E_WRITEREGDB) - CASE_SCODE (REGDB_E_KEYMISSING) - CASE_SCODE (REGDB_E_INVALIDVALUE) - CASE_SCODE (REGDB_E_CLASSNOTREG) - CASE_SCODE (REGDB_E_IIDNOTREG) - CASE_SCODE (RPC_E_CALL_REJECTED) - CASE_SCODE (RPC_E_CALL_CANCELED) - CASE_SCODE (RPC_E_CANTPOST_INSENDCALL) - CASE_SCODE (RPC_E_CANTCALLOUT_INASYNCCALL) - CASE_SCODE (RPC_E_CANTCALLOUT_INEXTERNALCALL) - CASE_SCODE (RPC_E_CONNECTION_TERMINATED) - CASE_SCODE (RPC_E_SERVER_DIED) - CASE_SCODE (RPC_E_CLIENT_DIED) - CASE_SCODE (RPC_E_INVALID_DATAPACKET) - CASE_SCODE (RPC_E_CANTTRANSMIT_CALL) - CASE_SCODE (RPC_E_CLIENT_CANTMARSHAL_DATA) - CASE_SCODE (RPC_E_CLIENT_CANTUNMARSHAL_DATA) - CASE_SCODE (RPC_E_SERVER_CANTMARSHAL_DATA) - CASE_SCODE (RPC_E_SERVER_CANTUNMARSHAL_DATA) - CASE_SCODE (RPC_E_INVALID_DATA) - CASE_SCODE (RPC_E_INVALID_PARAMETER) - CASE_SCODE (RPC_E_CANTCALLOUT_AGAIN) - CASE_SCODE (RPC_E_UNEXPECTED) - - // SCODE's defined in DVOBJ.H - CASE_SCODE (DATA_S_SAMEFORMATETC) - CASE_SCODE (VIEW_E_DRAW) - CASE_SCODE (VIEW_S_ALREADY_FROZEN) - CASE_SCODE (CACHE_E_NOCACHE_UPDATED) - CASE_SCODE (CACHE_S_FORMATETC_NOTSUPPORTED) - CASE_SCODE (CACHE_S_SAMECACHE) - CASE_SCODE (CACHE_S_SOMECACHES_NOTUPDATED) - - // SCODE's defined in STORAGE.H - CASE_SCODE (STG_E_INVALIDFUNCTION) - CASE_SCODE (STG_E_FILENOTFOUND) - CASE_SCODE (STG_E_PATHNOTFOUND) - CASE_SCODE (STG_E_TOOMANYOPENFILES) - CASE_SCODE (STG_E_ACCESSDENIED) - CASE_SCODE (STG_E_INVALIDHANDLE) - CASE_SCODE (STG_E_INSUFFICIENTMEMORY) - CASE_SCODE (STG_E_INVALIDPOINTER) - CASE_SCODE (STG_E_NOMOREFILES) - CASE_SCODE (STG_E_DISKISWRITEPROTECTED) - CASE_SCODE (STG_E_SEEKERROR) - CASE_SCODE (STG_E_WRITEFAULT) - CASE_SCODE (STG_E_READFAULT) - CASE_SCODE (STG_E_SHAREVIOLATION) - CASE_SCODE (STG_E_LOCKVIOLATION) - CASE_SCODE (STG_E_FILEALREADYEXISTS) - CASE_SCODE (STG_E_INVALIDPARAMETER) - CASE_SCODE (STG_E_MEDIUMFULL) - CASE_SCODE (STG_E_ABNORMALAPIEXIT) - CASE_SCODE (STG_E_INVALIDHEADER) - CASE_SCODE (STG_E_INVALIDNAME) - CASE_SCODE (STG_E_UNKNOWN) - CASE_SCODE (STG_E_UNIMPLEMENTEDFUNCTION) - CASE_SCODE (STG_E_INVALIDFLAG) - CASE_SCODE (STG_E_INUSE) - CASE_SCODE (STG_E_NOTCURRENT) - CASE_SCODE (STG_E_REVERTED) - CASE_SCODE (STG_E_CANTSAVE) - CASE_SCODE (STG_E_OLDFORMAT) - CASE_SCODE (STG_E_OLDDLL) - CASE_SCODE (STG_E_SHAREREQUIRED) - CASE_SCODE (STG_E_NOTFILEBASEDSTORAGE) - CASE_SCODE (STG_E_EXTANTMARSHALLINGS) - CASE_SCODE (STG_S_CONVERTED) - - // SCODE's defined in STORAGE.H - CASE_SCODE (MK_E_CONNECTMANUALLY) - CASE_SCODE (MK_E_EXCEEDEDDEADLINE) - CASE_SCODE (MK_E_NEEDGENERIC) - CASE_SCODE (MK_E_UNAVAILABLE) - CASE_SCODE (MK_E_SYNTAX) - CASE_SCODE (MK_E_NOOBJECT) - CASE_SCODE (MK_E_INVALIDEXTENSION) - CASE_SCODE (MK_E_INTERMEDIATEINTERFACENOTSUPPORTED) - CASE_SCODE (MK_E_NOTBINDABLE) - CASE_SCODE (MK_E_NOTBOUND) - CASE_SCODE (MK_E_CANTOPENFILE) - CASE_SCODE (MK_E_MUSTBOTHERUSER) - CASE_SCODE (MK_E_NOINVERSE) - CASE_SCODE (MK_E_NOSTORAGE) - CASE_SCODE (MK_E_NOPREFIX) - CASE_SCODE (MK_S_REDUCED_TO_SELF) - CASE_SCODE (MK_S_ME) - CASE_SCODE (MK_S_HIM) - CASE_SCODE (MK_S_US) - CASE_SCODE (MK_S_MONIKERALREADYREGISTERED) - - // SCODE's defined in DISPATCH.H - CASE_SCODE (DISP_E_UNKNOWNINTERFACE) - CASE_SCODE (DISP_E_MEMBERNOTFOUND) - CASE_SCODE (DISP_E_PARAMNOTFOUND) - CASE_SCODE (DISP_E_TYPEMISMATCH) - CASE_SCODE (DISP_E_UNKNOWNNAME) - CASE_SCODE (DISP_E_NONAMEDARGS) - CASE_SCODE (DISP_E_BADVARTYPE) - CASE_SCODE (DISP_E_EXCEPTION) - CASE_SCODE (DISP_E_OVERFLOW) - CASE_SCODE (DISP_E_BADINDEX) - CASE_SCODE (DISP_E_UNKNOWNLCID) - CASE_SCODE (DISP_E_ARRAYISLOCKED) - CASE_SCODE (DISP_E_BADPARAMCOUNT) - CASE_SCODE (DISP_E_PARAMNOTOPTIONAL) - CASE_SCODE (DISP_E_BADCALLEE) - CASE_SCODE (DISP_E_NOTACOLLECTION) - - CASE_SCODE (TYPE_E_BUFFERTOOSMALL) - CASE_SCODE (TYPE_E_INVDATAREAD) - CASE_SCODE (TYPE_E_UNSUPFORMAT) - CASE_SCODE (TYPE_E_REGISTRYACCESS) - CASE_SCODE (TYPE_E_LIBNOTREGISTERED) - CASE_SCODE (TYPE_E_UNDEFINEDTYPE) - CASE_SCODE (TYPE_E_QUALIFIEDNAMEDISALLOWED) - CASE_SCODE (TYPE_E_INVALIDSTATE) - CASE_SCODE (TYPE_E_WRONGTYPEKIND) - CASE_SCODE (TYPE_E_ELEMENTNOTFOUND) - CASE_SCODE (TYPE_E_AMBIGUOUSNAME) - CASE_SCODE (TYPE_E_NAMECONFLICT) - CASE_SCODE (TYPE_E_UNKNOWNLCID) - CASE_SCODE (TYPE_E_DLLFUNCTIONNOTFOUND) - CASE_SCODE (TYPE_E_BADMODULEKIND) - CASE_SCODE (TYPE_E_SIZETOOBIG) - CASE_SCODE (TYPE_E_DUPLICATEID) - CASE_SCODE (TYPE_E_TYPEMISMATCH) - CASE_SCODE (TYPE_E_OUTOFBOUNDS) - CASE_SCODE (TYPE_E_IOERROR) - CASE_SCODE (TYPE_E_CANTCREATETMPFILE) - CASE_SCODE (TYPE_E_CANTLOADLIBRARY) - CASE_SCODE (TYPE_E_INCONSISTENTPROPFUNCS) - CASE_SCODE (TYPE_E_CIRCULARTYPE) - - default: - lstrcpy (ErrName, "UNKNOWN SCODE"); - } - - char Buf[256]; - sprintf (Buf, "An OLE error occurred:\r\nCode = %s\r\nResult = %lx.", - (char*) ErrName, m_hResult); - MessageBox (NULL, Buf, "OLE Error", MB_OK); - } - - - static bool CountArgsInFormat (LPCTSTR Format, UINT* pArgCount) - { - *pArgCount = 0; - - if (! Format) - return true; - - while (*Format) - { - if (*Format == '&') - Format++; - - switch (*Format) - { - case 'b': - case 'i': - case 'I': - case 'r': - case 'R': - case 'c': - case 's': - case 'e': - case 'd': - case 'v': - case 'D': - case 'U': - ++ (*pArgCount); - Format++; - break; - case '\0': - default: - return false; - } - } - return true; - } - - static LPCTSTR GetNextVarType (LPCTSTR Format, VARTYPE* pVarType) - { - *pVarType = 0; - if (*Format == '&') - { - *pVarType = VT_BYREF; - Format++; - if (!*Format) - return NULL; - } - switch (*Format) - { - case 'b': - *pVarType |= VT_BOOL; - break; - case 'i': - *pVarType |= VT_I2; - break; - case 'I': - *pVarType |= VT_I4; - break; - case 'r': - *pVarType |= VT_R4; - break; - case 'R': - *pVarType |= VT_R8; - break; - case 'c': - *pVarType |= VT_CY; - break; - case 's': - *pVarType |= VT_BSTR; - break; - case 'e': - *pVarType |= VT_ERROR; - break; - case 'd': - *pVarType |= VT_DATE; - break; - case 'v': - *pVarType |= VT_VARIANT; - break; - case 'U': - *pVarType |= VT_UNKNOWN; - break; - case 'D': - *pVarType |= VT_DISPATCH; - break; - case '\0': - return NULL; // End of Format string - default: - return NULL; - } - return ++Format; - } - - #ifndef UNICODE - char* ConvertToAnsi (OLECHAR* sUnicode) - { - static char BufAscii[MAX_OLE_STR]; - return ConvertToAnsiBuf (sUnicode, BufAscii); - } - - char* ConvertToAnsiBuf (OLECHAR* sUnicode, char* BufAscii) - { - WideCharToMultiByte (CP_ACP, 0, sUnicode, -1, BufAscii, MAX_OLE_STR, NULL, NULL); - return BufAscii; - } - - OLECHAR* ConvertToUnicode (char* sAscii) - { - static OLECHAR BufUnicode[MAX_OLE_STR]; - return ConvertToUnicodeBuf (sAscii, BufUnicode); - } - - OLECHAR* ConvertToUnicodeBuf (char* sAscii, OLECHAR* BufUnicode) - { - MultiByteToWideChar (CP_ACP, 0, sAscii, -1, BufUnicode, MAX_OLE_STR); - return BufUnicode; - } - #endif - --- 0 ---- *** ../vim-9.0.0697/src/VisVim/OleAut.h 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/OleAut.h 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,73 **** - #ifndef __OLEAUT_H__ - #define __OLEAUT_H__ - - class COleAutomationControl : public CObject - { - public: - COleAutomationControl (); - ~COleAutomationControl (); - bool CreateObject (char* ProgId); - DISPID GetDispatchId (char* Name); - bool GetProperty (char* Name); - bool GetProperty (DISPID DispatchId); - bool PutProperty (char* Name, LPCTSTR Format, ...); - bool PutProperty (DISPID DispatchId, LPCTSTR Format, ...); - bool Method (char* Name, LPCTSTR Format = NULL, ...); - bool Method (DISPID DispatchId, LPCTSTR Format = NULL, ...); - void DeleteObject (); - void ErrDiag (); - bool IsCreated () - { - return m_pDispatch ? true : false; - } - bool IsAlive (); - HRESULT GetResult () - { - return m_hResult; - } - UINT GetErrArgNr () - { - return m_nErrArg; - } - EXCEPINFO* GetExceptionInfo () - { - return &m_ExceptionInfo; - } - LPVARIANT GetResultVariant () - { - return &m_VariantResult; - } - - protected: - bool Invoke (WORD Flags, char* Name, LPCTSTR Format, va_list ArgList); - bool Invoke (WORD Flags, DISPID DispatchId, LPCTSTR Format, va_list ArgList); - - protected: - IDispatch* m_pDispatch; - HRESULT m_hResult; - UINT m_nErrArg; - EXCEPINFO m_ExceptionInfo; - VARIANTARG m_VariantResult; - }; - - #ifdef UNICODE - #define FROM_OLE_STRING(str) str - #define FROM_OLE_STRING_BUF(str,buf) str - #define TO_OLE_STR(str) str - #define TO_OLE_STR_BUF(str,buf) str - #define MAX_OLE_STR 1 - #else - #define FROM_OLE_STR(str) ConvertToAnsi(str) - #define FROM_OLE_STR_BUF(str,buf) ConvertToAnsiBuf(str,buf) - char* ConvertToAnsi (OLECHAR* sUnicode); - char* ConvertToAnsiBuf (OLECHAR* sUnicode, char* Buf); - #define TO_OLE_STR(str) ConvertToUnicode(str) - #define TO_OLE_STR_BUF(str,buf) ConvertToUnicodeBuf(str,buf) - OLECHAR* ConvertToUnicode (char* sAscii); - OLECHAR* ConvertToUnicodeBuf (char* sAscii, OLECHAR* Buf); - // Maximum length of string that can be converted between Ansi & Unicode - #define MAX_OLE_STR 500 - #endif - - - #endif // __OLEAUT_H__ --- 0 ---- *** ../vim-9.0.0697/src/VisVim/README_VisVim.txt 2021-06-24 18:52:35.000000000 +0100 --- src/VisVim/README_VisVim.txt 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,326 **** - =============================== - 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 - Based upon: VisEmacs by Christopher Payne - 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 accelerator 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 its 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 - --- 0 ---- *** ../vim-9.0.0697/src/VisVim/Reg.cpp 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/Reg.cpp 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,56 **** - #include "stdafx.h" - - // Returns key for HKEY_CURRENT_USER\"Software"\Company\AppName - // creating it if it doesn't exist - // responsibility of the caller to call RegCloseKey() on the returned HKEY - // - HKEY GetAppKey (char* AppName) - { - HKEY hAppKey = NULL; - HKEY hSoftKey = NULL; - if (RegOpenKeyEx (HKEY_CURRENT_USER, "Software", 0, KEY_WRITE | KEY_READ, - &hSoftKey) == ERROR_SUCCESS) - { - DWORD Dummy; - RegCreateKeyEx (hSoftKey, AppName, 0, REG_NONE, - REG_OPTION_NON_VOLATILE, KEY_WRITE | KEY_READ, NULL, - &hAppKey, &Dummy); - } - if (hSoftKey) - RegCloseKey (hSoftKey); - - return hAppKey; - } - - // Returns key for - // HKEY_CURRENT_USER\"Software"\RegistryKey\AppName\Section - // creating it if it doesn't exist. - // responsibility of the caller to call RegCloseKey () on the returned HKEY - // - HKEY GetSectionKey (HKEY hAppKey, LPCTSTR Section) - { - HKEY hSectionKey = NULL; - DWORD Dummy; - RegCreateKeyEx (hAppKey, Section, 0, REG_NONE, - REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL, - &hSectionKey, &Dummy); - return hSectionKey; - } - - int GetRegistryInt (HKEY hSectionKey, LPCTSTR Entry, int Default) - { - DWORD Value; - DWORD Type; - DWORD Count = sizeof (DWORD); - if (RegQueryValueEx (hSectionKey, (LPTSTR) Entry, NULL, &Type, - (LPBYTE) &Value, &Count) == ERROR_SUCCESS) - return Value; - return Default; - } - - bool WriteRegistryInt (HKEY hSectionKey, char* Entry, int nValue) - { - return RegSetValueEx (hSectionKey, Entry, NULL, REG_DWORD, - (LPBYTE) &nValue, sizeof (nValue)) == ERROR_SUCCESS; - } - --- 0 ---- *** ../vim-9.0.0697/src/VisVim/Register.bat 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/Register.bat 1970-01-01 00:00:00.000000000 +0000 *************** *** 1 **** - regsvr32.exe visvim.dll --- 0 ---- *** ../vim-9.0.0697/src/VisVim/Res/ToolbarL.bmp 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/Res/ToolbarL.bmp 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,28 **** - BMv - v(   - €€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwpwwwwwwwwwwwwwwpwpwwwwwwwwwwwpwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwww@wwwwwwwwwwwwww@w wwwwwwwwwww@wpwwpwwwwwww@wpwwpwwwwwwwww@wwwˆˆ€wwwwpwwwwwwwp"$""wwwwwwwp"$p™w wwwwp"$wwpwwwwwp"$wˆˆ€wwpx€wwpwwwpwwwpx€w"""" wwwwwpx€w""@w p™wwpx€w""@°°wwwpx€w""@wˆ€wwwˆ wwwwwwwwˆ"" ""wwwwwˆ"""$p™ wwwwˆ""" »»»»»wwwˆ"" ˆˆ€wwwx€"ppppwwwwx€"" @w wwwwwx€""""@w ™wwwwx€"" »»»»»»°wwwx€"" ÌÌÀ€wwwwˆptppwwwwwˆ"""$p"wwwwwˆ"""$ ™wwwwwˆ"" »»»»»wwwwˆ" ÌÌÀˆˆ€wwwwx€pwDwpwwwwwx€""""@w wwwwwx€""""@™ wwwwwx€"" °°wwwwwx€" ˆ€wwwwwˆwwwwwwwwwwwˆ"""$wwwwwwˆ""" p™wwwwwˆ""$pwwwwwwˆ""$ˆˆ€wwwwwxwwwpwwwwwwx€""""@wpwwwwwx€"" ™w wwwwwx€"" "@pwwwwwwwx€"""€wwwwww€ wwwwwwwˆ"""$wpwwwwwwˆ""$pwwwwwwˆ"""$wwwwwwwwˆ"""ˆˆ€wwwwwwpw"""@wwwwwwwwx€""""@wwwwwwwwx€""""@wwwwwwwx€""""@wwwwwwwwx€"""wpwwwwpw"""$wwpwwwwwˆ"""$wwpwwwwwˆ"""$wwpwwwwwˆ"""$wwpwwwwwˆ"""$ww - wwwww""""@ww - wwwwwx€""""@ww - wwwwwx€""""@ww - wwwwwx€""""@ww - wwwwwx€""""@wp¢www‡wx€""""$p¢www‡wwˆ"""$p¢www‡wwˆ"""$p¢www‡wwˆ"""$p¢www‡wwˆ"""$ - "wwwwwˆ""""@ - "wwwwwx€""""@ - "wwwwwx€""""@ - "wwwwwx€""""@ - "wwwwwx€""""@ - "www÷wx€""""@ - "www÷wwˆ"""@ - "www÷wwˆ"""@ - "www÷wwˆ"""@ - "www÷wwˆ"""@p¢www€ÿwwˆ""$p¢www€ÿwwx€""$p¢www€ÿwwx€""$p¢www€ÿwwx€""$p¢www€ÿwwx€""$w - www€÷wx€""@ww - www€÷wwˆ"@ww - www€÷wwˆ"@ww - www€÷wwˆ"@ww - www€÷wwˆ"@wwpwww€ ÿwwˆ$wwpwww€ ÿwwx€$wwpwww€ ÿwwx€$wwpwww€ ÿwwx€$wwpwww€ ÿwwx€$wwwwww€"÷wx€@wwwwwww€"÷wwˆwwwwwww€"÷wwˆwwwwwww€"÷wwˆwwwwwww€"÷wwˆwwwwwww€" ÿwwˆwwwwwww€" ÿwwx€wwwwwww€" ÿwwx€wwwwwww€" ÿwwx€wwwwwww€" ÿwwx€wwwwwww€""÷wx€wwwwwww€""÷wwˆwwwwww€""÷wwˆwwwwww€""÷wwˆwwwwww€""÷wwˆwwwwww€"" ÿwwˆwwwwww€"" ÿwwx€wwwwww€"" ÿwwx€wwwwww€"" ÿwwx€wwwwww€"" ÿwwx€wwwwww€"""wwx€wwwwww€"""wwwˆwwwww€"""wwwˆwwwww€"""wwwˆwwwww€"""wwwˆwwwwwˆ"" ‡wwˆwwwwwˆ"" ‡wwˆwwwwwˆ"" ‡wwˆwwwwwˆ"" ‡wwˆwwwwwˆ"" ‡wwˆwpwwwww€""wwwxwpwwwww€""wwwxwpwwwww€""wwwxwpwwwww€""wwwxwpwwwww€""wwwxwwwwwwp" ÷wwwwwwwwwwp" ÷wwwxwwwwwwp" ÷wwwxwwwwwwp" ÷wwwxwwwwwwp" ÷wwwxwÿÿÿÿÿ" ÿÿÿÿðwwÿÿÿÿÿ" ÿÿÿÿðwwÿÿÿÿÿ" ÿÿÿÿðwwÿÿÿÿÿ" ÿÿÿÿðwwÿÿÿÿÿ" ÿÿÿÿðwwp¢*wwp¢*wwp¢*wwp¢*wwp¢*wwwwwwww -  wwwwwwwwwwwwww -  wwwwwwwwwwwwww -  wwwwwwwwwwwwww -  wwwwwwwwwwwwww -  wwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwww \ No newline at end of file --- 0 ---- *** ../vim-9.0.0697/src/VisVim/Res/ToolbarM.bmp 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/Res/ToolbarM.bmp 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,6 **** - BMöv(P€€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿwwwpwwwpw"'wwwwpw™w™wwwpw·{wwwwpwwwpppppwp""wwpy™—wp ·{·wp w€w€ ppppw€""""'w€" w™ww€"»»»»w€",Ç€wxppppwx"r'wx" ™—wx+·{·wx ÌÌ€wwpwwpww€" w"ww€"™w™ww€"°{www€,À€wwpwwwx"rwwx"ywwx"wwwx "€pwpp wpww€" wpww€" wpww€" wpww€"ww""Gwwx"wwx"wwx"wwx"¢w÷x" ¢w÷w€" ¢w÷w€" ¢w÷w€" ¢w÷w€" zww€"zwwxzwwxzwwxzwwxww€÷xwww€÷w€www€÷w€www€÷w€www€÷w€www€w€www€wxww€wxww€wxww€wxww€ ÷xww€ ÷w€ww€ ÷w€ww€ ÷w€ww€ ÷w€pwwxww€pwwxww€pwwxww€pwwxww€pwwxww€pÿÿð ÿÿpÿÿð ÿÿpÿÿð ÿÿpÿÿð ÿÿpÿÿð ÿÿw - ww - ww - ww - ww - w \ No newline at end of file --- 0 ---- *** ../vim-9.0.0697/src/VisVim/Resource.h 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/Resource.h 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,30 **** - //{{NO_DEPENDENCIES}} - // Microsoft Developer Studio generated include file. - // Used by VisVim.rc - // - #define IDS_VISVIM_LONGNAME 1 - #define IDS_VISVIM_DESCRIPTION 2 - #define IDS_CMD_DIALOG 3 - #define IDS_CMD_ENABLE 4 - #define IDS_CMD_DISABLE 5 - #define IDS_CMD_TOGGLE 6 - #define IDS_CMD_LOAD 7 - #define IDR_TOOLBAR_MEDIUM 128 - #define IDR_TOOLBAR_LARGE 129 - #define IDD_ADDINMAIN 130 - #define IDC_DEVSTUDIO_EDITOR 1000 - #define IDC_CD_SOURCE_PATH 1001 - #define IDC_CD_SOURCE_PARENT 1002 - #define IDC_CD_NONE 1003 - #define IDC_NEW_TABS 1004 - - // Next default values for new objects - // - #ifdef APSTUDIO_INVOKED - #ifndef APSTUDIO_READONLY_SYMBOLS - #define _APS_NEXT_RESOURCE_VALUE 131 - #define _APS_NEXT_COMMAND_VALUE 32771 - #define _APS_NEXT_CONTROL_VALUE 1004 - #define _APS_NEXT_SYMED_VALUE 101 - #endif - #endif --- 0 ---- *** ../vim-9.0.0697/src/VisVim/StdAfx.cpp 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/StdAfx.cpp 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,6 **** - // Stdafx.cpp : source file that includes just the standard includes - // VisEmacs.pch will be the pre-compiled header - // stdafx.obj will contain the pre-compiled type information - - #include "stdafx.h" - #include "atlimpl.cpp" --- 0 ---- *** ../vim-9.0.0697/src/VisVim/StdAfx.h 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/StdAfx.h 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,73 **** - // Stdafx.h : include file for standard system include files, - // or project specific include files that are used frequently, but - // are changed infrequently - // - - #if !defined(AFX_STDAFX_H__AC72670E_2977_11D1_B2F3_006008040780__INCLUDED_) - #define AFX_STDAFX_H__AC72670E_2977_11D1_B2F3_006008040780__INCLUDED_ - - #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers - - #include // MFC core and standard components - #include - - #include - //You may derive a class from CComModule and use it if you want to override - //something, but do not change the name of _Module - extern CComModule _Module; - - #include - - // Developer Studio Object Model - #include - #include - #include - #include - #include - #include - #include - #include - #include - - ///////////////////////////////////////////////////////////////////////////// - // Debugging support - - // Use VERIFY_OK around all calls to the Developer Studio objects which - // you expect to return S_OK. - // In DEBUG builds of your add-in, VERIFY_OK displays an ASSERT dialog box - // if the expression returns an HRESULT other than S_OK. If the HRESULT - // is a success code, the ASSERT box will display that HRESULT. If it - // is a failure code, the ASSERT box will display that HRESULT plus the - // error description string provided by the object which raised the error. - // In RETAIL builds of your add-in, VERIFY_OK just evaluates the expression - // and ignores the returned HRESULT. - - #ifdef _DEBUG - - void GetLastErrorDescription (CComBSTR & bstr); // Defined in VisVim.cpp - #define VERIFY_OK(f) \ - { \ - HRESULT hr = (f); \ - if (hr != S_OK) \ - { \ - if (FAILED(hr)) \ - { \ - CComBSTR bstr; \ - GetLastErrorDescription(bstr); \ - _RPTF2(_CRT_ASSERT, "Object call returned %lx\n\n%S", hr, (BSTR) bstr); \ - } \ - else \ - _RPTF1(_CRT_ASSERT, "Object call returned %lx", hr); \ - } \ - } - - #else //_DEBUG - - #define VERIFY_OK(f) (f); - - #endif //_DEBUG - - //{{AFX_INSERT_LOCATION}} - // Microsoft Developer Studio will insert additional declarations immediately before the previous line. - - #endif // !defined(AFX_STDAFX_H__AC72670E_2977_11D1_B2F3_006008040780__INCLUDED) --- 0 ---- *** ../vim-9.0.0697/src/VisVim/UnRegist.bat 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/UnRegist.bat 1970-01-01 00:00:00.000000000 +0000 *************** *** 1 **** - regsvr32.exe -unregister visvim.dll --- 0 ---- *** ../vim-9.0.0697/src/VisVim/VisVim.cpp 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/VisVim.cpp 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,152 **** - // VisVim.cpp : Defines the initialization routines for the DLL. - // - - #include "stdafx.h" - #include - #include "VisVim.h" - #include "DSAddIn.h" - #include "Commands.h" - - #ifdef _DEBUG - #define new DEBUG_NEW - #undef THIS_FILE - static char THIS_FILE[] = __FILE__; - - #endif - - CComModule _Module; - - BEGIN_OBJECT_MAP (ObjectMap) - OBJECT_ENTRY (CLSID_DSAddIn, CDSAddIn) - END_OBJECT_MAP () - - class CVisVimApp : public CWinApp - { - public: - CVisVimApp (); - - //{{AFX_VIRTUAL(CVisVimApp) - public: - virtual BOOL InitInstance (); - virtual int ExitInstance (); - //}}AFX_VIRTUAL - - //{{AFX_MSG(CVisVimApp) - //}}AFX_MSG - DECLARE_MESSAGE_MAP () - }; - - BEGIN_MESSAGE_MAP (CVisVimApp, CWinApp) - //{{AFX_MSG_MAP(CVisVimApp) - //}}AFX_MSG_MAP - END_MESSAGE_MAP () - - // The one and only CVisVimApp object - CVisVimApp theApp; - - CVisVimApp::CVisVimApp () - { - } - - BOOL CVisVimApp::InitInstance () - { - _Module.Init (ObjectMap, m_hInstance); - return CWinApp::InitInstance (); - } - - int CVisVimApp::ExitInstance () - { - _Module.Term (); - return CWinApp::ExitInstance (); - } - - // Special entry points required for inproc servers - // - - STDAPI DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID * ppv) - { - AFX_MANAGE_STATE (AfxGetStaticModuleState ()); - return _Module.GetClassObject (rclsid, riid, ppv); - } - - STDAPI DllCanUnloadNow (void) - { - AFX_MANAGE_STATE (AfxGetStaticModuleState ()); - return (AfxDllCanUnloadNow () == S_OK && _Module.GetLockCount () == 0) - ? S_OK : S_FALSE; - } - - // By exporting DllRegisterServer, you can use regsvr32.exe - // - STDAPI DllRegisterServer (void) - { - AFX_MANAGE_STATE (AfxGetStaticModuleState ()); - HRESULT hRes; - - // Registers object, typelib and all interfaces in typelib - hRes = _Module.RegisterServer (TRUE); - if (FAILED (hRes)) - // Hack: When this fails we might be a normal user, while the - // admin already registered the module. Returning S_OK then - // makes it work. When the module was never registered it - // will soon fail in another way. - // old code: return hRes; - return S_OK; - - _ATL_OBJMAP_ENTRY *pEntry = _Module.m_pObjMap; - CRegKey key; - LONG lRes = key.Open (HKEY_CLASSES_ROOT, _T ("CLSID")); - - if (lRes == ERROR_SUCCESS) - { - USES_CONVERSION; - LPOLESTR lpOleStr; - - StringFromCLSID (*pEntry->pclsid, &lpOleStr); - LPTSTR lpsz = OLE2T (lpOleStr); - - lRes = key.Open (key, lpsz); - if (lRes == ERROR_SUCCESS) - { - CString strDescription; - - strDescription.LoadString (IDS_VISVIM_DESCRIPTION); - key.SetKeyValue (_T ("Description"), strDescription); - } - CoTaskMemFree (lpOleStr); - } - - if (lRes != ERROR_SUCCESS) - hRes = HRESULT_FROM_WIN32 (lRes); - - return hRes; - - } - - // DllUnregisterServer - Removes entries from the system registry - // - STDAPI DllUnregisterServer (void) - { - AFX_MANAGE_STATE (AfxGetStaticModuleState ()); - - HRESULT hRes = S_OK; - _Module.UnregisterServer (); - return hRes; - } - - - // Debugging support - - // GetLastErrorDescription is used in the implementation of the VERIFY_OK - // macro, defined in stdafx.h. - - #ifdef _DEBUG - - void GetLastErrorDescription (CComBSTR & bstr) - { - CComPtr < IErrorInfo > pErrorInfo; - if (GetErrorInfo (0, &pErrorInfo) == S_OK) - pErrorInfo->GetDescription (&bstr); - } - - #endif //_DEBUG --- 0 ---- *** ../vim-9.0.0697/src/VisVim/VisVim.def 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/VisVim.def 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,11 **** - ; VisVim.def : Declares the module parameters for the DLL. - - LIBRARY "VISVIM" - DESCRIPTION 'VISVIM Windows Dynamic Link Library' - - EXPORTS - ; Explicit exports can go here - DllCanUnloadNow PRIVATE - DllGetClassObject PRIVATE - DllRegisterServer PRIVATE - DllUnregisterServer PRIVATE --- 0 ---- *** ../vim-9.0.0697/src/VisVim/VisVim.dll 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/VisVim.dll 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,130 **** - MZÿÿ¸@Àº´ Í!¸LÍ!This program cannot be run in DOS mode. - $(bkl 8l 8l 8è - 8m 8l 8è 8ë8 8Richl 8PELåÚ>à!  - \zPcp0‰£ˆ‚ À!ð$ p˜.textZ\ `.rdataÓp`@@.dataÔ-z@À.rsrc!À"@@.relocðð²@B‹D$PjjhlhXh8thÀ¦èÞ Âé Ã¡,qА¸HtАè 鐐¹ø¥é6h èvQƒÄА¹ø¥éé»LV‹ñjèxMÇht‹Æ^АÃÂV‹ñè¨ÿÿÿöD$t Vè3MƒÄ‹Æ^V‹ñ‹FlÇÀ¦dPh hÀ¦Ç$§è–‹ÎèýL^АV‹ñhÀ¦è£‹ÎèàL^Аjÿh¨dd¡Pd‰%QVè“NPè¾L‰D$‹D$ ‹L$‹T$PQRhÀ¦ÇD$ èyL$‹ðÇD$ÿÿÿÿè€L‹L$‹Æd‰ ^ƒÄ jÿhÈdd¡Pd‰%QVè#NPèNL‰D$3ö‰t$èEL…Àu95Ô¦t¾L$ÇD$ÿÿÿÿèL‹L$‹Æd‰ ^ƒÄАU‹ìjÿhødd¡Pd‰%ƒìVWè­MPèØK‰EäjjhÀ¦ÇEüèà‹ð…ö‰uàŒá‹=ЦÇEðh?h˜h€MðÆEüè« ‹ð…ö…’‹EèPQÿ€r‹Eè…Àt$Pÿdpt‹ÆƒÀ$üè6O‹Uè‹ÄVRPèÉh?P‹EðMðPèW ‹ð…öu4MìèAKjMìÆEüè-K‹MìVQhŒMðèi MìÆEüè K‹UèRÿ„r…ötæÿÿÎ€ë‹uàMðÆEüèr MäÇEüÿÿÿÿè½J‹Môe؋Æd‰ _^‹å]Аé; jÿhed¡Pd‰%QèDLPèoJ‰D$jhÀ¦ÇD$è÷L$ÇD$ ÿÿÿÿè@J‹L$3Àd‰ ƒÄА3ÀАU‹ìjÿhKed¡Pd‰%Qƒì SVW3ÿ‰eðj<ÇE쀉}è‰}üèJ‹ðƒÄ‰uä;÷ÆEüt*NÇ@uèšÇ(uF$ÆEüPÿ\pÇuë 3öë ¸¼Ëuè…öÇEüÿÿÿÿtP‹M‹E‰N ‹M ‹PQVÿ…À‰Eìt6Çu‹=`pV$RÇEüÇFÿ׍FÇEüÿÿÿÿPÿ×Vè1IƒÄ‹Mô‹Eì_^d‰ [‹å] V‹ñFÇPÿ\p‹Æ^А‹D$…Àu‹D$ ‹L$PQjèG ¸€Â SUV‹t$W~$WÿPp‹-TpƒÆVÿՋ؋ƒøuhÔ¦ÿÕWÿXp_^‹Ã][S‹\$UVs$WVÿPp‹-Lp{WÿՋ?VÿXp…ÿu…Ût%‹Ëè*SèLHƒÄ‹Ç_^][ƒÿuhÔ¦ÿՋÇ_^][d¡jÿhhePd‰%SV‹ñWÇu‹`p~F$ÇD$PÇÿÓ÷ÞöÇD$ÿÿÿÿ#÷ƒÆVÿӋL$ _^d‰ [ƒÄ А‹D$ ‹L$‹T$PQhXuRèç  U‹ìjÿh›ed¡Pd‰%Qƒì SVW»€‰eðj(‰]ìÇEèÇEüèG‹ðƒÄ‰uä…öÆEüt%NLjuè#þÿÿhÔ¦ÆEüÇpuÿTpë3öë ¸.Ë]ì‹uè…öÇEüÿÿÿÿtO‹M‹U ‹QRVÿ‹Ø…Ût<‰uÇpuhÔ¦ÇEüÇFÿLpFÇEüÿÿÿÿPÿ`pVè½FƒÄ‹Mô_‹Ã^d‰ [‹å] …ÉtAƒÀPÿ`pÃ3À¸Pÿ`pАV‹t$WFPÿLp‹ø…ÿu…öt‹ÎèVèAFƒÄ‹Ç_^jÿh¸ed¡Pd‰%QV‹ñW‰t$Çpu~hÔ¦ÇD$ÇÿLp÷ÞöÇD$ÿÿÿÿ#÷ƒÆVÿ`p‹L$ _d‰ ^ƒÄА‹D$ ‹L$‹T$PQh uRèç  ‹D$ ‹L$V‹t$PVjÿQjjfÇÿhp‹Æ^ ‹D$ ‹L$V‹t$jjPVjÿQjjÆÿHp‹Æ^ U‹ìSVW‹}…ÿ‹Ùu3Àë!WÿDp‹ðF6ƒÀ$üèI‹ÄVWPèlÿÿÿPÿdreô‰‹Ã_^[]‹Pÿ`rАQÿXrАV‹ñhܦÿPp‹NhܦA‰NÿXp^АV‹ñhܦÿPp‹FH‰Fu‹F …Àt‹PÿQÇF hܦÿXp^АS‹\$ VW‹ñhܦÇ¿@€ÿPp‹F …ÀuM‹L$f‹V - D$Pf‹FQ‹NRPQÿTr‹ø…ÿ|)‹D$L$Q‹‹QPÿR‹ø…ÿ|‹T$‰V ‹D$P‹ÿQ‹V ‰‹v …öt‹VÿP3ÿhܦÿXp‹Ç_^[‹T$ ¸@€…Òt ‹D$RPèHÿÿÿ ‹T$D$VPRè0ÿÿÿ‹ð‹D$…Àt!‹T$‹R‹T$R‹T$RPÿQ(‹ð‹D$P‹ÿQ‹Æ^QVj‹ñjÿPr‹L$D$PQ‹ÎèÑþÿÿ‹ð‹D$…Àt5‹L$,‹Q‹L$,Q‹L$,Q‹L$,Q‹L$,Q‹L$$Q‹L$$QPÿR,‹ð‹D$P‹ÿR‹Æ^YÂ$‹L$V…ɸ@€tC‹T$ ‹D$…ÒÇt'ƒ8u‹p…öuxÀu x Ft ¸€^ÂQP‹D$RÿP ^‹D$hÔ¦…Àt ÿTp3ÀÂÿLp3À‹D$…Àt&‹D$‹L$‹T$P‹D$Q‹L$R‹T$PQRè%‹D$‹L$ ‹T$P‹D$QRPè¹ÂU‹ìjÿhØed¡Pd‰%ì‹MSV‹uW…ðþÿÿ‹VhPQRÿtr‹N…ìýÿÿhPQÿds - ¸W€_^ ‹D$‹=\p‰N‰N‰F‹D$N‰FQ‰F ‰Fÿ׍V4Rÿ׃ÆLVÿ×_3À^ S‹\$UV…ÛWu ¸W€_^][‹D$ ‹s3í…Àu ¸@€_^][‹…Àtt‹L$‹;u‹y;xu‹y;xu‹y ;x t ‹FƒÆ…ÀtHë؋F~…Àu%ƒÃLSÿPpƒ?u‹F Wh yPÿV‹èSÿXp‹?…ÿt‹T$ ‹D$‹RPWÿ‹è‹L$ ƒ9u …íu½€_‹Å^][SW‹|$ 3Û;ûu - ¸W€_[ÂV‹w;ót9t‹F;Ãt‹PÿQ‰^‹FƒÆ;Ãuæ‹5`pWRÿ֍G4Pÿ֍OLQÿ֋G;ÃtPÿ0p^_3À[‹D$…Àu¸W€Â WVUS‹X3í‹;…ÿt5‹t$…öu ÿS…Àuë ¹3Àó¦u jÿS‹è…í| - ‹{ƒÃ…ÿuϋD$…í|‹L$…Ét - jPèx‹è‹Å[]^_ ‹D$…Àu¸W€ÂWS‹X‹;…ÿt1VU‹l$…íu ÿS…Àuë ¹‹õ3Àó¦ujÿS‹{ƒÃ…ÿu×]^[3À_U‹ìì‹MSVW‹Q …ðþÿÿhPRÿt"Qf‹ fƒù\t fƒù/tfƒù:u‹Âfƒ:‹ÊuÞ+Æ^Ñø‹…Àt‹PÿQАƒìD$ÇD$Phjh¨h€ÇD$ÿp…Àu#L$ T$Q‹L$RPhPPP‹D$(PQÿp‹D$…ÀtPÿp‹D$ƒÄАQ‹T$ D$ L$P‹D$ QjhjjjRPÇD$$ÿp‹D$YАQD$L$ P‹D$T$ Q‹L$RjPQÇD$ÿ p…À‹D$ t‹D$YА‹L$‹T$D$ jPjjQRÿp÷ØÀ@Аjÿh¸fd¡Pd‰%ƒìUVWèŸ5PèÊ3‰D$ ‹D$4T$Rh¨rfNjD$0PÇD$(‹ÇD$ÿ…À}PèÀƒÄé0‹D$…Àuht‘èƒÄé‹t$$‹D$0~ ‰F$Wè*‹…ÀuhT‘èÚƒÄéê‹PÿQ‹‹T$Rè!èO3‹n$‹L$‹?‹@‹Uhh€WPQÿ’Ä…À}Pè/ƒÄ韋|$,‹D$WjjhD‘h4‘P‹ÎèX„Àt|‹L$Wjjh$‘h‘Q‹Îè9„Àt]‹T$Wjjh‘hðR‹Îè„Àt>‹D$WjjhàhАP‹Îèû„Àt‹L$WjjhÀh´Q‹Îè܄Àu*L$ ÇD$ÿÿÿÿèA2¸ÿÿ€‹L$d‰ _^]ƒÄ‹T$4L$ ÇD$ÿÿÿÿfÇÿÿè2‹L$_^3Àd‰ ]ƒÄjÿhØfd¡Pd‰%QVè£3PèÎ1‰D$‹t$ÇD$‹N èf ‹F P‹ÿQL$ÇF ÇD$ÿÿÿÿè1‹L$3Àd‰ ^ƒÄjÿhgd¡Pd‰%ƒìVW‹ùL$ ès1L$ÇD$(èb1‹D$<L$PÆD$,èI1‹t$8L$ VèY1L$QL$èE1‹T$ L$Rè½ëÿÿ‹D$4L$PÆD$,èªëÿÿVL$ÆD$,è›ëÿÿ‹G$‹t$0T$ - ÆD$(‹R‹T$DP‹D$ R‹T$(PRVÿ‘Èfƒ|$ - ukh”‘è?‹D$‹5`rƒÄÆD$(Pÿ֋L$ÆD$(Qÿ֋T$ÆD$(Rÿ֍L$ÆD$(è€0L$ ÇD$(ÿÿÿÿèo02À‹L$ d‰ _^ƒÄ$Âfƒ|$Dÿu‹O$‹T$‹QRjVÿ°‹D$‹5`rPÆD$,ÿ֋L$ÆD$(Qÿ֋T$ÆD$(Rÿ֍L$ÆD$(è0L$ ÇD$(ÿÿÿÿèõ/‹L$ _°d‰ ^ƒÄ$ìV‹´$jhjhVjhÿ(pjVD$ h¸‘Pÿ$rƒÄL$jh°‘Qjÿlr^ÄА‹D$ìL$Phà‘Qÿ$rƒÄ T$jh°‘RjÿlrÄАU‹ìjÿhCgd¡Pd‰%Qƒì SVW¿€‰eðj,‰}ìÇEèÇEüè/‹ðƒÄ‰uä…öÆEüt‹ÎèªhÔ¦ÆEüÇXvÿTpë3öë ¸§/Ë}ì‹uè…öt3ÿ‹E‹Mô‰0‹Ç_^d‰ [‹å]‹D$‹L$ ‹T$PQR¹’è§êÿÿ‹D$‹L$‹T$P‹D$Q‹L$RPQ¹’èêÿÿ‹D$$‹L$ ‹T$P‹D$Q‹L$R‹T$P‹D$Q‹L$R‹T$PQR¹’è©êÿÿÂ$V‹t$WFPÿLp‹ø…ÿu…öt‹Îè?VèÁ-ƒÄ‹Ç_^‹D$ ‹L$‹T$PQhˆvRè×ñÿÿ jÿhXgd¡Pd‰%QV‹ñ‰t$ÇXvhÔ¦ÇD$ÇFÿLp‹ÎÇD$ÿÿÿÿ蔋L$^d‰ ƒÄАjÿhxgd¡Pd‰%QV‹ñ‰t$3ÀÇ°v‰D$‰F‰F‰F F0Pÿ\r‹L$‹Æd‰ ^ƒÄАÇÈvАŠD$V‹ñ¨ÇÈvt Vè±,ƒÄ‹Æ^ÂV‹ñèöD$t Vè“,ƒÄ‹Æ^jÿh˜gd¡Pd‰%QV‹ñ‰t$Ç°vÇD$è ‹L$ÇÈvd‰ ^ƒÄАV‹ñ‹F…Àt ‹PÿQÇF^Аƒì‹D$V‹ñPÇD$訃čL$QPÿŒr…À‰F|9T$D$Rh yjjPÿˆr…À‰F|‹D$VRhy‹Pÿ…À‰F}$‹D$…Àt‹PÿQ‹v…öt‹VÿR2À^ƒÄ‹D$P‹ÿQ°^ƒÄQ‹D$V‹ñPèƒÄT$‰D$ ‹FRh‹T$jRhpyPÿQ3ɉF…À‹D$^œÁI#ÁY‹L$ ‹T$D$PQ‹L$ Rjè&А‹L$ ‹T$D$PQ‹L$ RjèFА‹D$V‹ñPècÿÿÿ…Àu2À^‹L$‹T$QRP‹D$P‹Îè^ƒìS‹Ù3ÉU‰L$V‹t$4‰L$3À‰L$ …öW‰\$‰D$‰D$‰L$(tT$RVè‹D$ƒÄŠL$0ÇD$8ýÿÿÿöÁt'…ÀuÇCW€2À_^][ƒÄL$8ÇD$(‰L$ …À„„ÁàPÿr‹Ð…Ò‰T$uÇC€2À_^][ƒÄ‹L$3ÀÁá‹Ù‹úÁéó«‹Ëƒáóª‹D$ÁàlðUÿ\rUVè$‹ØƒÄ…Û„‹t$<};l$‚ž3Àf‹E=@˜„½ƒÀþƒø ‡Ÿÿ$…l6f‹ƒÆf‰é¬ÙƒÆÙé ÝƒÆÝ锋ƒÆ‰‹Nü‰O邋ƒÆRÿdr…À‰„5ëj‹ƒÆ÷ÚÒf‰ë\ƒÆ‹ÍFð‹Vð‰‹P‰Q‹P‰Q‹@ ‰A ë;ý¿ÿÿƒø - ‡ ÿ$…œ6‹ƒÆ‰ë‹ƒÆÇ닃Ɖ닃ƉƒíƒïUÿ\rUSè‹ØƒÄ…Û…ñþÿÿ‹D$‹\$‹L$s0V‰D$(‰L$ ÿ\rK ‹CQKQ‹L$$VQ‹L$@Q‹L$HhhpyQPÿR‰C‹D$…Àt3‹l$‹=XrH‹õ‰D$fƒ>uVÿ׋D$ƒÆ‹ÐH…Ò‰D$uåUÿ„r‹C_…À^]À[ƒÄ‹L$‹ÙÇAW€ë¤‹T$‹ÚÇB€fÇE돋D$‹ØÇ@W€ë€Ä4n5Ò4Þ4ê4Þ4ü4w5X55"5X5w5X5n5X5w5n5w5X5a5n5w5ìÈV‹ñ‹F=ÿÿ€XtLþ¿ÿƒø‡¦ ÿ$…èDD$hð£Péš hä£é‹ T$hÜ£Ré D$hÔ£Pér hÄ£éc =ÿÿ€ „ûÿÿþƒø‡? ÿ$…øDT$h°£Ré3 D$hœ£Pé$ h€£é T$h`£Ré D$h<£Péü h £éí T$h £Ré㠍D$hø¢PéÔ hÜ¢éÅ T$hÄ¢Ré» D$h¤¢Pé¬ h„¢é T$hd¢Ré“ D$hD¢Pé„ h0¢éu T$h¢Rék D$h¢Pé\ hì¡éM =€€„ìÿÿýƒø‡) ÿ$…‹|$0‰~‰F‹D$8‰F ÿRdL$ÆD$,QÿXr‹T$Rÿ`rÆD$,‹D$…Àt‹PÿQL$ ÇD$,ÿÿÿÿèª ‹L$$_3Àd‰ ^ƒÄ(QèYPè„ L$‰D$èq 3ÀY‹D$VP‹ñh‚èZÇ`wÇF`ÿÿÿÿÇFd‹Æ^‹A jPÿxrА‹A jPÿxrАV‹ñèöD$t Vèó ƒÄ‹Æ^éý V‹ñW‹|$ F`PhéWèç ƒÆdVhèWèÒ _^¡ÐpА¸àvАjÿh€hd¡Pd‰%ƒìlSWèPPè{ ‰D$‹œ$„jDŽ$€‹C P‹ÿ‘ÌjL$èÜþÿÿ‹ ­¡¤L$ ÆD$|‰T$p‰D$lè… ƒøut‹L$p‹T$lh0¤‰ ­‰¤èøÖÿÿ‹øƒÄ…ÿtMVUh°‘WèR×ÿÿ‹-p‹ðƒÄ…öt,¡ ­Ph¤Vè²×ÿÿ‹ ¤ƒÄ Qh¤Vè×ÿÿƒÄ VÿÕWÿÕ]^‹C jÿP‹ÿ’̍L$ ÆD$|è˜ L$ÇD$|ÿÿÿÿè ‹L$t_3Àd‰ [ƒÄxÂjÿh˜hd¡Pd‰%Qè$ PèO ‰D$jÇD$èLƒÄL$ÇD$ ÿÿÿÿè" ‹L$3Àd‰ ƒÄjÿh¸hd¡Pd‰%QèÄ Pèï - ‰D$jÇD$èìƒÄL$ÇD$ ÿÿÿÿè - ‹L$3Àd‰ ƒÄjÿhØhd¡Pd‰%Qèd Pè - ‰D$‹¤3À…Ò”ÀPÇD$考čL$ÇD$ ÿÿÿÿèV - ‹L$3Àd‰ ƒÄjÿh id¡Pd‰%ƒìSVWèï Pè - ‰D$3ۉ\$0‰\$$‰\$ ‰\$‹D$8T$ RÆD$4‹@ P‹ÿQ`3ɋD$ ;ÔÁ„Ét>‹L$ÆD$0;Ët - ‹QÿR‹D$ ;ÃÆD$0t‹PÿQSˆ\$4ÿ`rÇD$0ÿÿÿÿ邃Ïÿ3É;É|$‰L$t‹L$QhhsPÿ‹D$ ‹L$3Ò;Ë”„ÒÆD$0t1;ËÆD$0t - ‹QÿP‹D$ ‹L$ÆD$0;Ët - ‹QÿR‹D$ ÆD$0ë>‹D$ PQÿR …À}I‹D$ÆD$0;Ãt‹PÿQ‹D$ÆD$0;Ãt‹PÿR‹D$ ÆD$0;Ãt‹PÿQSˆ\$4ÿ`r齋D$L$QP‹ÿ’…À|H‹L$3À;ˉD$8t‹D$8PhxsQÿ‹D$8;ÃÆD$0t‹T$RPÿQ(‹D$8;ÃÆD$0t‹PÿQ‹T$D$ RPèҋL$(‹5`rƒÄQÿÖÆD$0‹D$;Ãt‹PÿR‹D$ÆD$0;Ãt‹PÿQ‹D$ ÆD$0;Ãt‹PÿRSˆ\$4ÿ։|$0L$è‹L$(_^3Àd‰ [ƒÄ(‹D$Vh0¤£¤èÌÒÿÿ‹ðƒÄ…öt.h°‘Vè(ÓÿÿƒÄ…Àt‹ ¤Qh$¤PèÓÿÿƒÄ Vÿp^Аjÿh;id¡Pd‰%ìVWL$è:ÚÿÿD$h„¤PDŽ$4è ‹øƒÄ…ÿ„Œ$<T$HQRÆD$PÆD$QèçóÿÿƒÄPh€¤D$WPèÜÿÿƒÄ„À„É¡¤‹´$4ƒøtVL$ WQèëƒÄ ‹‹5$rRD$Lht¤Pÿ֊L$TƒÄ „ɍD$Ht€8\uÆ/ŠH@„ÉuðŒ$<T$HQRèbóÿÿƒÄPh€¤D$WPè~ÛÿÿƒÄ„ÀtH‹„$8…À~wPL$Lhl¤QÿÖƒÄ ”$<D$HRPèóÿÿƒÄL$Ph€¤WQè6ÛÿÿƒÄ„Àu:T$RèåƒÄL$DŽ$,ÿÿÿÿèŽÙÿÿ3À‹Œ$$d‰ _^Ä(ÃjD$ h\¤PèÄÚÿÿƒÄ „Àu L$èdÞÿÿL$DŽ$,ÿÿÿÿè@Ùÿÿ‹Œ$$_¸d‰ ^Ä(АV‹t$‹F…Àuh¤‹ÎèxÙÿÿ„Àt7h„¤‹ÎèÚÿÿ…Àu)‹Îè=Ùÿÿh¤‹ÎèQÙÿÿ„Àth„¤‹ÎèáÙÿÿ…Àu3À^А‹L$ìyó€u.D$h ¤Pÿ$rƒÄL$jh’QjÿlrÄÃèŠÝÿÿÄАjÿh[id¡Pd‰%ìä‹„$ü‹QL$èö‹L$jT$ jD$ RPQDŽ$ÿ(rŠL$ƒÄ„ɍD$t€8\uÆ/ŠH@„Éuðƒ=¤u ŠD$ „À¸\¥u¸,§PT$ D$RPŒ$hP¥Qÿ$rƒÄ”$ü„$RPèþðÿÿ‹Œ$‹”$üƒÄPh€¤QRèÙÿÿƒÄL$DŽ$ìÿÿÿÿè%‹Œ$äd‰ ÄðА¹’éF¿ÿÿU‹ìjÿhƒid¡Pd‰%Qƒì SVW¿€‰eðj(‰}ìÇEèÇEüèÏ‹ðƒÄ‰uä…öÆEüt‹ÎèJhÔ¦ÆEüÇ8xÿTpë3öë ¸çZË}ì‹uè…öt3ÿ‹E‹Mô‰0‹Ç_^d‰ [‹å]‹D$Ç3À‹D$‹L$ ‹T$PQR¹`¥èW¿ÿÿ‹D$‹L$‹T$P‹D$Q‹L$RPQ¹`¥èM¿ÿÿ‹D$$‹L$ ‹T$P‹D$Q‹L$R‹T$P‹D$Q‹L$R‹T$PQR¹`¥èY¿ÿÿÂ$‹D$ƒÀPÿTpV‹t$WFPÿLp‹ø…ÿu…öt‹Îè?VèQƒÄ‹Ç_^‹D$ ‹L$‹T$PQhˆxRègÆÿÿ jÿh id¡Pd‰%QV‹ñW‰t$Ç8x~hÔ¦ÇD$ÇÿLp÷ÞöÇD$#÷ƒÆVÿ`p¹`¥ÇD$ÿÿÿÿè½ÿÿ‹L$ _d‰ ^ƒÄАd¡jÿh¸iPd‰%3À;ȉD$tAƒÀPÿ`p¹`¥ÇD$ÿÿÿÿè¼ÿÿ‹L$d‰ ƒÄ А¹`¥馼ÿÿjÿhØid¡Pd‰%QV‹ñ¹`¥‰t$ÇyèC¼ÿÿ3À‰D$‰FFPÿ\p‹L$Ç°x‹Æd‰ ^ƒÄАÿ%rÿ%rÿ%üqÿ%øqÿ%ôqÿ%ðqÿ%ìqÿ%èqÿ%äqÿ%àqÿ%Üqÿ%Øqÿ%Ôqÿ%Ðqÿ%Ìqÿ%Èqÿ%Äqÿ%Àqÿ%¼qÿ%¸qÿ%´qÿ%°qÿ%¬qÿ%¨qÿ%¤qÿ% qÿ%œqÿ%˜qÿ%”qÿ%qÿ%Œqÿ%ˆqÿ%„qÿ%€qÿ%|qÿ%xqÿ%tqÿ%pqÿ%lqÿ%hqÿ%dqÿ%`qÿ%\qÿ%Xqÿ%Tqÿ%Pqÿ%Lqÿ%Hqÿ%Dqÿ%@qÿ%_8_2_,_&_ ______ü^pQ Q0Qö^ð^ê^ä^Þ^Ø^Ò^Ì^Æ^À^º^´^®^¨^¢^œ^\°[Ð[[ [@[p[ÐP@MÐP`M@O@O`O@O@OÐPÐPÐPy¸rpbpbpb[ [@[p[pbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpbpb8z¬_€zdÀF ÀFÀFÀF„²–±´º¶œª4 ±ò}TŽe++Ñx¥ÿÿÿÿ˜¥ÿÿÿÿ¸¥ÿÿÿÿzèyÐyz¸¥(zà¥ÿÿÿÿPzhzà¥pz “¸zÿÿÿÿ d “àzÿÿÿÿÀd “{ÿÿÿÿàdèdðd “@{ÿÿÿÿe “h{{ÿÿÿÿ0e;eÿÿÿÿÿÿÿÿCe¨{¶ “Ø{ÿÿÿÿ`e “|(|ÿÿÿÿ€e‹eÿÿÿÿÿÿÿÿ“e@|( “p|ÿÿÿÿ°e “˜|ÿÿÿÿÐe “À|ÿÿÿÿðe “è|ÿÿÿÿf “}ÿÿÿÿ0f “8}ÿÿÿÿPf “`}ÿÿÿÿpfxf “}ÿÿÿÿf˜f “À}ÿÿÿÿ°f “è}ÿÿÿÿÐf “~ÿÿÿÿðføfggg “X~€~ÿÿÿÿ0g;gÿÿÿÿÿÿÿÿ˜~¡/ “È~ÿÿÿÿPg “ð~ÿÿÿÿpg “ÿÿÿÿg “@ÿÿÿÿ°g “hÿÿÿÿÐgØg “˜ÿÿÿÿhh h(h “Øÿÿÿÿ@hHhPh “€ÿÿÿÿphxh “@€ÿÿÿÿh “h€ÿÿÿÿ°h “€ÿÿÿÿÐh “¸€ÿÿÿÿðhøhiiii “ÿÿÿÿ0i “0ÿÿÿÿPi “Xˆÿÿÿÿpi{iÿÿÿÿÿÿÿÿÿÿÿÿ áZ “Ёÿÿÿÿiÿÿÿÿ˜i “‚ÿÿÿÿ°i “(‚ÿÿÿÿÐi “P‚ÿÿÿÿäi “x‚ÿÿÿÿøiÿÿÿÿj˜ƒÀ…pp<…:†rHƒÚ‡ p”… ˆlr(ƒ¢ˆp¨… - ‰€rp…‰Hr’ˆ‚ˆpˆ\ˆLˆ:ˆ,ˆÌ‡À‡®‡¢‡”‡ˆ‡|‡f‡R‡F‡0‡‡ê†Ò†º†ž†††z†‡+€æ€€ €Ö€å€Y€X - €€è€¥€É€¿€€Ž €L€€€I€ €Q €€ý€6 €Š€€˜€ €'€)€ž€V€­€"€å€ç€*€X€:€ €y€7€ï€î€¤€Ò €f€²€†€õ€€‘€O€\€«€€7€€@€ €k€Û€W€¥ - €q€9€1€š€H€€ð€ €ñ€÷€ö€  € €© €¾ €@ €q€» €K €¦ €R€©€»€Z€ï€¶€´€ €\ €O€A€R€c€Ð €ú €†€ç€/€D€\€Ê…Þ…ê…ô…ü…††"†0†F†R†b†¡€£€É€¢€ €€€€ˆö‡è‡ˆÀˆ°ˆÒˆæˆøˆMFC42.DLLI__CxxFrameHandler_purecallŽmalloc[free¯sprintf¶_splitpathB_EH_prologU__dllonexitƒ_onexitMSVCRT.dll _initterm›_adjust_fdiv??1type_info@@UAE@XZ¢lstrlenWLDeleteCriticalSectionyInitializeCriticalSectionLeaveCriticalSection~InterlockedIncrementXEnterCriticalSection{InterlockedDecrement«MultiByteToWideCharnWideCharToMultiByte¡lstrlenAþGetModuleHandleAüGetModuleFileNameA˜lstrcmpiA›lstrcpyAlHeapDestroy’lstrcatA“FormatMessageAšLocalFree–LocalAllocKERNEL32.dllƒLoadStringA!CharNextA•MessageBoxA²EnableWindowUSER32.dllRegCloseKeyRegCreateKeyExA.RegOpenKeyExA6RegQueryValueExAARegSetValueExARegDeleteKeyA#RegEnumKeyExAADVAPI32.dllECoTaskMemFreeòStringFromCLSID CoCreateInstanceCLSIDFromProgIDDCoTaskMemAllocole32.dllOLEAUT32.dllåÚ>€‰X‰h‰x‰ð€`Ћ‰›‰­‰¿‰VISVIM.dllDllCanUnloadNowDllGetClassObjectDllRegisterServerDllUnregisterServerz_0p8t@P0VisVim.DSAddIn.1VisVim Developer Studio Add-inDescriptionCLSID.tlbSoftwareVisVimLoadVisVimLoadCmdVisVimToggleVisVimToggleCmdVisVimDisableVisVimDisableCmdVisVimEnableVisVimEnableCmdVisVimDialogVisVimDialogCmdCCommandsObj::CreateInstanceIApplication::QueryInterfaceIApplication::AddCommandVisVimUnexpected error (Error code: %lx) - %sUnexpected error - %s failedøsèsOLE ErrorAn OLE error occured: - Code = %s - Result = %lx.UNKNOWN SCODEMK_S_MONIKERALREADYREGISTEREDMK_S_USMK_S_HIMMK_S_MEMK_S_REDUCED_TO_SELFCACHE_S_SOMECACHES_NOTUPDATEDCACHE_S_SAMECACHECACHE_S_FORMATETC_NOTSUPPORTEDVIEW_S_ALREADY_FROZENDATA_S_SAMEFORMATETCINPLACE_S_TRUNCATEDOLEOBJ_S_INVALIDHWNDOLEOBJ_S_CANNOT_DOVERB_NOWOLEOBJ_S_INVALIDVERBDRAGDROP_S_USEDEFAULTCURSORSDRAGDROP_S_CANCELCONVERT10_S_NO_PRESENTATIONDRAGDROP_S_DROPOLE_S_USEREGOLE_S_STATICOLE_S_MAC_CLIPFORMATSTG_S_CONVERTEDS_FALSES_OKE_INVALIDARGE_OUTOFMEMORYE_HANDLEE_ACCESSDENIEDMK_E_NOPREFIXMK_E_NOSTORAGEMK_E_NOINVERSEMK_E_MUSTBOTHERUSERMK_E_CANTOPENFILEMK_E_NOTBOUNDMK_E_NOTBINDABLEMK_E_INTERMEDIATEINTERFACENOTSUPPORTEDMK_E_INVALIDEXTENSIONMK_E_NOOBJECTMK_E_SYNTAXMK_E_UNAVAILABLEMK_E_NEEDGENERICMK_E_EXCEEDEDDEADLINEMK_E_CONNECTMANUALLYCO_E_APPDIDNTREGCO_E_OBJNOTCONNECTEDCO_E_OBJISREGCO_E_OBJNOTREGCO_E_WRONGOSFORAPPCO_E_ERRORINDLLCO_E_DLLNOTFOUNDCO_E_ERRORINAPPCO_E_APPSINGLEUSECO_E_APPNOTFOUNDCO_E_IIDSTRINGCO_E_CLASSSTRINGCO_E_CANTDETERMINECLASSCO_E_ALREADYINITIALIZEDCO_E_NOTINITIALIZEDCLIPBRD_E_CANT_CLOSECLIPBRD_E_BAD_DATACLIPBRD_E_CANT_SETCLIPBRD_E_CANT_EMPTYCLIPBRD_E_CANT_OPENCONVERT10_E_STG_DIB_TO_BITMAPCONVERT10_E_STG_NO_STD_STREAMCONVERT10_E_STG_FMTCONVERT10_E_OLESTREAM_BITMAP_TO_DIBCONVERT10_E_OLESTREAM_FMTCONVERT10_E_OLESTREAM_PUTCONVERT10_E_OLESTREAM_GETINPLACE_E_NOTOOLSPACEINPLACE_E_NOTUNDOABLEOLEOBJ_E_NOVERBSOLEOBJ_E_INVALIDVERBCACHE_E_NOCACHE_UPDATEDREGDB_E_IIDNOTREGREGDB_E_CLASSNOTREGREGDB_E_INVALIDVALUEREGDB_E_KEYMISSINGREGDB_E_WRITEREGDBREGDB_E_READREGDBVIEW_E_DRAWCLASS_E_CLASSNOTAVAILABLECLASS_E_NOAGGREGATIONDRAGDROP_E_ALREADYREGISTEREDDRAGDROP_E_INVALIDHWNDDRAGDROP_E_NOTREGISTEREDDV_E_NOIVIEWOBJECTDV_E_DVTARGETDEVICE_SIZEDV_E_DVASPECTDV_E_CLIPFORMATDV_E_TYMEDDV_E_LINDEXDV_E_STATDATADV_E_STGMEDIUMDV_E_DVTARGETDEVICEDV_E_FORMATETCOLE_E_NOSTORAGEOLE_E_CANTCONVERTOLE_E_NOT_INPLACEACTIVEOLE_E_INVALIDHWNDOLE_E_WRONGCOMPOBJOLE_E_INVALIDRECTOLE_E_PROMPTSAVECANCELLEDOLE_E_STATICOLE_E_CANT_BINDTOSOURCEOLE_E_CANT_GETMONIKEROLE_E_CLASSDIFFOLE_E_BLANKOLE_E_NOCACHEOLE_E_NOTRUNNINGOLE_E_NOCONNECTIONOLE_E_ADVISENOTSUPPORTEDOLE_E_ENUM_NOMOREOLE_E_ADVFOLE_E_OLEVERBSTG_E_EXTANTMARSHALLINGSSTG_E_NOTFILEBASEDSTORAGESTG_E_SHAREREQUIREDSTG_E_OLDDLLSTG_E_OLDFORMATSTG_E_CANTSAVESTG_E_REVERTEDSTG_E_NOTCURRENTSTG_E_INUSESTG_E_INVALIDFLAGSTG_E_UNIMPLEMENTEDFUNCTIONSTG_E_UNKNOWNSTG_E_INVALIDNAMESTG_E_INVALIDHEADERSTG_E_ABNORMALAPIEXITSTG_E_MEDIUMFULLSTG_E_INVALIDPARAMETERSTG_E_FILEALREADYEXISTSSTG_E_LOCKVIOLATIONSTG_E_SHAREVIOLATIONSTG_E_READFAULTSTG_E_WRITEFAULTSTG_E_SEEKERRORSTG_E_DISKISWRITEPROTECTEDSTG_E_NOMOREFILESSTG_E_INVALIDPOINTERSTG_E_INSUFFICIENTMEMORYSTG_E_INVALIDHANDLESTG_E_ACCESSDENIEDSTG_E_TOOMANYOPENFILESSTG_E_PATHNOTFOUNDSTG_E_FILENOTFOUNDSTG_E_INVALIDFUNCTIONTYPE_E_INCONSISTENTPROPFUNCSTYPE_E_CIRCULARTYPETYPE_E_CANTLOADLIBRARYTYPE_E_OUTOFBOUNDSTYPE_E_IOERRORTYPE_E_CANTCREATETMPFILETYPE_E_TYPEMISMATCHTYPE_E_SIZETOOBIGTYPE_E_DUPLICATEIDTYPE_E_BADMODULEKINDTYPE_E_DLLFUNCTIONNOTFOUNDTYPE_E_UNKNOWNLCIDTYPE_E_NAMECONFLICTTYPE_E_AMBIGUOUSNAMETYPE_E_ELEMENTNOTFOUNDTYPE_E_WRONGTYPEKINDTYPE_E_INVALIDSTATETYPE_E_QUALIFIEDNAMEDISALLOWEDTYPE_E_UNDEFINEDTYPETYPE_E_LIBNOTREGISTEREDTYPE_E_REGISTRYACCESSTYPE_E_UNSUPFORMATTYPE_E_INVDATAREADTYPE_E_BUFFERTOOSMALLDISP_E_NOTACOLLECTIONDISP_E_BADCALLEEDISP_E_PARAMNOTOPTIONALDISP_E_BADPARAMCOUNTDISP_E_ARRAYISLOCKEDDISP_E_UNKNOWNLCIDDISP_E_BADINDEXDISP_E_OVERFLOWDISP_E_EXCEPTIONDISP_E_BADVARTYPEDISP_E_NONAMEDARGSDISP_E_UNKNOWNNAMEDISP_E_TYPEMISMATCHDISP_E_PARAMNOTFOUNDDISP_E_MEMBERNOTFOUNDDISP_E_UNKNOWNINTERFACERPC_E_UNEXPECTEDRPC_E_CANTCALLOUT_AGAINRPC_E_INVALID_PARAMETERRPC_E_INVALID_DATARPC_E_SERVER_CANTUNMARSHAL_DATARPC_E_SERVER_CANTMARSHAL_DATARPC_E_CLIENT_CANTUNMARSHAL_DATARPC_E_CLIENT_CANTMARSHAL_DATARPC_E_CANTTRANSMIT_CALLRPC_E_INVALID_DATAPACKETRPC_E_CLIENT_DIEDRPC_E_SERVER_DIEDRPC_E_CONNECTION_TERMINATEDRPC_E_CANTCALLOUT_INEXTERNALCALLRPC_E_CANTCALLOUT_INASYNCCALLRPC_E_CANTPOST_INSENDCALLRPC_E_CALL_CANCELEDRPC_E_CALL_REJECTEDE_UNEXPECTEDE_FAILE_ABORTE_POINTERE_NOINTERFACEChangeDirDevStudioEditorEnableVimVimXApplicationEventsObj::CreateInstanceSetForeground:%d - :drop %S - sSendKeysVim.ApplicationThere is no registered OLE automation server named "Vim.Application". - Use the OLE-enabled version of Vim with VisVim and make sure to register Vim by running "vim -register".:cd %s%s%s - ..¸rèsa\y.?AVCNoTrackObject@@\y.?AVAFX_MODULE_STATE@@\y.?AV_AFX_DLL_MODULE_STATE@@\y.?AVtype_info@@¨€8€P€p€ˆ€ €¸€€Ð€è€‚€€0€ H X h x ˆ ˜ ÔÜÀÁè¨Äh - ØÑDÝÏÄTYPELIB(P€€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿwwwpwwwpw"'wwwwpw™w™wwwpw·{wwwwpwwwpppppwp""wwpy™—wp ·{·wp w€w€ ppppw€""""'w€" w™ww€"»»»»w€",Ç€wxppppwx"r'wx" ™—wx+·{·wx ÌÌ€wwpwwpww€" w"ww€"™w™ww€"°{www€,À€wwpwwwx"rwwx"ywwx"wwwx "€pwpp wpww€" wpww€" wpww€" wpww€"ww""Gwwx"wwx"wwx"wwx"¢w÷x" ¢w÷w€" ¢w÷w€" ¢w÷w€" ¢w÷w€" zww€"zwwxzwwxzwwxzwwxww€÷xwww€÷w€www€÷w€www€÷w€www€÷w€www€w€www€wxww€wxww€wxww€wxww€ ÷xww€ ÷w€ww€ ÷w€ww€ ÷w€ww€ ÷w€pwwxww€pwwxww€pwwxww€pwwxww€pwwxww€pÿÿð ÿÿpÿÿð ÿÿpÿÿð ÿÿpÿÿð ÿÿpÿÿð ÿÿw - ww - ww - ww - ww - w(   - €€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿwwwwwwwpwwwwwwwwwwwwwwpwpwwwwwwwwwwwpwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwww@wwwwwwwwwwwwww@w wwwwwwwwwww@wpwwpwwwwwww@wpwwpwwwwwwwww@wwwˆˆ€wwwwpwwwwwwwp"$""wwwwwwwp"$p™w wwwwp"$wwpwwwwwp"$wˆˆ€wwpx€wwpwwwpwwwpx€w"""" wwwwwpx€w""@w p™wwpx€w""@°°wwwpx€w""@wˆ€wwwˆ wwwwwwwwˆ"" ""wwwwwˆ"""$p™ wwwwˆ""" »»»»»wwwˆ"" ˆˆ€wwwx€"ppppwwwwx€"" @w wwwwwx€""""@w ™wwwwx€"" »»»»»»°wwwx€"" ÌÌÀ€wwwwˆptppwwwwwˆ"""$p"wwwwwˆ"""$ ™wwwwwˆ"" »»»»»wwwwˆ" ÌÌÀˆˆ€wwwwx€pwDwpwwwwwx€""""@w wwwwwx€""""@™ wwwwwx€"" °°wwwwwx€" ˆ€wwwwwˆwwwwwwwwwwwˆ"""$wwwwwwˆ""" p™wwwwwˆ""$pwwwwwwˆ""$ˆˆ€wwwwwxwwwpwwwwwwx€""""@wpwwwwwx€"" ™w wwwwwx€"" "@pwwwwwwwx€"""€wwwwww€ wwwwwwwˆ"""$wpwwwwwwˆ""$pwwwwwwˆ"""$wwwwwwwwˆ"""ˆˆ€wwwwwwpw"""@wwwwwwwwx€""""@wwwwwwwwx€""""@wwwwwwwx€""""@wwwwwwwwx€"""wpwwwwpw"""$wwpwwwwwˆ"""$wwpwwwwwˆ"""$wwpwwwwwˆ"""$wwpwwwwwˆ"""$ww - wwwww""""@ww - wwwwwx€""""@ww - wwwwwx€""""@ww - wwwwwx€""""@ww - wwwwwx€""""@wp¢www‡wx€""""$p¢www‡wwˆ"""$p¢www‡wwˆ"""$p¢www‡wwˆ"""$p¢www‡wwˆ"""$ - "wwwwwˆ""""@ - "wwwwwx€""""@ - "wwwwwx€""""@ - "wwwwwx€""""@ - "wwwwwx€""""@ - "www÷wx€""""@ - "www÷wwˆ"""@ - "www÷wwˆ"""@ - "www÷wwˆ"""@ - "www÷wwˆ"""@p¢www€ÿwwˆ""$p¢www€ÿwwx€""$p¢www€ÿwwx€""$p¢www€ÿwwx€""$p¢www€ÿwwx€""$w - www€÷wx€""@ww - www€÷wwˆ"@ww - www€÷wwˆ"@ww - www€÷wwˆ"@ww - www€÷wwˆ"@wwpwww€ ÿwwˆ$wwpwww€ ÿwwx€$wwpwww€ ÿwwx€$wwpwww€ ÿwwx€$wwpwww€ ÿwwx€$wwwwww€"÷wx€@wwwwwww€"÷wwˆwwwwwww€"÷wwˆwwwwwww€"÷wwˆwwwwwww€"÷wwˆwwwwwww€" ÿwwˆwwwwwww€" ÿwwx€wwwwwww€" ÿwwx€wwwwwww€" ÿwwx€wwwwwww€" ÿwwx€wwwwwww€""÷wx€wwwwwww€""÷wwˆwwwwww€""÷wwˆwwwwww€""÷wwˆwwwwww€""÷wwˆwwwwww€"" ÿwwˆwwwwww€"" ÿwwx€wwwwww€"" ÿwwx€wwwwww€"" ÿwwx€wwwwww€"" ÿwwx€wwwwww€"""wwx€wwwwww€"""wwwˆwwwww€"""wwwˆwwwww€"""wwwˆwwwww€"""wwwˆwwwwwˆ"" ‡wwˆwwwwwˆ"" ‡wwˆwwwwwˆ"" ‡wwˆwwwwwˆ"" ‡wwˆwwwwwˆ"" ‡wwˆwpwwwww€""wwwxwpwwwww€""wwwxwpwwwww€""wwwxwpwwwww€""wwwxwpwwwww€""wwwxwwwwwwp" ÷wwwwwwwwwwp" ÷wwwxwwwwwwp" ÷wwwxwwwwwwp" ÷wwwxwwwwwwp" ÷wwwxwÿÿÿÿÿ" ÿÿÿÿðwwÿÿÿÿÿ" ÿÿÿÿðwwÿÿÿÿÿ" ÿÿÿÿðwwÿÿÿÿÿ" ÿÿÿÿðwwÿÿÿÿÿ" ÿÿÿÿðwwp¢*wwp¢*wwp¢*wwp¢*wwp¢*wwwwwwww -  wwwwwwwwwwwwww -  wwwwwwwwwwwwww -  wwwwwwwwwwwwww -  wwwwwwwwwwwwww -  wwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwwwwwwwwpwwwwwwwÄ4VS_VERSION_INFO½ïþ?"StringFileInfoþ040904b0 CompanyName> FileDescriptionVisVim DLL6 FileVersion1, 1, 0, 1.InternalNameVisVimJLegalCopyrightCopyright (C) 1998> OriginalFilenameVisVim.DLLXProductNameVisVim Dynamic Link Library: ProductVersion1, 1, 0, 1DVarFileInfo$Translation °ÀȀ²|Vim Add-In 1.3aMS Sans SerifP™ - èÿÿ€&Open file in DevStudio editor simultaneouslyP#¤:ÿÿÿÿ€Current directory P1U - éÿÿ€Set to &source file path P? - êÿÿ€Set to &parent directory of source file path PN? - ëÿÿ€Do &not changePfJÿÿ€&OkPafJÿÿ€&CancelMSFT A - qÿÿÿÿÿÿÿÿ €dÈ,Tÿÿÿÿœ$ÿÿÿÿÀLÿÿÿÿl0ÿÿÿÿä€ÿÿÿÿdÿÿÿÿ ÿÿÿÿ øÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4!$H@ÿÿÿÿÿÿÿÿ0ÿÿÿÿ%!Üÿÿÿÿ`¨ÿÿÿÿÿÿÿÿÿÿÿÿ%!Üÿÿÿÿx¼ÿÿÿÿÿÿÿÿÿÿÿÿ%!ÜÿÿÿÿÀÜÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨HÿÿÿÿðÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgr¬w)Ѳó`€þÿÿÿÿÿÿÿ0ÀFÿÿÿÿÀFÿÿÿÿgr¬w)Ѳó`€ÿÿÿÿgr¬w)Ѳó`€dÿÿÿÿgr¬w)Ѳó`€Èÿÿÿÿ ŽÏ³¶ÏŽMªBTÄxù£ŽŸJÏŽNªBTÄ ÿÿÿÿgr¬w)Ѳó`€,ÿÿÿÿ0Æ4d®Ï«YªÀ‘¡6ÿÿÿÿ0Æ4d®Ï«YªÀ‘¡`ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0¨4ð-stdole2.tlbWWW )devshl.dllØ )devdbg.pkgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§VisVimWWÿÿÿÿ 8”ICommandsWWWÿÿÿÿ UgVisVimDialogÿÿÿÿ ¤!VisVimEnableÿÿÿÿ óßVisVimDisableWWWÿÿÿÿ ÌÄVisVimToggleÿÿÿÿ - çVisVimLoadWWdÿÿÿÿ8¼CommandsÈÿÿÿÿ80”ApplicationEventsWWW,ÿÿÿÿ8ADebuggerEventsWWVisVim Developer Studio Add-inx€4 € 4 €$4 €(4 €,4 ````,D\x0H`Vim Developer Studio Add-InAAllows integration of Vim as the text editor in Developer Studio.V - Vim Add-In Dialog - Displays the options dialog box of the Vim Add-In - Vim Add-In DialogH - Enable Vim Add-In - Enables Vim as Visual Studio editor - Enable Vim Add-InK - Disable Vim Add-In - Disables Vim as Visual Studio editor - Disable Vim Add-In[ - Toggle Vim Add-In State - Toggles the enable state of the Vim Add-In - Toggle Vim Add-In StateT - Vim Add-In Load Document - Loads the current document in Vim - Vim Add-In Load Documentø - 0000Q0a00‘0¡0Ì0(12171=1d1ƒ1¶1ó1'2f22¯2À2è2ö2K3i3Ó3ø3F44˜4¦4¬4·4æ4ì4?5Ž5”5¨5±5Î5Ô5ã56)6<6B6Ÿ6¶67777)7W7\7p77½7Ì7ì7#8@8H8\8t8Ÿ8Í8ÿ8&9G9e9s9„9Š9’9œ9´9º9Ü9â9ú9 :0:x:~: - ;Õ;ß;ê;V<Š< <®<À<%=p=€=š=§=º=Ì=Û=ä=ê=ú=>C>›>? ?7?S?q?ƒ?¯?Ï? ˜0X0¤0Ã0[1p1ƒ1Þ1U2s3¢334b4 5µ5Ã5Ð5N6n677·7½78#8>8E8‰8–8Ø8h9{9¢9±9ì9&:W:s:¤:á: ;w;|;–;›;µ;º;Ô;Ù;ó;ø;s<ã<¨=·=4>¶>Â>É>×>à>????6?‡?‘?—?¢?à?0œ - 0N0l0¯0Ã0ß0ä0ù0#1A1X1r1‹1Ã1ß1ö1S2h2s2‡2ü2)4q4À45T5‡5¹5ß5ù5"6l6p6t6x6|6€6„6ˆ6Œ66”6˜6œ6 6¤6¨6¬6°6´6¸6¼6À6Ä6ö6ÿ6 - 77'727]7f7u7€7Ž77¨7¶7Å7Ð7Þ7í7ø788 8.8=8H8s8|8‹8–8¤8³8¾8Ì8Û8æ8ô8999+969D9S9w9|9Š9™9¤9²9Ú9ã9î9ü9 ::$:3:>:L:v:::À:Ë:Ù:è:;;+;X;_;h;w;‚;;Ÿ;ª;¸;Ç;Ò;à;ï;ú;<<"> >/>:>H>W>b>p>œ>¥>°>¾>Í>Ø>æ>õ>???C?Q?`???±?º?Å?Ó?â?í?û?@” - 000>0M0l0z0§0®0·0Æ0Ñ0ß0î0ù011!1/1>1I1W1f1q11Ž1™1§1¶1Á1Ï1Þ1é1÷1222.292G2V2a2o2~2‰2—2¦2±2¿2Î2Ù2û2 - 3&343S3^3†3•3 3®3Ì3Ó3Ü3ë3ö3444)454=4H4T4\4g4s4{4†4’4š4¥4º4Á4Ò4Û4è4ì4ð4ô4ø4ü4555 55555 5$5(5,5054585<5@5D5H5L5P5T5X5\5`5d5h5l5p5t5x5|5€5„5ˆ5Œ55”5˜5œ5 5¤5¨5¬5°5´5¸5¼5À5Ä5È5Ì5Ð5Ô5Ø5Ü5à5ä5è5ì5ð5666 6$6(6,6064686<6@6D6H6L6P6T6X6\6`6d6h6l6p6t6x6|6€6„6ˆ6Œ66”6˜6œ6 6¤6¨6¬6°6´6¸6¼6À6Ä6È6Ì6Ð6Ô6Ø6Ü6à6ä6è6ì6ð6ô6ø6ü6777 77777 7$7(7,7074787<7@7D7H7L7P7T7X7\7`7d7h7l7p7t7x7¼7À7Ä7È7Ì7Ð7Ô7Ø7Ü7à7ä7è7ì7ð7ô7ø7ü789%9D9H9L9P9T9X9\9`9d9Í9Ô9<:@:D:H:L:P:T:X:\:`:d:h:l:p:õ:(;3;K;U;m;€;£;¿;õ;ú;&—>¦>ó>þ>c?Š?´?Px 0/0}0ˆ01(181¡1±1Ã122C2I2O2d2p2~2„22™2ó2S3³3×3#4¯4Ù4x5­5ô5v6{6Ž6¡6§6·6Ã6ë6.7I7l7v7³7Ú7ÿ7R8­8½8Ô8ä899-969S9ž9Ã9Ñ9Ø9ï9ö9%:a:v:Ç:Ñ:×:â:0;Z;ž;º;Ü;<3>>>> >&>,>2>8>>>D>J>P>V>\>b>h>n>t>z>€>†>Œ>’>˜>ž>¤>ª>°>¶>¼>Â>È>Î>Ô>Ú>à>æ>ì>ò>ø>þ>? - ????"?(?.?4?:?@?F?L?R?X?^?d?j?p?v?…?•?¤?Í?Ù?ã?ï?`Ä0060_0ž0ó0,1>11›1¥1â1ð1ý1222r2‹2–2œ2§2´2¼2Ñ2Ö2Û2à2ê2ó233%333<3c3ˆ3å3"4(4.444:4@4F4L4R4X4^4d4j4p4v4|4‚4ˆ4Ž4©4É4ù45L5i5œ5¹5Ù5ù5696\66¡6¹6Ù67D7Y7y7™7¹7ù718Y88™8¹8Ù8!9<9\9„9¡9¹9Ù9í9 - :p H4L4h4l4p4t4x4|4€4„4ˆ4Œ44”4˜4œ4 4¤4¨4¬4°4´4¸4¼4À4Ä4È4Ì4Ð4Ô4Ø4Ü4à4ä4è4ì4ð4ô4ø4ü45555555 5(5,5054585@5D5H5L5P5X5p5t5x5|5€5ˆ5Œ55”5˜5 5X6\6`6d6h6l6p6t6x6|6€6„6ˆ6”6°6´6¸6¼6À6È6Ì6Ð6Ô6Ø6à6ä6777 77777 7$7(7,7074787<7@7D7H7L7P7T7X7\7`7d7h7l7p7t7x7|7€7„7ˆ7Œ77”7˜7œ7 7¤7¨7¬7°7´7¸7¼7À7Ä7È7Ì7Ð7Ô7Ø7Ü7à7ä7è7ì7ð7ô7ø7ü7888 88888 8$8(8,8084888<8@8D8H8L8P8T8X8\8`8d8h8l8p8t8x8|8€8ˆ8”8°8´8¸8¼8À8Ä8È8Ì8Ð8Ô8Ø8Ü8à8ä8è8ì8ð8ô8ø8999 99999 9$9(9,9094989<9@9D9H9P9T9X9\9Ð9è9::: :4:D:H:P:h:|:Œ:: :¼:È:ä:ð: ;;;(;D;P;X;t;|;Œ; ;´;À;Ü;è;ð; <<$<8>$>,>4>@>H>d>l>>¤>°>Ì>Ø>ô>??(?D?P?l?t?€?œ?¤?¬?´?À?Ü?ä?ì?ø?€T00(0D0P0l0x0”0 0¼0Ä0Ì0Ô0Ü0ä0ð0 1141@1H1d1l1˜1¬1¸1Ô1Ü1è122,282T2`2|2„200 0 0$0(0,08022 `5d5t5x5˜5¸5à5 \ No newline at end of file --- 0 ---- *** ../vim-9.0.0697/src/VisVim/VisVim.h 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/VisVim.h 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,33 **** - // VisVIM.h : main header file for the VisVim DLL - // - - #if !defined(AFX_VISVIM_H__AC72670B_2977_11D1_B2F3_006008040780__INCLUDED_) - #define AFX_VISVIM_H__AC72670B_2977_11D1_B2F3_006008040780__INCLUDED_ - - #ifndef __AFXWIN_H__ - #error include 'stdafx.h' before including this file for PCH - #endif - - #include "resource.h" // Main symbols - - #include - #include - #include - #include - #include - - // - // Prototypes - // - - HKEY GetAppKey (char* AppName); - HKEY GetSectionKey (HKEY hAppKey, LPCTSTR Section); - int GetRegistryInt (HKEY hSectionKey, LPCTSTR Entry, int Default); - bool WriteRegistryInt (HKEY hSectionKey, char* Entry, int nValue); - void ReportLastError (HRESULT Err); - void ReportInternalError (char* Fct); - - //{{AFX_INSERT_LOCATION}} - // Microsoft Developer Studio will insert additional declarations immediately before the previous line. - - #endif // !defined(AFX_VISVIM_H__AC72670B_2977_11D1_B2F3_006008040780__INCLUDED) --- 0 ---- *** ../vim-9.0.0697/src/VisVim/VisVim.mak 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/VisVim.mak 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,205 **** - # Microsoft Developer Studio Generated NMAKE File, Format Version 4.00 - # ** DO NOT EDIT ** - # - # When Who What - # 1999-08-01 Anon Original VisVim.dsp - # 2001-08-08 W.Briscoe Back-ported to a condensed VC4 Makefile - # Reduced inter-dependency of Release and Debug builds. - # - - # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - - !IF "$(CFG)" == "" - CFG=VisVim - Win32 Release - !MESSAGE No configuration specified. Defaulting to VisVim - Win32 Release. - !ENDIF - - !IF "$(CFG)" != "VisVim - Win32 Release" && "$(CFG)" != "VisVim - Win32 Debug" - !MESSAGE Invalid configuration "$(CFG)" specified. - !MESSAGE You can specify a configuration when running NMAKE on this makefile - !MESSAGE by defining the macro CFG on the command line. For example: - !MESSAGE - !MESSAGE NMAKE /f "VisVim.mak" CFG="VisVim - Win32 Debug" - !MESSAGE - !MESSAGE Possible choices for configuration are: - !MESSAGE - !MESSAGE "VisVim - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") - !MESSAGE "VisVim - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") - !MESSAGE - !ERROR An invalid configuration is specified. - !ENDIF - - !IF "$(OS)" == "Windows_NT" - NULL= - DEL_TREE = rmdir /s /q - !ELSE - NULL=nul - DEL_TREE = deltree /y - !ENDIF - # Begin Project - # PROP Target_Last_Scanned "VisVim - Win32 Release" - # PROP Use_MFC 2 - CPP=cl.exe - RSC=rc.exe - LINK32=link.exe - - !IF "$(CFG)" == "VisVim - Win32 Release" - - # PROP Use_Debug_Libraries 0 - # PROP Output_Dir ".\Release" - # PROP Intermediate_Dir ".\Release" - # PROP Target_Dir "" - OUTDIR=.\Release - INTDIR=.\Release - CPP_OBJS=.\Release/ - - # ADD CPP /MD /O2 /D "NDEBUG" /I.\Release - CPP_PROJ= /MD /O2 /D "NDEBUG" /I.\Release - # ADD RSC /d "NDEBUG - RSC_PROJ= /d "NDEBUG" - # ADD LINK32 /pdb:none - LINK32_FLAGS=/pdb:none - - !ELSEIF "$(CFG)" == "VisVim - Win32 Debug" - - # PROP Use_Debug_Libraries 1 - # PROP Output_Dir ".\Debug" - # PROP Intermediate_Dir ".\Debug" - # PROP Target_Dir "" - OUTDIR=.\Debug - INTDIR=.\Debug - CPP_OBJS=.\Debug/ - - # ADD CPP /MDd /Gm /Zi /Od /D "_DEBUG" /I.\Debug - CPP_PROJ= /MDd /Gm /Zi /Od /D "_DEBUG" /I.\Debug /Fd"$(INTDIR)/" - MTL_PROJ= /D "_DEBUG" - # ADD RSC /d "_DEBUG - RSC_PROJ= /d "_DEBUG" - # ADD LINK32 /debug /pdbtype:sept /pdb:".\Debug/VisVim.pdb" - LINK32_FLAGS=/debug /pdbtype:sept /pdb:"$(OUTDIR)/VisVim.pdb" - - !ENDIF - - # ADD CPP /nologo /W3 /GX /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_USRDLL" /c - CPP_PROJ=$(CPP_PROJ) /nologo /W3 /GX /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_USRDLL" /c /Fo"$(INTDIR)/" - # ADD RSC /l 0x409 /d "_AFXDLL" - RSC_PROJ=$(RSC_PROJ) /l 0x409 /d "_AFXDLL" /fo"$(INTDIR)/VisVim.res" - # ADD LINK32 /nologo /subsystem:windows /dll /machine:I386 /incremental:no - LINK32_FLAGS=$(LINK32_FLAGS) /nologo /subsystem:windows /dll /machine:I386\ - /incremental:no /def:".\VisVim.def"\ - /out:"$(OUTDIR)/VisVim.dll" /implib:"$(OUTDIR)/VisVim.lib" - - ALL : "$(OUTDIR)\VisVim.dll" - - CLEAN : - -@if exist "$(INTDIR)/$(NULL)" $(DEL_TREE) "$(INTDIR)" - - "$(OUTDIR)" : - if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" - - LINK32_OBJS= \ - "$(INTDIR)/VisVim.res" \ - "$(INTDIR)/VisVim.obj" \ - "$(INTDIR)/StdAfx.obj" \ - "$(INTDIR)/Reg.obj" \ - "$(INTDIR)/DSAddIn.obj" \ - "$(INTDIR)/OleAut.obj" \ - "$(INTDIR)/Commands.obj" - - "$(OUTDIR)\VisVim.dll" : "$(OUTDIR)" ".\VisVim.def" $(LINK32_OBJS) - $(LINK32) $(LINK32_FLAGS) $(LINK32_OBJS) - - {.}.c{$(CPP_OBJS)}.obj: - $(CPP) $(CPP_PROJ) $< - - {.}.cpp{$(CPP_OBJS)}.obj: - $(CPP) $(CPP_PROJ) $< - - # Begin Target - - # Name "VisVim - Win32 Release" - # Name "VisVim - Win32 Debug" - - # Begin Source File - - SOURCE=.\VisVim.cpp - - "$(INTDIR)\VisVim.obj" : $(SOURCE) "$(INTDIR)" - - # End Source File - # Begin Source File - - SOURCE=.\VisVim.def - # End Source File - # Begin Source File - - SOURCE=.\VisVim.odl - - !IF "$(CFG)" == "VisVim - Win32 Release" - - # PROP Ignore_Default_Tool 1 - # Begin Custom Build - - "$(INTDIR)\VisVim.tlb" : $(SOURCE) "$(INTDIR)" - midl /nologo /mktyplib203 /win32 /tlb VisVim.tlb /h VSVTypes.h .\VisVim.odl /out .\Release /D "NDEBUG" - - # End Custom Build - - !ELSEIF "$(CFG)" == "VisVim - Win32 Debug" - - # PROP Ignore_Default_Tool 1 - # Begin Custom Build - - "$(INTDIR)\VisVim.tlb" : $(SOURCE) "$(INTDIR)" - midl /nologo /mktyplib203 /win32 /tlb VisVim.tlb /h VSVTypes.h .\VisVim.odl /out .\Debug /D "_DEBUG" - - # End Custom Build - - !ENDIF - - # End Source File - # Begin Source File - - SOURCE=.\StdAfx.cpp - - "$(INTDIR)\StdAfx.obj" : $(SOURCE) "$(INTDIR)" - - # End Source File - # Begin Source File - - SOURCE=.\VisVim.rc - - "$(INTDIR)\VisVim.res" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\VisVim.tlb" - $(RSC) $(RSC_PROJ) /i "$(INTDIR)" $(SOURCE) - - # End Source File - # Begin Source File - - SOURCE=.\Reg.cpp - - "$(INTDIR)\Reg.obj" : $(SOURCE) "$(INTDIR)" - - # End Source File - # Begin Source File - - SOURCE=.\DSAddIn.cpp - - "$(INTDIR)\DSAddIn.obj" : $(SOURCE) "$(INTDIR)" - - # End Source File - # Begin Source File - - SOURCE=.\OleAut.cpp - - "$(INTDIR)\OleAut.obj" : $(SOURCE) "$(INTDIR)" - - # End Source File - # Begin Source File - - SOURCE=.\Commands.cpp - - "$(INTDIR)\Commands.obj" : $(SOURCE) "$(INTDIR)" - - # End Source File - # End Target - # End Project --- 0 ---- *** ../vim-9.0.0697/src/VisVim/VisVim.odl 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/VisVim.odl 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,61 **** - // VisVim.odl : type library source for VisVim.dll - - // This file will be processed by the Make Type Library (mktyplib) tool to - // produce the type library (VisVim.tlb). - - [ uuid(AC726707-2977-11D1-B2F3-006008040780), version(1.0), - helpstring ("VisVim Developer Studio Add-in") ] - library VisVim - { - importlib("stdole32.tlb"); - importlib("devshl.dll"); - importlib("ide\devdbg.pkg"); - - - // Dual interface for CCommands - // - // All commands that your add-in adds to DevStudio - // must appear in this interface. You may use the - // ClassView to add methods to this interface, which - // will cause stub implementations of those methods to - // appear in your CCommands class. - - [ uuid(AC726703-2977-11D1-B2F3-006008040780), - oleautomation, - dual - ] - - interface ICommands : IDispatch - { - // methods - [id(1)] - HRESULT VisVimDialog(); - HRESULT VisVimEnable(); - HRESULT VisVimDisable(); - HRESULT VisVimToggle(); - HRESULT VisVimLoad(); - }; - - // Class information for CCommands - - [ uuid(AC726704-2977-11D1-B2F3-006008040780) ] - coclass Commands - { - [default] interface ICommands; - }; - - [ hidden, uuid(AC726705-2977-11D1-B2F3-006008040780) ] - coclass ApplicationEvents - { - [default] interface IApplicationEvents; - } - - [ hidden, uuid(AC726706-2977-11D1-B2F3-006008040780) ] - coclass DebuggerEvents - { - [default] interface IDebuggerEvents; - } - - //{{AFX_APPEND_ODL}} - //}}AFX_APPEND_ODL}} - }; --- 0 ---- *** ../vim-9.0.0697/src/VisVim/VisVim.rc 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/VisVim.rc 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,202 **** - //Microsoft Developer Studio generated resource script. - // - #include "resource.h" - - #define APSTUDIO_READONLY_SYMBOLS - ///////////////////////////////////////////////////////////////////////////// - // - // Generated from the TEXTINCLUDE 2 resource. - // - #include "afxres.h" - - ///////////////////////////////////////////////////////////////////////////// - #undef APSTUDIO_READONLY_SYMBOLS - - ///////////////////////////////////////////////////////////////////////////// - // Englisch (USA) resources - - #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) - #ifdef _WIN32 - LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - #pragma code_page(1252) - #endif //_WIN32 - - #ifdef APSTUDIO_INVOKED - ///////////////////////////////////////////////////////////////////////////// - // - // TEXTINCLUDE - // - - 1 TEXTINCLUDE DISCARDABLE - BEGIN - "resource.h\0" - END - - 2 TEXTINCLUDE DISCARDABLE - BEGIN - "#include ""afxres.h""\r\n" - "\0" - END - - 3 TEXTINCLUDE DISCARDABLE - BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" - "#ifdef _WIN32\r\n" - "LANGUAGE 9, 1\r\n" - "#pragma code_page(1252)\r\n" - "#endif\r\n" - "#include ""afxres.rc"" // Standard components\r\n" - "#endif\r\n" - "1 TYPELIB ""VisVim.tlb""\r\n" - "\0" - END - - #endif // APSTUDIO_INVOKED - - - ///////////////////////////////////////////////////////////////////////////// - // - // Bitmap - // - - IDR_TOOLBAR_MEDIUM BITMAP MOVEABLE PURE "res\\ToolbarM.bmp" - IDR_TOOLBAR_LARGE BITMAP MOVEABLE PURE "res\\ToolbarL.bmp" - - #ifndef _MAC - ///////////////////////////////////////////////////////////////////////////// - // - // Version - // - - VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,1,0,1 - PRODUCTVERSION 1,1,0,1 - FILEFLAGSMASK 0x3fL - #ifdef _DEBUG - FILEFLAGS 0x1L - #else - FILEFLAGS 0x0L - #endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L - BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "CompanyName", "\0" - VALUE "FileDescription", "VisVim DLL\0" - VALUE "FileVersion", "1, 1, 0, 1\0" - VALUE "InternalName", "VisVim\0" - VALUE "LegalCopyright", "Copyright (C) 1998\0" - VALUE "OriginalFilename", "VisVim.DLL\0" - VALUE "ProductName", "VisVim Dynamic Link Library\0" - VALUE "ProductVersion", "1, 1, 0, 1\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END - END - - #endif // !_MAC - - - ///////////////////////////////////////////////////////////////////////////// - // - // Dialog - // - - IDD_ADDINMAIN DIALOG DISCARDABLE 0, 0, 178, 124 - STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU - CAPTION "Vim Add-In 1.4" - FONT 8, "MS Sans Serif" - BEGIN - CONTROL "&Open file in DevStudio editor simultaneously", - IDC_DEVSTUDIO_EDITOR,"Button",BS_AUTOCHECKBOX | WS_GROUP | - WS_TABSTOP,7,7,153,10 - CONTROL "Open files in new tabs", - IDC_NEW_TABS,"Button",BS_AUTOCHECKBOX | WS_GROUP | - WS_TABSTOP,7,21,153,10 - GROUPBOX "Current directory",IDC_STATIC,7,35,164,58,WS_GROUP - CONTROL "Set to &source file path",IDC_CD_SOURCE_PATH,"Button", - BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,17,49,85,10 - CONTROL "Set to &parent directory of source file path", - IDC_CD_SOURCE_PARENT,"Button",BS_AUTORADIOBUTTON,17,63, - 143,10 - CONTROL "Do ¬ change",IDC_CD_NONE,"Button",BS_AUTORADIOBUTTON, - 17,78,63,10 - DEFPUSHBUTTON "&Ok",IDOK,7,102,74,14,WS_GROUP - PUSHBUTTON "&Cancel",IDCANCEL,97,102,74,14,WS_GROUP - END - - - ///////////////////////////////////////////////////////////////////////////// - // - // DESIGNINFO - // - - #ifdef APSTUDIO_INVOKED - GUIDELINES DESIGNINFO DISCARDABLE - BEGIN - IDD_ADDINMAIN, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 171 - TOPMARGIN, 7 - BOTTOMMARGIN, 117 - END - END - #endif // APSTUDIO_INVOKED - - - ///////////////////////////////////////////////////////////////////////////// - // - // String Table - // - - STRINGTABLE DISCARDABLE - BEGIN - IDS_VISVIM_LONGNAME "Vim Developer Studio Add-In" - IDS_VISVIM_DESCRIPTION "Allows integration of Vim as the text editor in Developer Studio." - IDS_CMD_DIALOG "\nVim Add-In Dialog\nDisplays the options dialog box of the Vim Add-In\nVim Add-In Dialog" - IDS_CMD_ENABLE "\nEnable Vim Add-In\nEnables Vim as Visual Studio editor\nEnable Vim Add-In" - IDS_CMD_DISABLE "\nDisable Vim Add-In\nDisables Vim as Visual Studio editor\nDisable Vim Add-In" - IDS_CMD_TOGGLE "\nToggle Vim Add-In State\nToggles the enable state of the Vim Add-In\nToggle Vim Add-In State" - IDS_CMD_LOAD "\nVim Add-In Load Document\nLoads the current document in Vim\nVim Add-In Load Document" - END - - #endif // Englisch (USA) resources - ///////////////////////////////////////////////////////////////////////////// - - - - #ifndef APSTUDIO_INVOKED - ///////////////////////////////////////////////////////////////////////////// - // - // Generated from the TEXTINCLUDE 3 resource. - // - #define _AFX_NO_SPLITTER_RESOURCES - #define _AFX_NO_OLE_RESOURCES - #define _AFX_NO_TRACKER_RESOURCES - #define _AFX_NO_PROPERTY_RESOURCES - - #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) - #ifdef _WIN32 - LANGUAGE 9, 1 - #pragma code_page(1252) - #endif - #include "afxres.rc" // Standard components - #endif - 1 TYPELIB "VisVim.tlb" - - ///////////////////////////////////////////////////////////////////////////// - #endif // not APSTUDIO_INVOKED - --- 0 ---- *** ../vim-9.0.0697/src/VisVim/VsReadMe.txt 2010-05-15 12:04:08.000000000 +0100 --- src/VisVim/VsReadMe.txt 1970-01-01 00:00:00.000000000 +0000 *************** *** 1,91 **** - ======================================================================== - DEVELOPER STUDIO ADD-IN : VisVim - ======================================================================== - - - The Add-in Wizard has created this VisVim DLL for you. This DLL not only - demonstrates the basics of creating a Developer Studio add-in, but it is also - a starting point for writing your own add-in. - - An add-in mainly does two things. - (1) It adds commands to Developer Studio, which can then be tied - to keystrokes or toolbar buttons by the user or programmatically - by the add-in. - (2) It responds to events fired by Developer Studio. - In both cases, the add-in code has access to the full Developer Studio - Automation Object Model, and may manipulate those objects to affect the - behavior of Developer Studio. - - This file contains a summary of what you will find in each of the files that - make up your VisVim DLL. - - - VisVim.h - This is the main header file for the DLL. It declares the - CVisVimApp class. - - VisVim.cpp - This is the main DLL source file. It contains the class CVisVimApp. - It also contains the OLE entry points required of inproc servers. - - VisVim.odl - This file contains the Object Description Language source code for the - type library of your DLL. - - VisVim.rc - This is a listing of all of the Microsoft Windows resources that the - program uses. It includes the sample toolbar bitmap that is stored - in the RES subdirectory. This file can be directly edited in Microsoft - Developer Studio. - - res\VisVim.rc2 - This file contains resources that are not edited by Microsoft - Developer Studio. You should place all resources not - editable by the resource editor in this file. - - VisVim.def - This file contains information about the DLL that must be - provided to run with Microsoft Windows. It defines parameters - such as the name and description of the DLL. It also exports - functions from the DLL. - - VisVim.clw - This file contains information used by ClassWizard to edit existing - classes or add new classes. ClassWizard also uses this file to store - information needed to create and edit message maps and dialog data - maps and to create prototype member functions. - - ///////////////////////////////////////////////////////////////////////////// - Add-in-specific files: - - DSAddIn.cpp, DSAddIn.h - These files contain the CDSAddIn class, which implements the - IDSAddIn interface. This interface contains handlers - for connecting and disconnecting the add-in. - - Commands.cpp, Commands.h - These files contain the CCommands class, which implements your - command dispatch interface. This interface contains one method - for each command you add to Developer Studio. - These files also contain stub implementations of handlers for all events - fired by the Developer Studio Application object. - - OleAut.cpp - These files contain a general OLE automation class used to communicate - with vim. - - Reg.cpp - These files contain functions to access the registry. - - - ///////////////////////////////////////////////////////////////////////////// - Other standard files: - - StdAfx.h, StdAfx.cpp - These files are used to build a precompiled header (PCH) file - named VisVim.pch and a precompiled types file named StdAfx.obj. - - Resource.h - This is the standard header file, which defines new resource IDs. - Microsoft Developer Studio reads and updates this file. - --- 0 ---- *** ../vim-9.0.0697/uninstall.txt 2019-09-27 11:57:17.000000000 +0100 --- uninstall.txt 2022-10-08 17:02:06.693722341 +0100 *************** *** 5,11 **** 1. With the GUI uninstaller. This is only available when Vim was installed with the self-installing executable. This has a minimal number of questions. It can delete ! everything that was installed. This also unregisters the VisVim.dll. 2. With uninstall.exe. This removes most installed items, but does not delete the files you --- 5,11 ---- 1. With the GUI uninstaller. This is only available when Vim was installed with the self-installing executable. This has a minimal number of questions. It can delete ! everything that was installed. 2. With uninstall.exe. This removes most installed items, but does not delete the files you *** ../vim-9.0.0697/src/version.c 2022-10-08 16:41:09.379815330 +0100 --- src/version.c 2022-10-08 17:08:00.928950076 +0100 *************** *** 701,702 **** --- 701,704 ---- { /* Add new patch number below this line */ + /**/ + 698, /**/ -- Apologies for taking up the bandwidth with the apology. Anything else I can apologise for ...... er no can't think of anything, sorry about that. Andy Hunt (Member of British Olympic Apology Squad) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///