mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge pull request #164 from RaiKoHoff/Mark_Occ
Mark occurrences coloring via "Customize Schemes..."
This commit is contained in:
commit
ecaaf074e5
26
src/Edit.c
26
src/Edit.c
@ -173,22 +173,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 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));
|
||||
// set indicator styles (foreground and alpha maybe overridden by style settings)
|
||||
SendMessage(hwnd, SCI_INDICSETSTYLE, INDIC_NP3_MARK_OCCURANCE, INDIC_ROUNDBOX);
|
||||
SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_MARK_OCCURANCE, RGB(0x00,0x00,0xFF));
|
||||
SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_MARK_OCCURANCE, 100);
|
||||
SendMessage(hwnd, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_MARK_OCCURANCE, 220);
|
||||
|
||||
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_INDICSETSTYLE, INDIC_NP3_MATCH_BRACE, INDIC_FULLBOX);
|
||||
SendMessage(hwnd, SCI_INDICSETFORE,INDIC_NP3_MATCH_BRACE, RGB(0x00, 0xFF, 0x00));
|
||||
SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_MATCH_BRACE, 120);
|
||||
SendMessage(hwnd, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_MATCH_BRACE, 220);
|
||||
|
||||
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);
|
||||
|
||||
SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_BAD_BRACE, RGB(0xFF, 0x00, 0x00));
|
||||
SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_BAD_BRACE, 120);
|
||||
SendMessage(hwnd, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_BAD_BRACE, 220);
|
||||
|
||||
|
||||
// word delimiter handling
|
||||
EditInitWordDelimiter(hwnd);
|
||||
@ -5261,7 +5261,7 @@ void EditMarkAll(HWND hwnd, BOOL bMarkOccurrencesMatchCase, BOOL bMarkOccurrence
|
||||
{
|
||||
iMarkOccurrencesCount = -1; // -1 !
|
||||
|
||||
if (!iMarkOccurrences) { // feature is off
|
||||
if (iMarkOccurrences == 0) { // feature is off
|
||||
UpdateStatusbar();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2306,14 +2306,7 @@ void MsgInitMenu(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
CheckCmd(hmenu,IDM_VIEW_AUTOCOMPLETEWORDS,bAutoCompleteWords);
|
||||
CheckCmd(hmenu,IDM_VIEW_ACCELWORDNAV,bAccelWordNavigation);
|
||||
|
||||
switch (iMarkOccurrences)
|
||||
{
|
||||
case 0: i = IDM_VIEW_MARKOCCURRENCES_OFF; break;
|
||||
case 3: i = IDM_VIEW_MARKOCCURRENCES_BLUE; break;
|
||||
case 2: i = IDM_VIEW_MARKOCCURRENCES_GREEN; break;
|
||||
case 1: i = IDM_VIEW_MARKOCCURRENCES_RED; break;
|
||||
}
|
||||
CheckMenuRadioItem(hmenu,IDM_VIEW_MARKOCCURRENCES_OFF,IDM_VIEW_MARKOCCURRENCES_RED,i,MF_BYCOMMAND);
|
||||
CheckCmd(hmenu, IDM_VIEW_MARKOCCURRENCES_ONOFF, iMarkOccurrences != 0);
|
||||
CheckCmd(hmenu,IDM_VIEW_MARKOCCURRENCES_CASE,bMarkOccurrencesMatchCase);
|
||||
CheckCmd(hmenu,IDM_VIEW_MARKOCCURRENCES_WORD,bMarkOccurrencesMatchWords);
|
||||
EnableCmd(hmenu,IDM_VIEW_MARKOCCURRENCES_CASE,iMarkOccurrences != 0);
|
||||
@ -4125,30 +4118,16 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam)
|
||||
EditMarkAll(hwndEdit, bMarkOccurrencesMatchCase, bMarkOccurrencesMatchWords);
|
||||
break;
|
||||
|
||||
case IDM_VIEW_MARKOCCURRENCES_OFF:
|
||||
iMarkOccurrences = 0;
|
||||
// clear all marks
|
||||
SendMessage(hwndEdit, SCI_SETINDICATORCURRENT, INDIC_NP3_MARK_OCCURANCE, 0);
|
||||
SendMessage(hwndEdit, SCI_INDICATORCLEARRANGE, 0, (int)SendMessage(hwndEdit,SCI_GETLENGTH,0,0));
|
||||
iMarkOccurrencesCount = -1;
|
||||
break;
|
||||
|
||||
case IDM_VIEW_MARKOCCURRENCES_RED:
|
||||
iMarkOccurrences = 1;
|
||||
SendMessage(hwndEdit, SCI_INDICSETFORE, INDIC_NP3_MARK_OCCURANCE, 0xff << ((iMarkOccurrences - 1) << 3));
|
||||
EditMarkAll(hwndEdit, bMarkOccurrencesMatchCase, bMarkOccurrencesMatchWords);
|
||||
break;
|
||||
|
||||
case IDM_VIEW_MARKOCCURRENCES_GREEN:
|
||||
iMarkOccurrences = 2;
|
||||
SendMessage(hwndEdit, SCI_INDICSETFORE, INDIC_NP3_MARK_OCCURANCE, 0xff << ((iMarkOccurrences - 1) << 3));
|
||||
EditMarkAll(hwndEdit, bMarkOccurrencesMatchCase, bMarkOccurrencesMatchWords);
|
||||
break;
|
||||
|
||||
case IDM_VIEW_MARKOCCURRENCES_BLUE:
|
||||
iMarkOccurrences = 3;
|
||||
SendMessage(hwndEdit, SCI_INDICSETFORE, INDIC_NP3_MARK_OCCURANCE, 0xff << ((iMarkOccurrences - 1) << 3));
|
||||
EditMarkAll(hwndEdit, bMarkOccurrencesMatchCase, bMarkOccurrencesMatchWords);
|
||||
case IDM_VIEW_MARKOCCURRENCES_ONOFF:
|
||||
iMarkOccurrences = (iMarkOccurrences == 0) ? max(1, IniGetInt(L"Settings", L"MarkOccurrences", 1)) : 0;
|
||||
if (iMarkOccurrences == 0) {
|
||||
// clear all marks
|
||||
SendMessage(hwndEdit, SCI_SETINDICATORCURRENT, INDIC_NP3_MARK_OCCURANCE, 0);
|
||||
SendMessage(hwndEdit, SCI_INDICATORCLEARRANGE, 0, (int)SendMessage(hwndEdit, SCI_GETLENGTH, 0, 0));
|
||||
iMarkOccurrencesCount = -1;
|
||||
}
|
||||
else
|
||||
EditMarkAll(hwndEdit, bMarkOccurrencesMatchCase, bMarkOccurrencesMatchWords);
|
||||
break;
|
||||
|
||||
case IDM_VIEW_MARKOCCURRENCES_CASE:
|
||||
@ -5734,7 +5713,8 @@ void LoadSettings()
|
||||
|
||||
bShowCodeFolding = IniSectionGetBool(pIniSection,L"ShowCodeFolding", TRUE);
|
||||
|
||||
iMarkOccurrences = IniSectionGetInt(pIniSection,L"MarkOccurrences",3);
|
||||
iMarkOccurrences = IniSectionGetInt(pIniSection,L"MarkOccurrences",1);
|
||||
iMarkOccurrences = max(min(iMarkOccurrences, 3), 0);
|
||||
bMarkOccurrencesMatchCase = IniSectionGetBool(pIniSection,L"MarkOccurrencesMatchCase",FALSE);
|
||||
bMarkOccurrencesMatchWords = IniSectionGetBool(pIniSection,L"MarkOccurrencesMatchWholeWords",TRUE);
|
||||
|
||||
|
||||
BIN
src/Notepad3.rc
BIN
src/Notepad3.rc
Binary file not shown.
62
src/Styles.c
62
src/Styles.c
@ -46,6 +46,7 @@ extern HINSTANCE g_hInstance;
|
||||
extern int iSciFontQuality;
|
||||
extern const int FontQuality[4];
|
||||
|
||||
extern int iMarkOccurrences;
|
||||
extern BOOL bUseOldStyleBraceMatching;
|
||||
|
||||
#define MULTI_STYLE(a,b,c,d) ((a)|(b<<8)|(c<<16)|(d<<24))
|
||||
@ -69,20 +70,22 @@ EDITLEXER lexDefault = { SCLEX_NULL, 63000, L"Default Text", L"txt; text; wtx;
|
||||
/* 10 */ { SCI_SETEDGECOLOUR, 63110, L"Long Line Marker (Colors)", L"fore:#FFC000", L"" },
|
||||
/* 11 */ { SCI_SETEXTRAASCENT+SCI_SETEXTRADESCENT, 63111, L"Extra Line Spacing (Size)", L"size:2", L"" },
|
||||
/* 12 */ { SCI_MARKERSETBACK+SCI_MARKERSETALPHA, 63124, L"Book Marks (Colors)", L"back:#00FF00; alpha:20", L"" },
|
||||
/* 13 */ { SCI_MARKERSETBACK+SCI_MARKERSETALPHA, 63262, L"Mark Occurrences (Colors)", L"", L"" },
|
||||
|
||||
/* 13 */ { STYLE_DEFAULT, 63112, L"2nd Default Style", L"font:Courier New; size:10", L"" },
|
||||
/* 14 */ { STYLE_LINENUMBER, 63113, L"2nd Margins and Line Numbers", L"font:Tahoma; size:-2; fore:#FF0000", L"" },
|
||||
/* 15 */ { STYLE_BRACELIGHT, 63114, L"2nd Matching Braces", L"bold; fore:#FF0000", L"" },
|
||||
/* 16 */ { STYLE_BRACEBAD, 63115, L"2nd Matching Braces Error", L"bold; fore:#000080", L"" },
|
||||
/* 17 */ { STYLE_CONTROLCHAR, 63116, L"2nd Control Characters (Font)", L"size:-1", L"" },
|
||||
/* 18 */ { STYLE_INDENTGUIDE, 63117, L"2nd Indentation Guide (Color)", L"fore:#A0A0A0", L"" },
|
||||
/* 19 */ { SCI_SETSELFORE+SCI_SETSELBACK, 63118, L"2nd Selected Text (Colors)", L"eolfilled", L"" },
|
||||
/* 20 */ { SCI_SETWHITESPACEFORE+SCI_SETWHITESPACEBACK+SCI_SETWHITESPACESIZE, 63119, L"2nd Whitespace (Colors, Size 0-5)", L"fore:#FF4000", L"" },
|
||||
/* 21 */ { SCI_SETCARETLINEBACK, 63120, L"2nd Current Line Background (Color)", L"back:#FFFF00; alpha:50", L"" },
|
||||
/* 22 */ { SCI_SETCARETFORE+SCI_SETCARETWIDTH, 63121, L"2nd Caret (Color, Size 1-3)", L"", L"" },
|
||||
/* 23 */ { SCI_SETEDGECOLOUR, 63122, L"2nd Long Line Marker (Colors)", L"fore:#FFC000", L"" },
|
||||
/* 24 */ { SCI_SETEXTRAASCENT+SCI_SETEXTRADESCENT, 63123, L"2nd Extra Line Spacing (Size)", L"", L"" },
|
||||
/* 25 */ { SCI_MARKERSETBACK+SCI_MARKERSETALPHA, 63125, L"2nd Book Marks (Colors)", L"back:#00FF00; alpha:20", L"" },
|
||||
/* 14 */ { STYLE_DEFAULT, 63112, L"2nd Default Style", L"font:Courier New; size:10", L"" },
|
||||
/* 15 */ { STYLE_LINENUMBER, 63113, L"2nd Margins and Line Numbers", L"font:Tahoma; size:-2; fore:#FF0000", L"" },
|
||||
/* 16 */ { STYLE_BRACELIGHT, 63114, L"2nd Matching Braces", L"bold; fore:#FF0000", L"" },
|
||||
/* 17 */ { STYLE_BRACEBAD, 63115, L"2nd Matching Braces Error", L"bold; fore:#000080", L"" },
|
||||
/* 18 */ { STYLE_CONTROLCHAR, 63116, L"2nd Control Characters (Font)", L"size:-1", L"" },
|
||||
/* 19 */ { STYLE_INDENTGUIDE, 63117, L"2nd Indentation Guide (Color)", L"fore:#A0A0A0", L"" },
|
||||
/* 20 */ { SCI_SETSELFORE+SCI_SETSELBACK, 63118, L"2nd Selected Text (Colors)", L"eolfilled", L"" },
|
||||
/* 21 */ { SCI_SETWHITESPACEFORE+SCI_SETWHITESPACEBACK+SCI_SETWHITESPACESIZE, 63119, L"2nd Whitespace (Colors, Size 0-5)", L"fore:#FF4000", L"" },
|
||||
/* 22 */ { SCI_SETCARETLINEBACK, 63120, L"2nd Current Line Background (Color)", L"back:#FFFF00; alpha:50", L"" },
|
||||
/* 23 */ { SCI_SETCARETFORE+SCI_SETCARETWIDTH, 63121, L"2nd Caret (Color, Size 1-3)", L"", L"" },
|
||||
/* 24 */ { SCI_SETEDGECOLOUR, 63122, L"2nd Long Line Marker (Colors)", L"fore:#FFC000", L"" },
|
||||
/* 25 */ { SCI_SETEXTRAASCENT+SCI_SETEXTRADESCENT, 63123, L"2nd Extra Line Spacing (Size)", L"", L"" },
|
||||
/* 26 */ { SCI_MARKERSETBACK+SCI_MARKERSETALPHA, 63125, L"2nd Book Marks (Colors)", L"back:#00FF00; alpha:20", L"" },
|
||||
/* 27 */ { SCI_MARKERSETBACK+SCI_MARKERSETALPHA, 63263, L"2nd Mark Occurrences (Colors)", L"fore:#0x00FF00; alpha:100", L"" },
|
||||
|
||||
{ -1, 00000, L"", L"", L"" } } };
|
||||
|
||||
@ -101,8 +104,9 @@ enum LexDefaultStyles {
|
||||
STY_LONG_LN_MRK = 10,
|
||||
STY_X_LN_SPACE = 11,
|
||||
STY_BOOK_MARK = 12,
|
||||
STY_MARK_OCC = 13,
|
||||
|
||||
STY_CNT_LAST = 13 // STY_2ND_XXX = STY_XXX + STY_CNT_LAST
|
||||
STY_CNT_LAST = 14 // STY_2ND_XXX = STY_XXX + STY_CNT_LAST
|
||||
};
|
||||
|
||||
|
||||
@ -3172,6 +3176,36 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) {
|
||||
SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_BAD_BRACE, iValue);
|
||||
}
|
||||
|
||||
// Occurrences Marker
|
||||
if (!Style_StrGetColor(TRUE, lexDefault.Styles[STY_MARK_OCC + iIdx].szValue, &iValue))
|
||||
{
|
||||
WCHAR* sty = L"";
|
||||
switch (iMarkOccurrences) {
|
||||
case 1:
|
||||
sty = L"fore:0xFF0000";
|
||||
iValue = RGB(0xFF, 0x00, 0x00);
|
||||
break;
|
||||
case 2:
|
||||
sty = L"fore:0x00FF00";
|
||||
iValue = RGB(0x00, 0xFF, 0x00);
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
sty = L"fore:0x0000FF";
|
||||
iValue = RGB(0x00, 0xFF, 0x00);
|
||||
break;
|
||||
}
|
||||
StringCchCopyW(lexDefault.Styles[STY_MARK_OCC + iIdx].szValue, COUNTOF(lexDefault.Styles[0].szValue), sty);
|
||||
}
|
||||
SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_MARK_OCCURANCE, iValue);
|
||||
|
||||
if (!Style_StrGetAlpha(lexDefault.Styles[STY_MARK_OCC + iIdx].szValue, &iValue)) {
|
||||
iValue = 100;
|
||||
StringCchCatW(lexDefault.Styles[STY_MARK_OCC + iIdx].szValue, COUNTOF(lexDefault.Styles[0].szValue), L"; alpha:100");
|
||||
}
|
||||
SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_MARK_OCCURANCE, iValue);
|
||||
|
||||
|
||||
if (pLexNew != &lexANSI)
|
||||
Style_SetStyles(hwnd, lexDefault.Styles[STY_CTRL_CHR + iIdx].iStyle, lexDefault.Styles[STY_CTRL_CHR + iIdx].szValue); // control char
|
||||
Style_SetStyles(hwnd, lexDefault.Styles[STY_INDENT_GUIDE + iIdx].iStyle, lexDefault.Styles[STY_INDENT_GUIDE + iIdx].szValue); // indent guide
|
||||
|
||||
@ -375,15 +375,12 @@
|
||||
#define IDM_VIEW_SAVESETTINGSNOW 40444
|
||||
#define IDM_VIEW_FOLDING 40445
|
||||
#define IDM_VIEW_TOGGLEFOLDS 40446
|
||||
#define IDM_VIEW_MARKOCCURRENCES_OFF 40447
|
||||
#define IDM_VIEW_MARKOCCURRENCES_BLUE 40448
|
||||
#define IDM_VIEW_MARKOCCURRENCES_GREEN 40449
|
||||
#define IDM_VIEW_MARKOCCURRENCES_RED 40450
|
||||
#define IDM_VIEW_MARKOCCURRENCES_CASE 40451
|
||||
#define IDM_VIEW_MARKOCCURRENCES_WORD 40452
|
||||
#define IDM_VIEW_AUTOCOMPLETEWORDS 40453
|
||||
#define IDM_VIEW_ACCELWORDNAV 40454
|
||||
#define IDM_VIEW_NOPRESERVECARET 40455
|
||||
#define IDM_VIEW_MARKOCCURRENCES_ONOFF 40447
|
||||
#define IDM_VIEW_MARKOCCURRENCES_CASE 40448
|
||||
#define IDM_VIEW_MARKOCCURRENCES_WORD 40449
|
||||
#define IDM_VIEW_AUTOCOMPLETEWORDS 40450
|
||||
#define IDM_VIEW_ACCELWORDNAV 40451
|
||||
#define IDM_VIEW_NOPRESERVECARET 40452
|
||||
#define IDM_HELP_ABOUT 40500
|
||||
#define IDM_HELP_CMD 40501
|
||||
#define IDM_TRAY_RESTORE 40600
|
||||
|
||||
Loading…
Reference in New Issue
Block a user