diff --git a/Build/Notepad3.ini b/Build/Notepad3.ini index f00efeb5c..a450789cd 100644 Binary files a/Build/Notepad3.ini and b/Build/Notepad3.ini differ diff --git a/np3portableapp/Notepad3Portable/App/DefaultData/settings/Notepad3.ini b/np3portableapp/Notepad3Portable/App/DefaultData/settings/Notepad3.ini index f00efeb5c..a450789cd 100644 Binary files a/np3portableapp/Notepad3Portable/App/DefaultData/settings/Notepad3.ini and b/np3portableapp/Notepad3Portable/App/DefaultData/settings/Notepad3.ini differ diff --git a/scintilla/win32/ScintillaWin.cxx b/scintilla/win32/ScintillaWin.cxx index 947df67fd..ade29c05f 100644 --- a/scintilla/win32/ScintillaWin.cxx +++ b/scintilla/win32/ScintillaWin.cxx @@ -1183,7 +1183,7 @@ sptr_t ScintillaWin::HandleCompositionInline(uptr_t, sptr_t lParam) { MoveImeCarets(-CurrentPosition() + imeCaretPosDoc); - if (KoreanIME()) { + if (KoreanIME() || imeInteraction == imeInline) { view.imeCaretBlockOverride = true; } } else if (lParam & GCS_RESULTSTR) { diff --git a/src/EncodingCED.cpp b/src/EncodingCED.cpp index 8055477d8..0c989d4f2 100644 --- a/src/EncodingCED.cpp +++ b/src/EncodingCED.cpp @@ -117,7 +117,7 @@ extern "C" { #define ENC_PARSE_NAM_ISO_2022_JP "ISO-2022-jp,iso2022jp," #define ENC_PARSE_NAM_ISO_2022_KR "ISO-2022-kr,iso2022kr,csiso2022kr," #define ENC_PARSE_NAM_X_CHINESE_CNS "x-Chinese-CNS,xchinesecns," -//#define ENC_PARSE_NAM_JOHAB "johab,johab," +#define ENC_PARSE_NAM_JOHAB "johab,johab," //#define ENC_PARSE_NAM_ISO_8859_10 "ISO-8859-10,iso885910,Windows-28600,Windows28600," //#define ENC_PARSE_NAM_BIG5_HKSCS "big5hkscs,cnbig5hkscs,xxbig5hkscs," //============================================================================= @@ -204,8 +204,8 @@ extern "C" NP2ENCODING g_Encodings[] = { /* 076 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 52936, ENC_PARSE_NAM_HZ_GB2312, IDS_ENC_HZ_GB2312, HZ_GB_2312, L"" }, // Chinese Simplified (HZ-GB2312) /* 077 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 50220, ENC_PARSE_NAM_ISO_2022_JP, IDS_ENC_ISO_2022_JP, KDDI_ISO_2022_JP, L"" }, // Japanese (JIS) /* 078 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 50225, ENC_PARSE_NAM_ISO_2022_KR, IDS_ENC_ISO_2022_KR, ISO_2022_KR, L"" }, // Korean (ISO-2022-KR) - /* 079 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 20000, ENC_PARSE_NAM_X_CHINESE_CNS, IDS_ENC_X_CHINESE_CNS, CHINESE_CNS, L"" } // Chinese Traditional (CNS) - ///* 080 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1361, ENC_PARSE_NAM_JOHAB, IDS_ENC_JOHAB, CED_NO_MAPPING, L"" }, // Korean (Johab) + /* 079 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 20000, ENC_PARSE_NAM_X_CHINESE_CNS, IDS_ENC_X_CHINESE_CNS, CHINESE_CNS, L"" }, // Chinese Traditional (CNS) + /* 080 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 1361, ENC_PARSE_NAM_JOHAB, IDS_ENC_JOHAB, CED_NO_MAPPING, L"" } // Korean (Johab) ///* 081 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 28600, ENC_PARSE_NAM_ISO_8859_10, IDS_ENC_ISO_8859_10, ISO_8859_10, L"" }, // Nordic (ISO 8859-10) ///* 082 */{ NCP_EXTERNAL_8BIT | NCP_RECODE, 951, ENC_PARSE_NAM_BIG5_HKSCS, IDS_ENC_BIG5_HKSCS, BIG5_HKSCS, L"" } // Chinese (Hong Kong Supplementary Character Set) diff --git a/src/Helpers.h b/src/Helpers.h index 8e4433d46..a1f67dc2c 100644 --- a/src/Helpers.h +++ b/src/Helpers.h @@ -74,6 +74,9 @@ inline unsigned clampu(unsigned x, unsigned lower, unsigned upper) { return (x < lower) ? lower : ((x > upper) ? upper : x); } +inline unsigned clampul(unsigned long x, unsigned long lower, unsigned long upper) { + return (x < lower) ? lower : ((x > upper) ? upper : x); +} // Is the character an octal digit? inline bool IsDigitA(CHAR ch) { return ((ch >= '0') && (ch <= '9')); } diff --git a/src/Notepad3.c b/src/Notepad3.c index 8537a34fd..a256e3615 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -318,6 +318,7 @@ DWORD dwLastIOError; int g_iDefaultNewFileEncoding; int g_iDefaultCharSet; +int g_IMEInteraction; int g_iEOLMode; int g_iDefaultEOLMode; @@ -1645,6 +1646,7 @@ static void __fastcall _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_SETMODEVENTMASK, (WPARAM)(evtMask1 | evtMask2), 0); SendMessage(hwndEditCtrl, SCI_SETCODEPAGE, (WPARAM)SC_CP_UTF8, 0); // fixed internal UTF-8 + SendMessage(hwndEditCtrl, SCI_SETEOLMODE, SC_EOL_CRLF, 0); SendMessage(hwndEditCtrl, SCI_SETPASTECONVERTENDINGS, true, 0); SendMessage(hwndEditCtrl, SCI_USEPOPUP, false, 0); @@ -1658,7 +1660,7 @@ static void __fastcall _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_SETADDITIONALCARETSVISIBLE, true, 0); SendMessage(hwndEditCtrl, SCI_SETVIRTUALSPACEOPTIONS, SCVS_NONE, 0); SendMessage(hwndEditCtrl, SCI_SETLAYOUTCACHE, SC_CACHE_PAGE, 0); - + // assign command keys SendMessage(hwndEditCtrl, SCI_ASSIGNCMDKEY, (SCK_NEXT + (SCMOD_CTRL << 16)), SCI_PARADOWN); SendMessage(hwndEditCtrl, SCI_ASSIGNCMDKEY, (SCK_PRIOR + (SCMOD_CTRL << 16)), SCI_PARAUP); @@ -1692,10 +1694,10 @@ static void __fastcall _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_SETAUTOMATICFOLD, (WPARAM)(SC_AUTOMATICFOLD_SHOW | SC_AUTOMATICFOLD_CHANGE), 0); // Properties - SendMessage(hwndEditCtrl, SCI_SETCARETSTICKY, SC_CARETSTICKY_OFF, 0); + SendMessage(hwndEditCtrl, SCI_SETCARETSTICKY, (WPARAM)SC_CARETSTICKY_OFF, 0); //SendMessage(hwndEditCtrl,SCI_SETCARETSTICKY,SC_CARETSTICKY_WHITESPACE,0); - SendMessage(hwndEditCtrl, SCI_SETMOUSEDWELLTIME, SC_TIME_FOREVER, 0); // default + SendMessage(hwndEditCtrl, SCI_SETMOUSEDWELLTIME, (WPARAM)SC_TIME_FOREVER, 0); // default //SendMessage(hwndEditCtrl, SCI_SETMOUSEDWELLTIME, (WPARAM)500, 0); @@ -1715,11 +1717,11 @@ static void __fastcall _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_SETENDATLASTLINE, (WPARAM)((bScrollPastEOF) ? 0 : 1), 0); // Tabs - SendMessage(hwndEditCtrl, SCI_SETUSETABS, !g_bTabsAsSpaces, 0); - SendMessage(hwndEditCtrl, SCI_SETTABINDENTS, g_bTabIndents, 0); - SendMessage(hwndEditCtrl, SCI_SETBACKSPACEUNINDENTS, bBackspaceUnindents, 0); - SendMessage(hwndEditCtrl, SCI_SETTABWIDTH, g_iTabWidth, 0); - SendMessage(hwndEditCtrl, SCI_SETINDENT, g_iIndentWidth, 0); + SendMessage(hwndEditCtrl, SCI_SETUSETABS, (WPARAM)!g_bTabsAsSpaces, 0); + SendMessage(hwndEditCtrl, SCI_SETTABINDENTS, (WPARAM)g_bTabIndents, 0); + SendMessage(hwndEditCtrl, SCI_SETBACKSPACEUNINDENTS, (WPARAM)bBackspaceUnindents, 0); + SendMessage(hwndEditCtrl, SCI_SETTABWIDTH, (WPARAM)g_iTabWidth, 0); + SendMessage(hwndEditCtrl, SCI_SETINDENT, (WPARAM)g_iIndentWidth, 0); // Indent Guides Style_SetIndentGuides(hwndEditCtrl, bShowIndentGuides); @@ -1730,18 +1732,21 @@ static void __fastcall _InitializeSciEditCtrl(HWND hwndEditCtrl) // Long Lines if (g_bMarkLongLines) - SendMessage(hwndEditCtrl, SCI_SETEDGEMODE, (iLongLineMode == EDGE_LINE) ? EDGE_LINE : EDGE_BACKGROUND, 0); + SendMessage(hwndEditCtrl, SCI_SETEDGEMODE, (WPARAM)((iLongLineMode == EDGE_LINE) ? EDGE_LINE : EDGE_BACKGROUND), 0); else - SendMessage(hwndEditCtrl, SCI_SETEDGEMODE, EDGE_NONE, 0); + SendMessage(hwndEditCtrl, SCI_SETEDGEMODE, (WPARAM)EDGE_NONE, 0); - SendMessage(hwndEditCtrl, SCI_SETEDGECOLUMN, g_iLongLinesLimit, 0); + SendMessage(hwndEditCtrl, SCI_SETEDGECOLUMN, (WPARAM)g_iLongLinesLimit, 0); // general margin - SendMessage(hwndEditCtrl, SCI_SETMARGINOPTIONS, SC_MARGINOPTION_SUBLINESELECT, 0); + SendMessage(hwndEditCtrl, SCI_SETMARGINOPTIONS, (WPARAM)SC_MARGINOPTION_SUBLINESELECT, 0); // Nonprinting characters - SendMessage(hwndEditCtrl, SCI_SETVIEWWS, (bViewWhiteSpace) ? SCWS_VISIBLEALWAYS : SCWS_INVISIBLE, 0); - SendMessage(hwndEditCtrl, SCI_SETVIEWEOL, bViewEOLs, 0); + SendMessage(hwndEditCtrl, SCI_SETVIEWWS, (WPARAM)(bViewWhiteSpace ? SCWS_VISIBLEALWAYS : SCWS_INVISIBLE), 0); + SendMessage(hwndEditCtrl, SCI_SETVIEWEOL, (WPARAM)bViewEOLs, 0); + + // IME Interaction + SendMessage(hwndEditCtrl, SCI_SETIMEINTERACTION, (WPARAM)(g_IMEInteraction ? SC_IME_INLINE : SC_IME_WINDOWED), 0); // word delimiter handling EditInitWordDelimiter(hwndEditCtrl); @@ -6622,6 +6627,9 @@ void LoadSettings() IniSectionGetString(pIniSection, L"PreferredLanguageLocaleName", L"", g_tchPrefLngLocName, COUNTOF(g_tchPrefLngLocName)); + g_IMEInteraction = IniSectionGetInt(pIniSection, L"IMEInteraction", 0); + g_IMEInteraction = clampi(g_IMEInteraction, 0, 1); + g_bStickyWinPos = IniSectionGetBool(pIniSection, L"StickyWindowPosition", false); IniSectionGetString(pIniSection, L"DefaultExtension", L"txt", g_tchDefaultExtension, COUNTOF(g_tchDefaultExtension)); @@ -6633,8 +6641,11 @@ void LoadSettings() IniSectionGetString(pIniSection, L"FileDlgFilters", L"", g_tchFileDlgFilters, COUNTOF(g_tchFileDlgFilters) - 2); dwFileCheckInverval = IniSectionGetInt(pIniSection, L"FileCheckInverval", 2000); + dwFileCheckInverval = clampul(dwFileCheckInverval, 250, 300000); + dwAutoReloadTimeout = IniSectionGetInt(pIniSection, L"AutoReloadTimeout", 2000); - + dwAutoReloadTimeout = clampul(dwAutoReloadTimeout, 250, 300000); + // deprecated g_iRenderingTechnology = IniSectionGetInt(pIniSection, L"SciDirectWriteTech", -111); if ((g_iRenderingTechnology != -111) && g_bSaveSettings) {