+ fix: Auto-Completion & IME - usage of limited AC character-set

This commit is contained in:
Rainer Kottenhoff 2018-09-20 14:09:13 +02:00
parent 7298e92937
commit fa73c5686b
4 changed files with 11 additions and 8 deletions

View File

@ -97,6 +97,7 @@ extern bool bForceLoadASCIIasUTF8;
extern bool bLoadNFOasOEM;
extern bool bNoEncodingTags;
extern bool g_bUseLimitedAutoCCharSet;
extern bool g_bIsCJKInputCodePage;
extern bool g_bAutoCompleteWords;
extern bool g_bAutoCLexerKeyWords;
@ -364,10 +365,11 @@ void EditInitWordDelimiter(HWND hwnd)
IniGetString(L"Settings2", L"AutoCompleteWordCharSet", L"", buffer, COUNTOF(buffer));
if (StringCchLen(buffer, COUNTOF(buffer)) > 0)
{
g_bUseLimitedAutoCCharSet = true;
WideCharToMultiByteStrg(Encoding_SciCP, buffer, AutoCompleteWordCharSet);
g_bUseLimitedAutoCCharSet = true;
} else {
WideCharToMultiByteStrg(Encoding_SciCP, W_AUTOC_WORD_ANSI1252, AutoCompleteWordCharSet);
g_bUseLimitedAutoCCharSet = false;
}
// construct wide char arrays
@ -375,7 +377,6 @@ void EditInitWordDelimiter(HWND hwnd)
//MultiByteToWideChar(Encoding_SciCP, 0, DelimCharsAccel, -1, W_DelimCharsAccel, COUNTOF(W_DelimCharsAccel));
//MultiByteToWideChar(Encoding_SciCP, 0, WhiteSpaceCharsDefault, -1, W_WhiteSpaceCharsDefault, COUNTOF(W_WhiteSpaceCharsDefault));
//MultiByteToWideChar(Encoding_SciCP, 0, WhiteSpaceCharsAccelerated, -1, W_WhiteSpaceCharsAccelerated, COUNTOF(W_WhiteSpaceCharsAccelerated));
}
@ -6570,8 +6571,9 @@ void EditCompleteWord(HWND hwnd, bool autoInsert)
{
UNUSED(hwnd);
char const* const pchAllowdWordChars = (g_bUseLimitedAutoCCharSet ? AutoCompleteWordCharSet :
(g_bAccelWordNavigation ? WordCharsAccelerated : WordCharsDefault));
char const* const pchAllowdWordChars = ((g_bIsCJKInputCodePage || g_bUseLimitedAutoCCharSet) ?
AutoCompleteWordCharSet :
(g_bAccelWordNavigation ? WordCharsAccelerated : WordCharsDefault));
DocPos const iCurrentPos = SciCall_GetCurrentPos();
DocLn const iLine = SciCall_LineFromPosition(iCurrentPos);

View File

@ -49,7 +49,7 @@ int g_DOSEncoding = CPI_NONE;
bool g_bForceCompEncDetection = false;
extern HMODULE g_hLngResContainer;
extern bool g_bUseLimitedAutoCCharSet;
extern bool g_bIsCJKInputCodePage;
// ============================================================================
@ -136,7 +136,7 @@ void Encoding_InitDefaults()
assert(g_Encodings[CPI_ANSI_DEFAULT].uCodePage == ansiInputCP);
StringCchPrintf(wchANSI, COUNTOF(wchANSI), L" (CP-%u)", ansiInputCP);
g_bUseLimitedAutoCCharSet = IsDBCSCodePage(Scintilla_InputCodePage());
g_bIsCJKInputCodePage = IsDBCSCodePage(Scintilla_InputCodePage());
for (int i = CPI_UTF7 + 1; i < Encoding_CountOf(); ++i) {
if (Encoding_IsValid(i) && (g_Encodings[i].uCodePage == g_Encodings[CPI_ANSI_DEFAULT].uCodePage)) {

View File

@ -258,6 +258,7 @@ int iCurrentLineHorizontalSlop = 0;
int iCurrentLineVerticalSlop = 0;
bool g_bChasingDocTail = false;
bool g_bUseLimitedAutoCCharSet = false;
bool g_bIsCJKInputCodePage = false;
CALLTIPTYPE g_CallTipType = CT_NONE;
@ -1515,7 +1516,7 @@ LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
break;
case WM_INPUTLANGCHANGE:
g_bUseLimitedAutoCCharSet = IsDBCSCodePage(Scintilla_InputCodePage());
g_bIsCJKInputCodePage = IsDBCSCodePage(Scintilla_InputCodePage());
break;
default:

View File

@ -48,7 +48,7 @@ SCLEX_NULL, IDS_LEX_STR_63266, L"2nd Default Text", L"txt; text; wtx; log; asc;
EDITLEXER lexANSI = {
SCLEX_NULL, IDS_LEX_ANSI_ART, L"ANSI Art", L"nfo; diz", L"",
&KeyWords_NULL,{
{ STYLE_DEFAULT, IDS_LEX_STR_63126, L"Default", L"font:Lucida Console; none; size:10.5", L"" },
{ STYLE_DEFAULT, IDS_LEX_STR_63126, L"Default", L"font:Lucida Console; none; size:11", L"" },
{ STYLE_LINENUMBER, IDS_LEX_STD_MARGIN, L"Margins and Line Numbers", L"font:Lucida Console; size:-2", L"" },
{ STYLE_BRACELIGHT, IDS_LEX_STD_BRACE, L"Matching Braces", L"size:+0", L"" },
{ STYLE_BRACEBAD, IDS_LEX_STD_BRACE_FAIL, L"Matching Braces Error", L"size:+0", L"" },