diff --git a/scintilla/src/EditView.h b/scintilla/src/EditView.h index 1610ae928..3f2a9042f 100644 --- a/scintilla/src/EditView.h +++ b/scintilla/src/EditView.h @@ -12,7 +12,7 @@ namespace Scintilla { #endif -#define NP3_MATCH_BRACE_RECT_SEL_PATCH 1 +#undef NP3_MATCH_BRACE_RECT_SEL_PATCH struct PrintParameters { int magnification; diff --git a/src/Edit.c b/src/Edit.c index 363c03042..c7e5c599f 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -172,11 +172,22 @@ HWND EditCreate(HWND hwndParent) SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_HOME + (SCMOD_SHIFT << 16)),SCI_VCHOMEWRAPEXTEND); SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_END + (SCMOD_SHIFT << 16)),SCI_LINEENDWRAPEXTEND); - // set style + // set indicator styles + SendMessage(hwnd, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_MARK_OCCURANCE, 220); SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_MARK_OCCURANCE, 100); SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_MARK_OCCURANCE, 0xff << ((iMarkOccurrences - 1) << 3)); SendMessage(hwnd, SCI_INDICSETSTYLE, INDIC_NP3_MARK_OCCURANCE, INDIC_ROUNDBOX); + SendMessage(hwnd, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_BAD_BRACE, 220); + SendMessage(hwnd, SCI_INDICSETALPHA,INDIC_NP3_MATCH_BRACE, 120); + SendMessage(hwnd, SCI_INDICSETFORE,INDIC_NP3_MATCH_BRACE, 0xff << (1 << 3)); // overriden by style + SendMessage(hwnd, SCI_INDICSETSTYLE,INDIC_NP3_MATCH_BRACE, INDIC_FULLBOX); + + SendMessage(hwnd, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_BAD_BRACE, 220); + SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_BAD_BRACE, 120); + SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_BAD_BRACE, 0xff ); // overriden by style + SendMessage(hwnd, SCI_INDICSETSTYLE, INDIC_NP3_BAD_BRACE, INDIC_FULLBOX); + // word delimiter handling EditInitWordDelimiter(hwnd); @@ -5251,13 +5262,6 @@ void CompleteWord(HWND hwnd, BOOL autoInsert) // void EditMatchBrace(HWND hwnd) { - // set style - //SendMessage(hwnd, SCI_INDICSETALPHA, 1, 100); - //SendMessage(hwnd, SCI_INDICSETFORE, 1, 0xff << ((iMarkOccurrences - 1) << 3)); - //SendMessage(hwnd, SCI_INDICSETSTYLE, 1, INDIC_ROUNDBOX); - //SendMessage(hwnd, SCI_BRACEHIGHLIGHTINDICATOR, 1, 0); - //SendMessage(hwnd, SCI_BRACEBADLIGHTINDICATOR, 1, 0); - int iPos; char c; @@ -5276,10 +5280,12 @@ void EditMatchBrace(HWND hwnd) int col1 = (int)SendMessage(hwnd, SCI_GETCOLUMN, iPos, 0); int col2 = (int)SendMessage(hwnd, SCI_GETCOLUMN, iBrace2, 0); SendMessage(hwnd, SCI_BRACEHIGHLIGHT, iPos, iBrace2); + SendMessage(hwnd, SCI_BRACEHIGHLIGHTINDICATOR, 1, INDIC_NP3_MATCH_BRACE); SendMessage(hwnd, SCI_SETHIGHLIGHTGUIDE, min(col1, col2), 0); } else { SendMessage(hwnd, SCI_BRACEBADLIGHT, iPos, 0); + SendMessage(hwnd, SCI_BRACEBADLIGHTINDICATOR, 1, INDIC_NP3_BAD_BRACE); SendMessage(hwnd, SCI_SETHIGHLIGHTGUIDE, 0, 0); } } @@ -5293,15 +5299,18 @@ void EditMatchBrace(HWND hwnd) int col1 = (int)SendMessage(hwnd, SCI_GETCOLUMN, iPos, 0); int col2 = (int)SendMessage(hwnd, SCI_GETCOLUMN, iBrace2, 0); SendMessage(hwnd, SCI_BRACEHIGHLIGHT, iPos, iBrace2); + SendMessage(hwnd, SCI_BRACEHIGHLIGHTINDICATOR, 1, INDIC_NP3_MATCH_BRACE); SendMessage(hwnd, SCI_SETHIGHLIGHTGUIDE, min(col1, col2), 0); } else { SendMessage(hwnd, SCI_BRACEBADLIGHT, iPos, 0); + SendMessage(hwnd, SCI_BRACEBADLIGHTINDICATOR, 1, INDIC_NP3_BAD_BRACE); SendMessage(hwnd, SCI_SETHIGHLIGHTGUIDE, 0, 0); } } else { SendMessage(hwnd, SCI_BRACEHIGHLIGHT, (WPARAM)-1, (LPARAM)-1); + SendMessage(hwnd, SCI_BRACEHIGHLIGHTINDICATOR, 1, INDIC_NP3_MATCH_BRACE); SendMessage(hwnd, SCI_SETHIGHLIGHTGUIDE, 0, 0); } } diff --git a/src/Edit.h b/src/Edit.h index a9b7ddaa6..094691bc9 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -47,6 +47,7 @@ typedef struct _editfindreplace #define INDIC_NP3_MARK_OCCURANCE 1 #define INDIC_NP3_MATCH_BRACE 2 +#define INDIC_NP3_BAD_BRACE 3 HWND EditCreate(HWND); void EditInitWordDelimiter(HWND); diff --git a/src/Styles.c b/src/Styles.c index ecf79093e..8f756612f 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -2998,8 +2998,20 @@ void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew) SendMessage(hwnd,SCI_STYLECLEARALL,0,0); Style_SetStyles(hwnd,lexDefault.Styles[1+iIdx].iStyle,lexDefault.Styles[1+iIdx].szValue); // linenumber - Style_SetStyles(hwnd,lexDefault.Styles[2+iIdx].iStyle,lexDefault.Styles[2+iIdx].szValue); // brace light - Style_SetStyles(hwnd,lexDefault.Styles[3+iIdx].iStyle,lexDefault.Styles[3+iIdx].szValue); // brace bad + + //~Style_SetStyles(hwnd,lexDefault.Styles[2+iIdx].iStyle,lexDefault.Styles[2+iIdx].szValue); // brace light + if (Style_StrGetColor(TRUE, lexDefault.Styles[2 + iIdx].szValue, &iValue)) + SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_MATCH_BRACE, iValue); + if (Style_StrGetAlpha(lexDefault.Styles[2 + iIdx].szValue, &iValue)) + SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_MATCH_BRACE, iValue); + + //~Style_SetStyles(hwnd,lexDefault.Styles[3+iIdx].iStyle,lexDefault.Styles[3+iIdx].szValue); // brace bad + if (Style_StrGetColor(TRUE, lexDefault.Styles[3 + iIdx].szValue, &iValue)) + SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_BAD_BRACE, iValue); + if (Style_StrGetAlpha(lexDefault.Styles[3 + iIdx].szValue, &iValue)) + SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_BAD_BRACE, iValue); + + if (pLexNew != &lexANSI) Style_SetStyles(hwnd,lexDefault.Styles[4+iIdx].iStyle,lexDefault.Styles[4+iIdx].szValue); // control char Style_SetStyles(hwnd,lexDefault.Styles[5+iIdx].iStyle,lexDefault.Styles[5+iIdx].szValue); // indent guide @@ -3923,6 +3935,30 @@ BOOL Style_StrGetColor(BOOL bFore,LPCWSTR lpszStyle,int *rgb) } +//============================================================================= +// +// Style_StrGetAlpha() +// +BOOL Style_StrGetAlpha(LPCWSTR lpszStyle, int *i) { + WCHAR tch[256] = { L'\0' }; + WCHAR *p = StrStrI(lpszStyle, L"alpha:"); + if (p) { + StringCchCopy(tch, COUNTOF(tch), p + CSTRLEN(L"alpha:")); + p = StrChr(tch, L';'); + if (p) + *p = L'\0'; + TrimString(tch); + int iValue = 0; + int itok = swscanf_s(tch, L"%i", &iValue); + if (itok == 1) { + *i = min(max(SC_ALPHA_TRANSPARENT, iValue), SC_ALPHA_OPAQUE); + return TRUE; + } + } + return FALSE; +} + + //============================================================================= // // Style_StrGetCase() @@ -3951,33 +3987,6 @@ BOOL Style_StrGetCase(LPCWSTR lpszStyle,int *i) } -//============================================================================= -// -// Style_StrGetAlpha() -// -BOOL Style_StrGetAlpha(LPCWSTR lpszStyle,int *i) -{ - WCHAR tch[256] = { L'\0' }; - WCHAR *p = StrStrI(lpszStyle, L"alpha:"); - if (p) - { - StringCchCopy(tch,COUNTOF(tch),p + CSTRLEN(L"alpha:")); - p = StrChr(tch, L';'); - if (p) - *p = L'\0'; - TrimString(tch); - int iValue = 0; - int itok = swscanf_s(tch,L"%i",&iValue); - if (itok == 1) - { - *i = min(max(SC_ALPHA_TRANSPARENT,iValue),SC_ALPHA_OPAQUE); - return TRUE; - } - } - return FALSE; -} - - //============================================================================= // // Style_SelectFont()