diff --git a/src/Edit.c b/src/Edit.c
index aa212488c..54102e1c4 100644
--- a/src/Edit.c
+++ b/src/Edit.c
@@ -120,6 +120,7 @@ extern bool g_bZeroBasedColumnIndex;
extern CALLTIPTYPE g_CallTipType;
extern FR_STATES g_FindReplaceMatchFoundState;
+extern bool g_bAutoCinASCIIModeOnly;
#define ANSI_CAHR_BUFFER 258
static char DelimChars[ANSI_CAHR_BUFFER] = { '\0' };
@@ -373,9 +374,9 @@ void EditInitWordDelimiter(HWND hwnd)
}
}
}
+ g_bAutoCinASCIIModeOnly = (AutoCompleteWordASCII[0] != '\0');
-
- // constuct wide char arrays
+ // construct wide char arrays
//MultiByteToWideChar(Encoding_SciCP, 0, DelimChars, -1, W_DelimChars, COUNTOF(W_DelimChars));
//MultiByteToWideChar(Encoding_SciCP, 0, DelimCharsAccel, -1, W_DelimCharsAccel, COUNTOF(W_DelimCharsAccel));
//MultiByteToWideChar(Encoding_SciCP, 0, WhiteSpaceCharsDefault, -1, W_WhiteSpaceCharsDefault, COUNTOF(W_WhiteSpaceCharsDefault));
@@ -6569,13 +6570,8 @@ static const char* __fastcall _strNextLexKeyWord(const char* strg, const char* c
void EditCompleteWord(HWND hwnd, bool autoInsert)
{
UNUSED(hwnd);
-
- // OLD: "_abcdefghijklmnopqrstuvwxyz0123456789"
- char const* ALLOWED_WORD_CHARS = AutoCompleteWordASCII;
-
- if (ALLOWED_WORD_CHARS[0] == '\0') {
- ALLOWED_WORD_CHARS = g_bAccelWordNavigation ? WordCharsAccelerated : WordCharsDefault;
- }
+ char const* const pchAllowdWordChars = (g_bAutoCinASCIIModeOnly ? AutoCompleteWordASCII :
+ (g_bAccelWordNavigation ? WordCharsAccelerated : WordCharsDefault));
DocPos const iCurrentPos = SciCall_GetCurrentPos();
DocLn const iLine = SciCall_LineFromPosition(iCurrentPos);
@@ -6587,7 +6583,7 @@ void EditCompleteWord(HWND hwnd, bool autoInsert)
bool bWordAllNumbers = true;
DocPos iStartWordPos = iCurrentLinePos;
- while (iStartWordPos > 0 && StrChrIA(ALLOWED_WORD_CHARS, pLine[iStartWordPos - 1])) {
+ while (iStartWordPos > 0 && StrChrIA(pchAllowdWordChars, pLine[iStartWordPos - 1])) {
iStartWordPos--;
if (pLine[iStartWordPos] < '0' || pLine[iStartWordPos] > '9') {
bWordAllNumbers = false;
@@ -6623,7 +6619,7 @@ void EditCompleteWord(HWND hwnd, bool autoInsert)
if (iPosFind != (iCurrentPos - iRootLen))
{
- while ((wordEnd < iDocLen) && StrChrIA(ALLOWED_WORD_CHARS, SciCall_GetCharAt(wordEnd))) { ++wordEnd; }
+ while ((wordEnd < iDocLen) && StrChrIA(pchAllowdWordChars, SciCall_GetCharAt(wordEnd))) { ++wordEnd; }
DocPos const wordLength = (wordEnd - iPosFind);
if (wordLength > iRootLen)
diff --git a/src/Notepad3.c b/src/Notepad3.c
index a201e646d..f00972b76 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -249,6 +249,7 @@ int iUpdateDelayMarkAllCoccurrences;
int iCurrentLineHorizontalSlop = 0;
int iCurrentLineVerticalSlop = 0;
bool g_bChasingDocTail = false;
+bool g_bAutoCinASCIIModeOnly = false;
CALLTIPTYPE g_CallTipType = CT_NONE;
@@ -6157,6 +6158,28 @@ static void __fastcall _HandleTinyExpr()
}
+//=============================================================================
+//
+// _IsInlineIMEAsianLngMode()
+//
+static bool __fastcall _IsInlineIMEAsianLngMode()
+{
+ bool result = false;
+ if (g_IMEInteraction == SC_IME_INLINE) {
+ HIMC const himc = ImmGetContext(g_hwndEdit);
+ if (himc) {
+ if (ImmGetOpenStatus(himc)) {
+ DWORD dwConversion = IME_CMODE_ALPHANUMERIC, dwSentence = 0;
+ if (ImmGetConversionStatus(himc, &dwConversion, &dwSentence)) {
+ result = ((dwConversion & IME_CMODE_LANGUAGE) != IME_CMODE_ALPHANUMERIC);
+ }
+ }
+ ImmReleaseContext(g_hwndEdit, himc);
+ }
+ }
+ return result;
+}
+
//=============================================================================
//
// MsgNotify() - Handles WM_NOTIFY
@@ -6216,7 +6239,6 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
switch(pnmh->idFrom)
{
case IDC_EDIT:
-
switch (pnmh->code)
{
case SCN_MODIFIED:
@@ -6331,12 +6353,13 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
case SCN_CHARADDED:
{
- if (g_CallTipType != CT_NONE) {
+ int const ich = scn->ch;
+
+ if (g_CallTipType != CT_NONE) {
SciCall_CallTipCancel();
g_CallTipType = CT_NONE;
}
- int const ich = scn->ch;
switch (ich) {
case '\r':
case '\n':
@@ -6352,8 +6375,12 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
break;
}
- if ((g_bAutoCompleteWords || g_bAutoCLexerKeyWords) && !SciCall_AutoCActive()) {
- EditCompleteWord(g_hwndEdit, false);
+ if ((g_bAutoCompleteWords || g_bAutoCLexerKeyWords)) {
+ if (g_bAutoCinASCIIModeOnly && ((ich > 0x7F) || _IsInlineIMEAsianLngMode())) {
+ SciCall_AutoCCancel();
+ return 0LL;
+ }
+ if (!SciCall_AutoCActive()) { EditCompleteWord(g_hwndEdit, false); }
}
}
break;
diff --git a/src/Notepad3.vcxproj.filters b/src/Notepad3.vcxproj.filters
index 3678edd75..e5fefc1ef 100644
--- a/src/Notepad3.vcxproj.filters
+++ b/src/Notepad3.vcxproj.filters
@@ -13,37 +13,37 @@
{4FC737F1-C7A5-4376-A066-2A32D752A2FF}
cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
-
- {aad339da-f291-4358-9ab1-a0fdee012ac6}
-
{e817f780-f742-48b4-bc9c-2ab762ced6bc}
-
- {91d2fb70-4067-4692-b746-9a02db63f461}
-
-
- {8d78b8ca-ff0f-46cb-8da2-83c4bde259b9}
-
-
- {dbeb3dd1-1f65-45ec-a526-dc0e84e4c350}
-
-
- {1d7878c8-36e3-4bae-91d9-fda61101aa81}
-
-
- {fd5165c7-e622-408b-95f0-666d494aa8f1}
-
-
- {1de8e161-7393-4043-be9d-7bd2d0cb02df}
-
-
- {a6270a0b-5c38-4e68-b38c-5795ccb57302}
-
-
+
{82f9cc2d-9173-4af4-8967-5fd2e5f8aef7}
-
+
+ {aad339da-f291-4358-9ab1-a0fdee012ac6}
+
+
+ {a6270a0b-5c38-4e68-b38c-5795ccb57302}
+
+
+ {91d2fb70-4067-4692-b746-9a02db63f461}
+
+
+ {8d78b8ca-ff0f-46cb-8da2-83c4bde259b9}
+
+
+ {dbeb3dd1-1f65-45ec-a526-dc0e84e4c350}
+
+
+ {1d7878c8-36e3-4bae-91d9-fda61101aa81}
+
+
+ {fd5165c7-e622-408b-95f0-666d494aa8f1}
+
+
+ {1de8e161-7393-4043-be9d-7bd2d0cb02df}
+
+
{24604833-5c1e-421c-813a-34c6a48bf6f9}
@@ -70,184 +70,184 @@
Source Files
- Crypto
+ Source Files\Crypto
- Crypto
+ Source Files\Crypto
- Crypto
+ Source Files\Crypto
- Crypto
+ Source Files\Crypto
Source Files
- CED\util\languages
+ Source Files\CED\util\languages
- CED\util\encodings
+ Source Files\CED\util\encodings
- CED\compact_enc_det
+ Source Files\CED\compact_enc_det
- CED\compact_enc_det
+ Source Files\CED\compact_enc_det
Source Files
- tinyexpr
+ Source Files\tinyexpr
- ChooseFont
+ Source Files\ChooseFont
- ChooseFont
+ Source Files\ChooseFont
- ChooseFont
+ Source Files\ChooseFont
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
@@ -279,16 +279,16 @@
Header Files
- Crypto
+ Source Files\Crypto
- Crypto
+ Source Files\Crypto
- Crypto
+ Source Files\Crypto
- Crypto
+ Source Files\Crypto
Resource Files
@@ -300,85 +300,85 @@
Header Files
- CED\util
+ Source Files\CED\util
- CED\util
+ Source Files\CED\util
- CED\util
+ Source Files\CED\util
- CED\util
+ Source Files\CED\util
- CED\util
+ Source Files\CED\util
- CED\util
+ Source Files\CED\util
- CED\util
+ Source Files\CED\util
- CED\util\languages
+ Source Files\CED\util\languages
- CED\util\languages
+ Source Files\CED\util\languages
- CED\util\encodings
+ Source Files\CED\util\encodings
- CED\util\encodings
+ Source Files\CED\util\encodings
- CED\compact_enc_det
+ Source Files\CED\compact_enc_det
- CED\compact_enc_det
+ Source Files\CED\compact_enc_det
- CED\compact_enc_det
+ Source Files\CED\compact_enc_det
- CED\compact_enc_det
+ Source Files\CED\compact_enc_det
Header Files
- tinyexpr
+ Source Files\tinyexpr
- ChooseFont
+ Source Files\ChooseFont
- ChooseFont
+ Source Files\ChooseFont
- ChooseFont
+ Source Files\ChooseFont
- StyleLexers
+ Source Files\StyleLexers
- StyleLexers
+ Source Files\StyleLexers
- uthash
+ Source Files\uthash
- uthash
+ Source Files\uthash
- uthash
+ Source Files\uthash
- uthash
+ Source Files\uthash
- uthash
+ Source Files\uthash