OSDN Git Service

Support incremental and normal search on recent versions of Eclipse
authorKazuhiro Fujieda <fujieda@users.sourceforge.jp>
Sun, 26 Jun 2011 07:47:53 +0000 (16:47 +0900)
committerKazuhiro Fujieda <fujieda@users.sourceforge.jp>
Sun, 26 Jun 2011 15:40:36 +0000 (00:40 +0900)
and forward incremental search on Notepad++. This change is derived
from work by Harold Bamford <hbamford@users.sourceforge.net>.

xkeymacsdll/Commands.cpp
xkeymacsdll/Commands.h
xkeymacsdll/Utils.cpp
xkeymacsdll/Utils.h

index 7a843c2..b96ab06 100644 (file)
@@ -392,6 +392,16 @@ void CCommands::AdSdKduSuAu(BYTE bVk1)
        CXkeymacsDll::SetModifierState(before, SHIFT | META);\r
 }\r
 \r
+void CCommands::AdCdKduCuAu(BYTE bVk1)\r
+{\r
+       UINT before = CXkeymacsDll::GetModifierState();\r
+       CXkeymacsDll::SetModifierState(CONTROL | META, before);\r
+\r
+       CXkeymacsDll::Kdu(bVk1, m_nNumericArgument);\r
+\r
+       CXkeymacsDll::SetModifierState(before, CONTROL | META);\r
+}\r
+\r
 // C-a: Home\r
 int CCommands::BeginningOfLine()\r
 {\r
@@ -2373,7 +2383,16 @@ int CCommands::Search(SEARCH_DIRECTION direction)
                }\r
 \r
                m_SearchDirection = direction;\r
-               OpenFindDialog();\r
+               if (CUtils::IsNotepadPP()) {\r
+                       if (direction == FORWARD) // only forward incremental search supported\r
+                               AdCdKduCuAu('I');\r
+               } else if (CUtils::IsEclipse()) {\r
+                       if (direction == FORWARD)\r
+                               CdKduCu('J');\r
+                       else\r
+                               CdSdKduSuCu('J');\r
+               } else\r
+                       OpenFindDialog();\r
        } else {\r
 //             CUtils::Log(_T("Find Dialog is opened."));\r
 \r
index 042b319..90ba878 100644 (file)
@@ -233,6 +233,7 @@ private:
        static void AdSdKduSuAu(BYTE bVk1);\r
        static void AdKduAu(BYTE bVk1, BYTE bVk2 = 0, BYTE bVk3 = 0);\r
        static void CdKduCu(BYTE bVk1, BYTE bVk2 = 0);\r
+       static void AdCdKduCuAu(BYTE bVk);\r
        static void Kdu(BYTE bVk1, BYTE bVk2 = 0, BYTE bVk3 = 0, BYTE bVk4 = 0);\r
        static DWORD m_nNumericArgument;\r
        static void Su();\r
index 2425918..f3e86ea 100644 (file)
@@ -140,6 +140,11 @@ BOOL CUtils::IsNotepad()
        return !_tcsicmp(m_szApplicationName, _T("notepad.exe"));\r
 }\r
 \r
+BOOL CUtils::IsNotepadPP()\r
+{\r
+       return !_tcsicmp(m_szApplicationName, _T("notepad++.exe"));\r
+}\r
+\r
 BOOL CUtils::IsOpera()\r
 {\r
        return !_tcsicmp(m_szApplicationName, _T("opera.exe"));\r
@@ -793,6 +798,9 @@ BOOL CUtils::IsVisualBasicEditor()
 \r
 BOOL CUtils::IsEclipse()\r
 {\r
+       if (!_tcsicmp(m_szApplicationName, _T("eclipse.exe")))\r
+               return TRUE;\r
+\r
        TCHAR szWindowText[WINDOW_TEXT_LENGTH] = {'\0'};\r
        GetWindowText(GetForegroundWindow(), szWindowText, sizeof(szWindowText));\r
 \r
index 73b76d8..754fbe8 100644 (file)
@@ -100,6 +100,7 @@ public:
        static BOOL IsOutlook();\r
        static BOOL IsOpera();\r
        static BOOL IsNotepad();\r
+       static BOOL IsNotepadPP();\r
        static BOOL IsNetscape();\r
        static BOOL IsMuleForWin32();\r
        static BOOL IsMozilla();\r