diff --git a/src/Edit.c b/src/Edit.c index 794828ca9..13802a50d 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -160,8 +160,9 @@ HWND EditCreate(HWND hwndParent) SendMessage(hwnd,SCI_SETADDITIONALSELECTIONTYPING,FALSE,0); SendMessage(hwnd,SCI_SETADDITIONALCARETSBLINK,FALSE,0); SendMessage(hwnd,SCI_SETADDITIONALCARETSVISIBLE,FALSE,0); - SendMessage(hwnd,SCI_SETMOUSEWHEELCAPTURES,FALSE,0); - SendMessage(hwnd, SCI_SETVIRTUALSPACEOPTIONS, (bDenyVirtualSpaceAccess ? SCVS_NONE : SCVS_RECTANGULARSELECTION), 0); + SendMessage(hwnd,SCI_SETMOUSEDOWNCAPTURES, FALSE, 0); + SendMessage(hwnd,SCI_SETMOUSEWHEELCAPTURES,FALSE, 0); + SendMessage(hwnd,SCI_SETVIRTUALSPACEOPTIONS, (bDenyVirtualSpaceAccess ? SCVS_NONE : SCVS_RECTANGULARSELECTION), 0); SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_NEXT + (SCMOD_CTRL << 16)),SCI_PARADOWN); SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_PRIOR + (SCMOD_CTRL << 16)),SCI_PARAUP); @@ -286,7 +287,7 @@ void EditSetNewText(HWND hwnd,char* lpstrText,DWORD cbText) SendMessage(hwnd,SCI_SETUNDOCOLLECTION,0,0); UndoRedoSelectionMap(-1,NULL); SendMessage(hwnd,SCI_CLEARALL,0,0); - SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)-1,0); + SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)MARKER_NP3_BOOKMARK,0); SendMessage(hwnd,SCI_SETSCROLLWIDTH, DEFAULT_SCROLL_WIDTH,0); SendMessage(hwnd,SCI_SETXOFFSET,0,0); @@ -330,7 +331,7 @@ BOOL EditConvertText(HWND hwnd,int encSource,int encDest,BOOL bSetSavePoint) SendMessage(hwnd,SCI_SETUNDOCOLLECTION,0,0); UndoRedoSelectionMap(-1,NULL); SendMessage(hwnd,SCI_CLEARALL,0,0); - SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)-1,0); + SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)MARKER_NP3_BOOKMARK,0); Encoding_SciSetCodePage(hwnd,encDest); SendMessage(hwnd,SCI_SETUNDOCOLLECTION,(WPARAM)1,0); //SendMessage(hwnd,EM_EMPTYUNDOBUFFER,0,0); // deprecated @@ -362,7 +363,7 @@ BOOL EditConvertText(HWND hwnd,int encSource,int encDest,BOOL bSetSavePoint) SendMessage(hwnd,SCI_SETUNDOCOLLECTION,0,0); UndoRedoSelectionMap(-1,NULL); SendMessage(hwnd,SCI_CLEARALL,0,0); - SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)-1,0); + SendMessage(hwnd,SCI_MARKERDELETEALL,(WPARAM)MARKER_NP3_BOOKMARK,0); Encoding_SciSetCodePage(hwnd,encDest); SendMessage(hwnd,SCI_ADDTEXT,cbText,(LPARAM)pchText); SendMessage(hwnd,SCI_SETUNDOCOLLECTION,(WPARAM)1,0); @@ -5882,7 +5883,7 @@ INT_PTR CALLBACK EditModifyLinesDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM if (GetSysColorBrush(COLOR_HOTLIGHT)) SetTextColor(hdc,GetSysColor(COLOR_HOTLIGHT)); else - SetTextColor(hdc,RGB(0,0,255)); + SetTextColor(hdc,RGB(0, 0, 0xFF)); SelectObject(hdc,/*dwId == id_hover?*/hFontHover/*:hFontNormal*/); return(LONG_PTR)GetSysColorBrush(COLOR_BTNFACE); } diff --git a/src/Edit.h b/src/Edit.h index 094691bc9..5b48fba87 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -44,6 +44,7 @@ typedef struct _editfindreplace #define IDMSG_SWITCHTOFIND 300 #define IDMSG_SWITCHTOREPLACE 301 +#define MARKER_NP3_BOOKMARK 0 #define INDIC_NP3_MARK_OCCURANCE 1 #define INDIC_NP3_MATCH_BRACE 2 diff --git a/src/Helpers.c b/src/Helpers.c index 4bb8de5b1..3fbed2cad 100644 --- a/src/Helpers.c +++ b/src/Helpers.c @@ -179,7 +179,7 @@ BOOL IniSectionSetString(LPWSTR lpCachedIniSection,LPCWSTR lpName,LPCWSTR lpStri p = StrEnd(p) + 1; } StringCchPrintf(tch,COUNTOF(tch),L"%s=%s",lpName,lpString); - StringCchCopy(p,512*3+64,tch); + StringCchCopy(p,COUNTOF(tch),tch); p = StrEnd(p) + 1; *p = 0; return(TRUE); diff --git a/src/Notepad3.c b/src/Notepad3.c index 548077e4c..5c45088ff 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -310,68 +310,6 @@ WCHAR g_wchWorkingDirectory[MAX_PATH+2] = { L'\0' }; static UT_icd UndoRedoSelection_icd = { sizeof(UndoRedoSelection_t), NULL, NULL, NULL }; static UT_array* UndoRedoSelectionUTArray = NULL; - -//Graphics for bookmark indicator -/* XPM */ -static char * bookmark_pixmap[] = { - "11 11 44 1", - " c #EBE9ED", - ". c #E5E3E7", - "+ c #767C6D", - "@ c #2A3120", - "# c #1B2312", - "$ c #333B28", - "% c #E3E1E5", - "& c #D8D6DA", - "* c #444D38", - "= c #3F5C19", - "- c #63AD00", - "; c #73C900", - "> c #64AF00", - ", c #3D5718", - "' c #3E4634", - ") c #7B8172", - "! c #42601A", - "~ c #74CB00", - "{ c #71C600", - "] c #3A5317", - "^ c #707668", - "/ c #3F4931", - "( c #262C1D", - "_ c #2F3A1E", - ": c #72C700", - "< c #74CA00", - "[ c #0E1109", - "} c #3C462F", - "| c #62AC00", - "1 c #21271A", - "2 c #7A8071", - "3 c #405D19", - "4 c #3D5A18", - "5 c #D9D7DB", - "6 c #4E5841", - "7 c #72C800", - "8 c #63AC00", - "9 c #3F5B19", - "0 c #3D4533", - "a c #DFDDE0", - "b c #353E29", - "c c #29331B", - "d c #7B8272", - "e c #DDDBDF", - " ", - " .+@#$+% ", - " &*=-;>,' ", - " )!~~~~{]^ ", - " /-~~~~~>( ", - " _:~~~~~<[ ", - " }|~~~~~|1 ", - " 23~~~~;4+ ", - " 56=|7890 ", - " a2bc}de ", - " " -}; - //============================================================================= // // Flags @@ -1159,7 +1097,6 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) // Quickly handle painting and sizing messages, found in ScintillaWin.cxx // Cool idea, don't know if this has any effect... ;-) case WM_MOVE: - case WM_MOUSEWHEEL: case WM_MOUSEACTIVATE: case WM_NCHITTEST: case WM_NCCALCSIZE: @@ -1283,6 +1220,13 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) case WM_TRAYMESSAGE: return MsgTrayMessage(hwnd, wParam, lParam); + case WM_MOUSEWHEEL: + case WM_MBUTTONDOWN: + if (wParam & MK_MBUTTON) { + PostMessage(hwnd, WM_COMMAND, MAKELONG(BME_EDIT_BOOKMARKTOGGLE, 1), 0); + } + return DefWindowProc(hwnd, umsg, wParam, lParam); + default: if (umsg == msgTaskbarCreated) { if (!IsWindowVisible(hwnd)) @@ -1367,11 +1311,8 @@ LRESULT MsgCreate(HWND hwnd,WPARAM wParam,LPARAM lParam) SendMessage(hwndEdit,SCI_SETEDGECOLUMN,iLongLinesLimit,0); // Margins - SendMessage(hwndEdit,SCI_SETMARGINWIDTHN,2,0); - SendMessage(hwndEdit,SCI_SETMARGINWIDTHN,1,(bShowSelectionMargin)?16:0); + Style_SetCurrentMargin(hwndEdit, bShowSelectionMargin); UpdateLineNumberWidth(); - //SendMessage(hwndEdit,SCI_SETMARGINWIDTHN,0, - // (bShowLineNumbers)?SendMessage(hwndEdit,SCI_TEXTWIDTH,STYLE_LINENUMBER,(LPARAM)L"_999999_"):0); // Code folding SciCall_SetMarginType(MARGIN_FOLD_INDEX, SC_MARGIN_SYMBOL); @@ -3910,39 +3851,26 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) } case BME_EDIT_BOOKMARKTOGGLE: - { - int iPos = (int)SendMessage( hwndEdit , SCI_GETCURRENTPOS , 0 , 0); - int iLine = (int)SendMessage( hwndEdit , SCI_LINEFROMPOSITION , iPos , 0 ); + { + int iPos = (int)SendMessage(hwndEdit, SCI_GETCURRENTPOS, 0, 0); + int iLine = (int)SendMessage(hwndEdit, SCI_LINEFROMPOSITION, iPos, 0); - int bitmask = (int)SendMessage( hwndEdit , SCI_MARKERGET , iLine , 0 ); - if( bitmask & 1 ) - { - // unset - SendMessage( hwndEdit , SCI_MARKERDELETE , iLine , 0 ); + int bitmask = (int)SendMessage(hwndEdit, SCI_MARKERGET, iLine, MARKER_NP3_BOOKMARK); + if (bitmask & 1) { + // unset + SendMessage(hwndEdit, SCI_MARKERDELETE, iLine, MARKER_NP3_BOOKMARK); } - else - { - if( bShowSelectionMargin ) - { - SendMessage( hwndEdit , SCI_MARKERDEFINEPIXMAP , 0 , (LPARAM)bookmark_pixmap ); - } - else - { - SendMessage( hwndEdit , SCI_MARKERSETBACK , 0 , 0xff << 8 ); - SendMessage( hwndEdit , SCI_MARKERSETALPHA , 0 , 20); - SendMessage( hwndEdit , SCI_MARKERDEFINE , 0 , SC_MARK_BACKGROUND ); - } - // set - SendMessage( hwndEdit , SCI_MARKERADD , iLine , 0 ); - //SendMessage( hwndEdit , SCI_MARKERADD , iLine , 1 ); + else { + Style_SetCurrentMargin(hwndEdit, bShowSelectionMargin); + // set + SendMessage(hwndEdit, SCI_MARKERADD, iLine, MARKER_NP3_BOOKMARK); } - break; - } + } case BME_EDIT_BOOKMARKCLEAR: { - SendMessage(hwndEdit,SCI_MARKERDELETEALL,(WPARAM)-1 ,0); + SendMessage(hwndEdit,SCI_MARKERDELETEALL, (WPARAM)MARKER_NP3_BOOKMARK, 0); break; } @@ -4177,26 +4105,12 @@ LRESULT MsgCommand(HWND hwnd,WPARAM wParam,LPARAM lParam) case IDM_VIEW_LINENUMBERS: bShowLineNumbers = (bShowLineNumbers) ? FALSE : TRUE; UpdateLineNumberWidth(); - //SendMessage(hwndEdit,SCI_SETMARGINWIDTHN,0, - // (bShowLineNumbers)?SendMessage(hwndEdit,SCI_TEXTWIDTH,STYLE_LINENUMBER,(LPARAM)"_999999_"):0); break; case IDM_VIEW_MARGIN: - { - bShowSelectionMargin = (bShowSelectionMargin) ? FALSE : TRUE; - SendMessage(hwndEdit,SCI_SETMARGINWIDTHN,1,(bShowSelectionMargin) ? 16 : 0); - - //Depending on if the margin is visible or not, choose different bookmark indication - if (bShowSelectionMargin) { - SendMessage(hwndEdit,SCI_MARKERDEFINEPIXMAP,0,(LPARAM)bookmark_pixmap); - } - else { - SendMessage(hwndEdit,SCI_MARKERSETBACK,0,0xff << 8); - SendMessage(hwndEdit,SCI_MARKERSETALPHA,0,20); - SendMessage(hwndEdit,SCI_MARKERDEFINE,0,SC_MARK_BACKGROUND); - } - } + bShowSelectionMargin = (bShowSelectionMargin) ? FALSE : TRUE; + Style_SetCurrentMargin(hwndEdit, bShowSelectionMargin); break; case IDM_VIEW_AUTOCOMPLETEWORDS: @@ -5431,8 +5345,8 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam) int bitmask = (int)SendMessage( hwndEdit , SCI_MARKERGET , iCurLine-1 , 0 ); if( bitmask & 1 ) { - SendMessage( hwndEdit , SCI_MARKERDELETE , iCurLine-1 , 0 ); - SendMessage( hwndEdit , SCI_MARKERADD , iCurLine , 0 ); + SendMessage( hwndEdit , SCI_MARKERDELETE , iCurLine-1 , MARKER_NP3_BOOKMARK); + SendMessage( hwndEdit , SCI_MARKERADD , iCurLine , MARKER_NP3_BOOKMARK); } } } @@ -7048,17 +6962,15 @@ void UpdateLineNumberWidth() StringCchPrintfA(chLines,COUNTOF(chLines),"_%i_",SendMessage(hwndEdit,SCI_GETLINECOUNT,0,0)); - iLineMarginWidthNow = (int)SendMessage(hwndEdit,SCI_GETMARGINWIDTHN,0,0); + iLineMarginWidthNow = (int)SendMessage(hwndEdit,SCI_GETMARGINWIDTHN, MARGIN_NP3_LINENUM, 0); iLineMarginWidthFit = (int)SendMessage(hwndEdit,SCI_TEXTWIDTH,STYLE_LINENUMBER,(LPARAM)chLines); if (iLineMarginWidthNow != iLineMarginWidthFit) { - //SendMessage(hwndEdit,SCI_SETMARGINWIDTHN,0,0); - SendMessage(hwndEdit,SCI_SETMARGINWIDTHN,0,iLineMarginWidthFit); + SendMessage(hwndEdit,SCI_SETMARGINWIDTHN, MARGIN_NP3_LINENUM, iLineMarginWidthFit); } } - else - SendMessage(hwndEdit,SCI_SETMARGINWIDTHN,0,0); + SendMessage(hwndEdit,SCI_SETMARGINWIDTHN, MARGIN_NP3_LINENUM, 0); } diff --git a/src/Notepad3.rc b/src/Notepad3.rc index 911332e04..e69de29bb 100644 Binary files a/src/Notepad3.rc and b/src/Notepad3.rc differ diff --git a/src/Print.cpp b/src/Print.cpp index 3a23c6c05..c5f2a0d32 100644 --- a/src/Print.cpp +++ b/src/Print.cpp @@ -356,7 +356,7 @@ extern "C" BOOL EditPrint(HWND hwnd,LPCWSTR pszDocTitle,LPCWSTR pszPageFormat) StartPage(hdc); SetTextColor(hdc, RGB(0,0,0)); - SetBkColor(hdc, RGB(255,255,255)); + SetBkColor(hdc, RGB(0xFF, 0xFF, 0xFF)); SelectObject(hdc, fontHeader); UINT ta = SetTextAlign(hdc, TA_BOTTOM); RECT rcw = {frPrint.rc.left, frPrint.rc.top - headerLineHeight - headerLineHeight / 2, @@ -400,7 +400,7 @@ extern "C" BOOL EditPrint(HWND hwnd,LPCWSTR pszDocTitle,LPCWSTR pszPageFormat) if (printPage) { SetTextColor(hdc, RGB(0,0,0)); - SetBkColor(hdc, RGB(255,255,255)); + SetBkColor(hdc, RGB(0xFF, 0xFF, 0xFF)); SelectObject(hdc, fontFooter); UINT ta = SetTextAlign(hdc, TA_TOP); RECT rcw = {frPrint.rc.left, frPrint.rc.bottom + footerLineHeight / 2, diff --git a/src/Styles.c b/src/Styles.c index 7f2165ec0..5059cd509 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -48,7 +48,6 @@ extern const int FontQuality[4]; extern BOOL bUseOldStyleBraceMatching; - #define MULTI_STYLE(a,b,c,d) ((a)|(b<<8)|(c<<16)|(d<<24)) @@ -69,21 +68,44 @@ EDITLEXER lexDefault = { SCLEX_NULL, 63000, L"Default Text", L"txt; text; wtx; /* 9 */ { SCI_SETCARETFORE+SCI_SETCARETWIDTH, 63109, L"Caret (Color, Size 1-3)", L"", L"" }, /* 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 */ { 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"" }, - /* 12 */ { STYLE_DEFAULT, 63112, L"2nd Default Style", L"font:Courier New; size:10", L"" }, - /* 13 */ { STYLE_LINENUMBER, 63113, L"2nd Margins and Line Numbers", L"font:Tahoma; size:-2; fore:#FF0000", L"" }, - /* 14 */ { STYLE_BRACELIGHT, 63114, L"2nd Matching Braces", L"bold; fore:#FF0000", L"" }, - /* 15 */ { STYLE_BRACEBAD, 63115, L"2nd Matching Braces Error", L"bold; fore:#000080", L"" }, - /* 16 */ { STYLE_CONTROLCHAR, 63116, L"2nd Control Characters (Font)", L"size:-1", L"" }, - /* 17 */ { STYLE_INDENTGUIDE, 63117, L"2nd Indentation Guide (Color)", L"fore:#A0A0A0", L"" }, - /* 18 */ { SCI_SETSELFORE+SCI_SETSELBACK, 63118, L"2nd Selected Text (Colors)", L"eolfilled", L"" }, - /* 19 */ { SCI_SETWHITESPACEFORE+SCI_SETWHITESPACEBACK+SCI_SETWHITESPACESIZE, 63119, L"2nd Whitespace (Colors, Size 0-5)", L"fore:#FF4000", L"" }, - /* 20 */ { SCI_SETCARETLINEBACK, 63120, L"2nd Current Line Background (Color)", L"back:#FFFF00; alpha:50", L"" }, - /* 21 */ { SCI_SETCARETFORE+SCI_SETCARETWIDTH, 63121, L"2nd Caret (Color, Size 1-3)", L"", L"" }, - /* 22 */ { SCI_SETEDGECOLOUR, 63122, L"2nd Long Line Marker (Colors)", L"fore:#FFC000", L"" }, - /* 23 */ { SCI_SETEXTRAASCENT+SCI_SETEXTRADESCENT, 63123, L"2nd Extra Line Spacing (Size)", L"", L"" }, { -1, 00000, L"", L"", L"" } } }; + +enum LexDefaultStyles { + STY_DEFAULT = 0, + STY_MARGIN = 1, + STY_BRACE_OK = 2, + STY_BRACE_BAD = 3, + STY_CTRL_CHR = 4, + STY_INDENT_GUIDE = 5, + STY_SEL_TXT = 6, + STY_WHITESPACE = 7, + STY_CUR_LN_BCK = 8, + STY_CARET = 9, + STY_LONG_LN_MRK = 10, + STY_X_LN_SPACE = 11, + STY_BOOK_MARK = 12, + + STY_CNT_LAST = 13 // STY_2ND_XXX = STY_XXX + STY_CNT_LAST +}; + + KEYWORDLIST KeyWords_HTML = { "!doctype ^aria- ^data- a abbr accept accept-charset accesskey acronym action address align alink " "alt and applet archive area article aside async audio autocomplete autofocus autoplay axis b " @@ -2669,8 +2691,25 @@ int iDefaultLexer; BOOL bAutoSelect; int cxStyleSelectDlg; int cyStyleSelectDlg; + extern int iDefaultCharSet; extern BOOL bHiliteCurrentLine; +extern BOOL bShowSelectionMargin; + + + + +//============================================================================= +// +// Style_RgbAlpha() +// +int __fastcall Style_RgbAlpha(int rgbFore, int rgbBack, int alpha) +{ + return (int)RGB(\ + (0xFF - alpha) * (int)GetRValue(rgbBack) / 0xFF + alpha * (int)GetRValue(rgbFore) / 0xFF, \ + (0xFF - alpha) * (int)GetGValue(rgbBack) / 0xFF + alpha * (int)GetGValue(rgbFore) / 0xFF, \ + (0xFF - alpha) * (int)GetBValue(rgbBack) / 0xFF + alpha * (int)GetBValue(rgbFore) / 0xFF); +} //============================================================================= @@ -2719,7 +2758,7 @@ void Style_Load() LoadIniSection(L"Styles",pIniSection,cchIniSection); // 2nd default - bUse2ndDefaultStyle = (IniSectionGetInt(pIniSection,L"Use2ndDefaultStyle",0)) ? 1 : 0; + bUse2ndDefaultStyle = (IniSectionGetInt(pIniSection,L"Use2ndDefaultStyle",0)) ? TRUE : FALSE; // default scheme iDefaultLexer = IniSectionGetInt(pIniSection,L"DefaultScheme",0); @@ -2916,8 +2955,7 @@ BOOL Style_Export(HWND hwnd) // // Style_SetLexer() // -void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew) -{ +void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) { int rgb; int iValue; int iIdx; @@ -2928,25 +2966,25 @@ void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew) pLexNew = pLexArray[iDefaultLexer]; // Lexer - SendMessage(hwnd,SCI_SETLEXER,pLexNew->iLexer,0); + SendMessage(hwnd, SCI_SETLEXER, pLexNew->iLexer, 0); // deprecated since SCI 3.4.2 //int iStyleBits = (int)SendMessage(hwnd,SCI_GETSTYLEBITSNEEDED,0,0); //SendMessage(hwnd,SCI_SETSTYLEBITS,(WPARAM)iStyleBits,0); if (pLexNew->iLexer == SCLEX_XML) - SendMessage(hwnd,SCI_SETPROPERTY,(WPARAM)"lexer.xml.allow.scripts",(LPARAM)"1"); + SendMessage(hwnd, SCI_SETPROPERTY, (WPARAM)"lexer.xml.allow.scripts", (LPARAM)"1"); if (pLexNew->iLexer == SCLEX_CPP) { - SendMessage(hwnd,SCI_SETPROPERTY,(WPARAM)"styling.within.preprocessor",(LPARAM)"1"); - SendMessage(hwnd,SCI_SETPROPERTY,(WPARAM)"lexer.cpp.track.preprocessor",(LPARAM)"0"); - SendMessage(hwnd,SCI_SETPROPERTY,(WPARAM)"lexer.cpp.update.preprocessor",(LPARAM)"0"); + SendMessage(hwnd, SCI_SETPROPERTY, (WPARAM)"styling.within.preprocessor", (LPARAM)"1"); + SendMessage(hwnd, SCI_SETPROPERTY, (WPARAM)"lexer.cpp.track.preprocessor", (LPARAM)"0"); + SendMessage(hwnd, SCI_SETPROPERTY, (WPARAM)"lexer.cpp.update.preprocessor", (LPARAM)"0"); } else if (pLexNew->iLexer == SCLEX_PASCAL) - SendMessage(hwnd,SCI_SETPROPERTY,(WPARAM)"lexer.pascal.smart.highlighting",(LPARAM)"1"); + SendMessage(hwnd, SCI_SETPROPERTY, (WPARAM)"lexer.pascal.smart.highlighting", (LPARAM)"1"); else if (pLexNew->iLexer == SCLEX_SQL) { - SendMessage(hwnd,SCI_SETPROPERTY,(WPARAM)"sql.backslash.escapes",(LPARAM)"1"); - SendMessage(hwnd,SCI_SETPROPERTY,(WPARAM)"lexer.sql.backticks.identifier",(LPARAM)"1"); - SendMessage(hwnd,SCI_SETPROPERTY,(WPARAM)"lexer.sql.numbersign.comment",(LPARAM)"1"); + SendMessage(hwnd, SCI_SETPROPERTY, (WPARAM)"sql.backslash.escapes", (LPARAM)"1"); + SendMessage(hwnd, SCI_SETPROPERTY, (WPARAM)"lexer.sql.backticks.identifier", (LPARAM)"1"); + SendMessage(hwnd, SCI_SETPROPERTY, (WPARAM)"lexer.sql.numbersign.comment", (LPARAM)"1"); } else if (pLexNew->iLexer == SCLEX_NSIS) SciCall_SetProperty("nsis.ignorecase", "1"); @@ -2969,161 +3007,166 @@ void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew) // Add KeyWord Lists for (int i = 0; i < 9; i++) - SendMessage(hwnd,SCI_SETKEYWORDS,i,(LPARAM)pLexNew->pKeyWords->pszKeyWords[i]); + SendMessage(hwnd, SCI_SETKEYWORDS, i, (LPARAM)pLexNew->pKeyWords->pszKeyWords[i]); // Use 2nd default style - iIdx = (bUse2ndDefaultStyle) ? 12 : 0; + iIdx = (bUse2ndDefaultStyle) ? STY_CNT_LAST : 0; // Font quality setup, check availability of Consolas - Style_SetFontQuality(hwnd,lexDefault.Styles[0+iIdx].szValue); + Style_SetFontQuality(hwnd, lexDefault.Styles[STY_DEFAULT + iIdx].szValue); fIsConsolasAvailable = IsFontAvailable(L"Consolas"); // Clear - SendMessage(hwnd,SCI_CLEARDOCUMENTSTYLE,0,0); + SendMessage(hwnd, SCI_CLEARDOCUMENTSTYLE, 0, 0); // Default Values are always set - SendMessage(hwnd,SCI_STYLERESETDEFAULT,0,0); - SendMessage(hwnd,SCI_STYLESETCHARACTERSET,STYLE_DEFAULT,(LPARAM)DEFAULT_CHARSET); + SendMessage(hwnd, SCI_STYLERESETDEFAULT, 0, 0); + SendMessage(hwnd, SCI_STYLESETCHARACTERSET, STYLE_DEFAULT, (LPARAM)DEFAULT_CHARSET); iBaseFontSize = 10; - Style_SetStyles(hwnd,lexDefault.Styles[0+iIdx].iStyle,lexDefault.Styles[0+iIdx].szValue); // default - Style_StrGetSize(lexDefault.Styles[0+iIdx].szValue,&iBaseFontSize); // base size + Style_SetStyles(hwnd, lexDefault.Styles[STY_DEFAULT + iIdx].iStyle, lexDefault.Styles[STY_DEFAULT + iIdx].szValue); // default + Style_StrGetSize(lexDefault.Styles[STY_DEFAULT + iIdx].szValue, &iBaseFontSize); // base size // Auto-select codepage according to charset //Style_SetACPfromCharSet(hwnd); - if (!Style_StrGetColor(TRUE,lexDefault.Styles[0+iIdx].szValue,&iValue)) - SendMessage(hwnd,SCI_STYLESETFORE,STYLE_DEFAULT,(LPARAM)GetSysColor(COLOR_WINDOWTEXT)); // default text color - if (!Style_StrGetColor(FALSE,lexDefault.Styles[0+iIdx].szValue,&iValue)) - SendMessage(hwnd,SCI_STYLESETBACK,STYLE_DEFAULT,(LPARAM)GetSysColor(COLOR_WINDOW)); // default window color + if (!Style_StrGetColor(TRUE, lexDefault.Styles[STY_DEFAULT + iIdx].szValue, &iValue)) + SendMessage(hwnd, SCI_STYLESETFORE, STYLE_DEFAULT, (LPARAM)GetSysColor(COLOR_WINDOWTEXT)); // default text color + if (!Style_StrGetColor(FALSE, lexDefault.Styles[STY_DEFAULT + iIdx].szValue, &iValue)) + SendMessage(hwnd, SCI_STYLESETBACK, STYLE_DEFAULT, (LPARAM)GetSysColor(COLOR_WINDOW)); // default window color if (pLexNew->iLexer != SCLEX_NULL || pLexNew == &lexANSI) - Style_SetStyles(hwnd,pLexNew->Styles[0].iStyle,pLexNew->Styles[0].szValue); // lexer default - SendMessage(hwnd,SCI_STYLECLEARALL,0,0); + Style_SetStyles(hwnd, pLexNew->Styles[STY_DEFAULT].iStyle, pLexNew->Styles[STY_DEFAULT].szValue); // lexer default + 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[STY_MARGIN + iIdx].iStyle, lexDefault.Styles[STY_MARGIN + iIdx].szValue); // linenumber if (bUseOldStyleBraceMatching) { - Style_SetStyles(hwnd,lexDefault.Styles[2+iIdx].iStyle,lexDefault.Styles[2+iIdx].szValue); // brace light + Style_SetStyles(hwnd, lexDefault.Styles[STY_BRACE_OK + iIdx].iStyle, lexDefault.Styles[STY_BRACE_OK + iIdx].szValue); // brace light } else { - if (Style_StrGetColor(TRUE, lexDefault.Styles[2 + iIdx].szValue, &iValue)) + if (Style_StrGetColor(TRUE, lexDefault.Styles[STY_BRACE_OK + iIdx].szValue, &iValue)) SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_MATCH_BRACE, iValue); - if (Style_StrGetAlpha(lexDefault.Styles[2 + iIdx].szValue, &iValue)) + if (Style_StrGetAlpha(lexDefault.Styles[STY_BRACE_OK + iIdx].szValue, &iValue)) SendMessage(hwnd, SCI_INDICSETALPHA, INDIC_NP3_MATCH_BRACE, iValue); } if (bUseOldStyleBraceMatching) { - Style_SetStyles(hwnd,lexDefault.Styles[3+iIdx].iStyle,lexDefault.Styles[3+iIdx].szValue); // brace bad + Style_SetStyles(hwnd, lexDefault.Styles[STY_BRACE_BAD + iIdx].iStyle, lexDefault.Styles[STY_BRACE_BAD + iIdx].szValue); // brace bad } else { - if (Style_StrGetColor(TRUE, lexDefault.Styles[3 + iIdx].szValue, &iValue)) + if (Style_StrGetColor(TRUE, lexDefault.Styles[STY_BRACE_BAD + iIdx].szValue, &iValue)) SendMessage(hwnd, SCI_INDICSETFORE, INDIC_NP3_BAD_BRACE, iValue); - if (Style_StrGetAlpha(lexDefault.Styles[3 + iIdx].szValue, &iValue)) + if (Style_StrGetAlpha(lexDefault.Styles[STY_BRACE_BAD + 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 + 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 // More default values... - if (Style_StrGetColor(TRUE,lexDefault.Styles[6+iIdx].szValue,&rgb)) { // selection fore - SendMessage(hwnd,SCI_SETSELFORE,TRUE,rgb); - SendMessage(hwnd,SCI_SETADDITIONALSELFORE,rgb,0); + if (Style_StrGetColor(TRUE, lexDefault.Styles[STY_SEL_TXT + iIdx].szValue, &rgb)) { // selection fore + SendMessage(hwnd, SCI_SETSELFORE, TRUE, rgb); + SendMessage(hwnd, SCI_SETADDITIONALSELFORE, rgb, 0); } else { - SendMessage(hwnd,SCI_SETSELFORE,0,0); - SendMessage(hwnd,SCI_SETADDITIONALSELFORE,0,0); + SendMessage(hwnd, SCI_SETSELFORE, 0, 0); + SendMessage(hwnd, SCI_SETADDITIONALSELFORE, 0, 0); } - if (Style_StrGetColor(FALSE,lexDefault.Styles[6+iIdx].szValue,&iValue)) { // selection back - SendMessage(hwnd,SCI_SETSELBACK,TRUE,iValue); - SendMessage(hwnd,SCI_SETADDITIONALSELBACK,iValue,0); + if (Style_StrGetColor(FALSE, lexDefault.Styles[STY_SEL_TXT + iIdx].szValue, &iValue)) { // selection back + SendMessage(hwnd, SCI_SETSELBACK, TRUE, iValue); + SendMessage(hwnd, SCI_SETADDITIONALSELBACK, iValue, 0); } else { - SendMessage(hwnd,SCI_SETSELBACK,TRUE,RGB(0xC0,0xC0,0xC0)); // use a default value... - SendMessage(hwnd,SCI_SETADDITIONALSELBACK,RGB(0xC0,0xC0,0xC0),0); + SendMessage(hwnd, SCI_SETSELBACK, TRUE, RGB(0xC0, 0xC0, 0xC0)); // use a default value... + SendMessage(hwnd, SCI_SETADDITIONALSELBACK, RGB(0xC0, 0xC0, 0xC0), 0); } - if (Style_StrGetAlpha(lexDefault.Styles[6+iIdx].szValue,&iValue)) { // selection alpha - SendMessage(hwnd,SCI_SETSELALPHA,iValue,0); - SendMessage(hwnd,SCI_SETADDITIONALSELALPHA,iValue,0); + if (Style_StrGetAlpha(lexDefault.Styles[STY_SEL_TXT + iIdx].szValue, &iValue)) { // selection alpha + SendMessage(hwnd, SCI_SETSELALPHA, iValue, 0); + SendMessage(hwnd, SCI_SETADDITIONALSELALPHA, iValue, 0); } else { - SendMessage(hwnd,SCI_SETSELALPHA,SC_ALPHA_NOALPHA,0); - SendMessage(hwnd,SCI_SETADDITIONALSELALPHA,SC_ALPHA_NOALPHA,0); + SendMessage(hwnd, SCI_SETSELALPHA, SC_ALPHA_NOALPHA, 0); + SendMessage(hwnd, SCI_SETADDITIONALSELALPHA, SC_ALPHA_NOALPHA, 0); } - if (StrStrI(lexDefault.Styles[6+iIdx].szValue,L"eolfilled")) // selection eolfilled - SendMessage(hwnd,SCI_SETSELEOLFILLED,1,0); + if (StrStrI(lexDefault.Styles[STY_SEL_TXT + iIdx].szValue, L"eolfilled")) // selection eolfilled + SendMessage(hwnd, SCI_SETSELEOLFILLED, 1, 0); else - SendMessage(hwnd,SCI_SETSELEOLFILLED,0,0); + SendMessage(hwnd, SCI_SETSELEOLFILLED, 0, 0); - if (Style_StrGetColor(TRUE,lexDefault.Styles[7+iIdx].szValue,&rgb)) // whitespace fore - SendMessage(hwnd,SCI_SETWHITESPACEFORE,TRUE,rgb); + if (Style_StrGetColor(TRUE, lexDefault.Styles[STY_WHITESPACE + iIdx].szValue, &rgb)) // whitespace fore + SendMessage(hwnd, SCI_SETWHITESPACEFORE, TRUE, rgb); else - SendMessage(hwnd,SCI_SETWHITESPACEFORE,0,0); + SendMessage(hwnd, SCI_SETWHITESPACEFORE, 0, 0); - if (Style_StrGetColor(FALSE,lexDefault.Styles[7+iIdx].szValue,&rgb)) // whitespace back - SendMessage(hwnd,SCI_SETWHITESPACEBACK,TRUE,rgb); + if (Style_StrGetColor(FALSE, lexDefault.Styles[STY_WHITESPACE + iIdx].szValue, &rgb)) // whitespace back + SendMessage(hwnd, SCI_SETWHITESPACEBACK, TRUE, rgb); else - SendMessage(hwnd,SCI_SETWHITESPACEBACK,0,0); // use a default value... + SendMessage(hwnd, SCI_SETWHITESPACEBACK, 0, 0); // use a default value... // whitespace dot size iValue = 1; - if (Style_StrGetSize(lexDefault.Styles[7+iIdx].szValue,&iValue)) { + if (Style_StrGetSize(lexDefault.Styles[STY_WHITESPACE + iIdx].szValue, &iValue)) { WCHAR tch[32] = { L'\0' }; WCHAR wchStyle[BUFSIZE_STYLE_VALUE]; - StringCchCopyN(wchStyle,COUNTOF(wchStyle),lexDefault.Styles[7 + iIdx].szValue,COUNTOF(lexDefault.Styles[7 + iIdx].szValue)); + StringCchCopyN(wchStyle, COUNTOF(wchStyle), lexDefault.Styles[STY_WHITESPACE + iIdx].szValue, COUNTOF(lexDefault.Styles[STY_WHITESPACE + iIdx].szValue)); - iValue = max(min(iValue,5),0); - StringCchPrintf(lexDefault.Styles[7+iIdx].szValue,COUNTOF(lexDefault.Styles[7 + iIdx].szValue),L"size:%i",iValue); + iValue = max(min(iValue, 5), 0); + StringCchPrintf(lexDefault.Styles[STY_WHITESPACE + iIdx].szValue, COUNTOF(lexDefault.Styles[STY_WHITESPACE + iIdx].szValue), L"size:%i", iValue); - if (Style_StrGetColor(TRUE,wchStyle,&rgb)) { - StringCchPrintf(tch,COUNTOF(tch),L"; fore:#%02X%02X%02X", + if (Style_StrGetColor(TRUE, wchStyle, &rgb)) { + StringCchPrintf(tch, COUNTOF(tch), L"; fore:#%02X%02X%02X", (int)GetRValue(rgb), (int)GetGValue(rgb), (int)GetBValue(rgb)); - StringCchCat(lexDefault.Styles[7 + iIdx].szValue,COUNTOF(lexDefault.Styles[7 + iIdx].szValue),tch); + StringCchCat(lexDefault.Styles[STY_WHITESPACE + iIdx].szValue, COUNTOF(lexDefault.Styles[STY_WHITESPACE + iIdx].szValue), tch); } - if (Style_StrGetColor(FALSE,wchStyle,&rgb)) { - StringCchPrintf(tch,COUNTOF(tch),L"; back:#%02X%02X%02X", + if (Style_StrGetColor(FALSE, wchStyle, &rgb)) { + StringCchPrintf(tch, COUNTOF(tch), L"; back:#%02X%02X%02X", (int)GetRValue(rgb), (int)GetGValue(rgb), (int)GetBValue(rgb)); - StringCchCat(lexDefault.Styles[7 + iIdx].szValue,COUNTOF(lexDefault.Styles[7 + iIdx].szValue),tch); + StringCchCat(lexDefault.Styles[STY_WHITESPACE + iIdx].szValue, COUNTOF(lexDefault.Styles[STY_WHITESPACE + iIdx].szValue), tch); } } - SendMessage(hwnd,SCI_SETWHITESPACESIZE,iValue,0); + SendMessage(hwnd, SCI_SETWHITESPACESIZE, iValue, 0); if (bHiliteCurrentLine) { - if (Style_StrGetColor(FALSE,lexDefault.Styles[8+iIdx].szValue,&rgb)) // caret line back + if (Style_StrGetColor(FALSE, lexDefault.Styles[STY_CUR_LN_BCK + iIdx].szValue, &rgb)) // caret line back { - SendMessage(hwnd,SCI_SETCARETLINEVISIBLE,TRUE,0); - SendMessage(hwnd,SCI_SETCARETLINEBACK,rgb,0); + SendMessage(hwnd, SCI_SETCARETLINEVISIBLE, TRUE, 0); + SendMessage(hwnd, SCI_SETCARETLINEBACK, rgb, 0); - if (Style_StrGetAlpha(lexDefault.Styles[8+iIdx].szValue,&iValue)) - SendMessage(hwnd,SCI_SETCARETLINEBACKALPHA,iValue,0); + if (Style_StrGetAlpha(lexDefault.Styles[STY_CUR_LN_BCK + iIdx].szValue, &iValue)) + SendMessage(hwnd, SCI_SETCARETLINEBACKALPHA, iValue, 0); else - SendMessage(hwnd,SCI_SETCARETLINEBACKALPHA,SC_ALPHA_NOALPHA,0); + SendMessage(hwnd, SCI_SETCARETLINEBACKALPHA, SC_ALPHA_NOALPHA, 0); } else - SendMessage(hwnd,SCI_SETCARETLINEVISIBLE,FALSE,0); + SendMessage(hwnd, SCI_SETCARETLINEVISIBLE, FALSE, 0); } else - SendMessage(hwnd,SCI_SETCARETLINEVISIBLE,FALSE,0); + SendMessage(hwnd, SCI_SETCARETLINEVISIBLE, FALSE, 0); + + + // bookmark line or marker + Style_SetCurrentMargin(hwnd, bShowSelectionMargin); + // caret style and width - if (StrStr(lexDefault.Styles[9+iIdx].szValue,L"block")) { + if (StrStr(lexDefault.Styles[STY_CARET + iIdx].szValue,L"block")) { SendMessage(hwnd,SCI_SETCARETSTYLE,CARETSTYLE_BLOCK,0); StringCchCopy(wchCaretStyle,COUNTOF(wchCaretStyle),L"block"); } else { WCHAR wch[32] = { L'\0' }; iValue = 1; - if (Style_StrGetSize(lexDefault.Styles[9+iIdx].szValue,&iValue)) { + if (Style_StrGetSize(lexDefault.Styles[STY_CARET + iIdx].szValue,&iValue)) { iValue = max(min(iValue,3),1); StringCchPrintf(wch,COUNTOF(wch),L"size:%i",iValue); StringCchCat(wchCaretStyle,COUNTOF(wchCaretStyle),wch); @@ -3131,7 +3174,7 @@ void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew) SendMessage(hwnd,SCI_SETCARETSTYLE,CARETSTYLE_LINE,0); SendMessage(hwnd,SCI_SETCARETWIDTH,iValue,0); } - if (StrStr(lexDefault.Styles[9+iIdx].szValue,L"noblink")) { + if (StrStr(lexDefault.Styles[STY_CARET + iIdx].szValue,L"noblink")) { SendMessage(hwnd,SCI_SETCARETPERIOD,(WPARAM)0,0); if (StringCchLen(wchCaretStyle)) StringCchCat(wchCaretStyle,COUNTOF(wchCaretStyle),L"; "); @@ -3141,7 +3184,7 @@ void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew) SendMessage(hwnd,SCI_SETCARETPERIOD,(WPARAM)GetCaretBlinkTime(),0); // caret fore - if (!Style_StrGetColor(TRUE,lexDefault.Styles[9+iIdx].szValue,&rgb)) + if (!Style_StrGetColor(TRUE,lexDefault.Styles[STY_CARET + iIdx].szValue,&rgb)) rgb = GetSysColor(COLOR_WINDOWTEXT); else { WCHAR wch[32] = { L'\0' }; @@ -3157,27 +3200,27 @@ void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew) rgb = (int)SendMessage(hwnd,SCI_STYLEGETFORE,0,0); SendMessage(hwnd,SCI_SETCARETFORE,rgb,0); SendMessage(hwnd,SCI_SETADDITIONALCARETFORE,rgb,0); - StringCchCopy(lexDefault.Styles[9 + iIdx].szValue,COUNTOF(lexDefault.Styles[9 + iIdx].szValue),wchCaretStyle); + StringCchCopy(lexDefault.Styles[STY_CARET + iIdx].szValue,COUNTOF(lexDefault.Styles[STY_CARET + iIdx].szValue),wchCaretStyle); if (SendMessage(hwnd,SCI_GETEDGEMODE,0,0) == EDGE_LINE) { - if (Style_StrGetColor(TRUE,lexDefault.Styles[10+iIdx].szValue,&rgb)) // edge fore + if (Style_StrGetColor(TRUE,lexDefault.Styles[STY_LONG_LN_MRK + iIdx].szValue,&rgb)) // edge fore SendMessage(hwnd,SCI_SETEDGECOLOUR,rgb,0); else SendMessage(hwnd,SCI_SETEDGECOLOUR,GetSysColor(COLOR_3DLIGHT),0); } else { - if (Style_StrGetColor(FALSE,lexDefault.Styles[10+iIdx].szValue,&rgb)) // edge back + if (Style_StrGetColor(FALSE,lexDefault.Styles[STY_LONG_LN_MRK + iIdx].szValue,&rgb)) // edge back SendMessage(hwnd,SCI_SETEDGECOLOUR,rgb,0); else SendMessage(hwnd,SCI_SETEDGECOLOUR,GetSysColor(COLOR_3DLIGHT),0); } // Extra Line Spacing - if (Style_StrGetSize(lexDefault.Styles[11+iIdx].szValue,&iValue) && pLexNew != &lexANSI) { + if (Style_StrGetSize(lexDefault.Styles[STY_X_LN_SPACE + iIdx].szValue,&iValue) && pLexNew != &lexANSI) { int iAscent = 0; int iDescent = 0; iValue = min(max(iValue,0),64); - StringCchPrintf(lexDefault.Styles[11+iIdx].szValue,COUNTOF(lexDefault.Styles[11 + iIdx].szValue),L"size:%i",iValue); + StringCchPrintf(lexDefault.Styles[STY_X_LN_SPACE + iIdx].szValue,COUNTOF(lexDefault.Styles[STY_X_LN_SPACE + iIdx].szValue),L"size:%i",iValue); if (iValue % 2) { iAscent++; iValue--; @@ -3190,7 +3233,7 @@ void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew) else { SendMessage(hwnd,SCI_SETEXTRAASCENT,0,0); SendMessage(hwnd,SCI_SETEXTRADESCENT,0,0); - //wsprintf(lexDefault.Styles[11+iIdx].szValue,L"size:0"); + //wsprintf(lexDefault.Styles[STY_X_LN_SPACE + iIdx].szValue,L"size:0"); } { // set folding style; braces are for scoping only static const int iMarkerIDs[] = @@ -3341,16 +3384,16 @@ void Style_SetLongLineColors(HWND hwnd) int rgb; // Use 2nd default style - int iIdx = (bUse2ndDefaultStyle) ? 12 : 0; + int iIdx = (bUse2ndDefaultStyle) ? STY_CNT_LAST : 0; if (SendMessage(hwnd,SCI_GETEDGEMODE,0,0) == EDGE_LINE) { - if (Style_StrGetColor(TRUE,lexDefault.Styles[10+iIdx].szValue,&rgb)) // edge fore + if (Style_StrGetColor(TRUE,lexDefault.Styles[STY_LONG_LN_MRK + iIdx].szValue,&rgb)) // edge fore SendMessage(hwnd,SCI_SETEDGECOLOUR,rgb,0); else SendMessage(hwnd,SCI_SETEDGECOLOUR,GetSysColor(COLOR_3DLIGHT),0); } else { - if (Style_StrGetColor(FALSE,lexDefault.Styles[10+iIdx].szValue,&rgb)) // edge back + if (Style_StrGetColor(FALSE,lexDefault.Styles[STY_LONG_LN_MRK + iIdx].szValue,&rgb)) // edge back SendMessage(hwnd,SCI_SETEDGECOLOUR,rgb,0); else SendMessage(hwnd,SCI_SETEDGECOLOUR,GetSysColor(COLOR_3DLIGHT),0); @@ -3365,18 +3408,18 @@ void Style_SetLongLineColors(HWND hwnd) void Style_SetCurrentLineBackground(HWND hwnd) { // Use 2nd default style - int iIdx = (bUse2ndDefaultStyle) ? 12 : 0; + int iIdx = (bUse2ndDefaultStyle) ? STY_CNT_LAST : 0; if (bHiliteCurrentLine) { int rgb = 0; - if (Style_StrGetColor(FALSE,lexDefault.Styles[8+iIdx].szValue,&rgb)) // caret line back + if (Style_StrGetColor(FALSE,lexDefault.Styles[STY_CUR_LN_BCK + iIdx].szValue,&rgb)) // caret line back { SendMessage(hwnd,SCI_SETCARETLINEVISIBLE,TRUE,0); SendMessage(hwnd,SCI_SETCARETLINEBACK,rgb,0); - int iValue = 0; - if (Style_StrGetAlpha(lexDefault.Styles[8+iIdx].szValue,&iValue)) - SendMessage(hwnd,SCI_SETCARETLINEBACKALPHA,iValue,0); + int alpha = 0; + if (Style_StrGetAlpha(lexDefault.Styles[STY_CUR_LN_BCK + iIdx].szValue,&alpha)) + SendMessage(hwnd,SCI_SETCARETLINEBACKALPHA,alpha,0); else SendMessage(hwnd,SCI_SETCARETLINEBACKALPHA,SC_ALPHA_NOALPHA,0); } @@ -3388,6 +3431,46 @@ void Style_SetCurrentLineBackground(HWND hwnd) } +//============================================================================= +// +// Style_SetCurrentMargin() +// +void Style_SetCurrentMargin(HWND hwnd, BOOL bShowSelMargin) { + + int iIdx = (bUse2ndDefaultStyle) ? STY_CNT_LAST : 0; + + int alpha = 20; + Style_StrGetAlpha(lexDefault.Styles[STY_BOOK_MARK + iIdx].szValue, &alpha); + + int rgbFore = RGB(0xFF, 0, 0); // red + Style_StrGetColor(TRUE, lexDefault.Styles[STY_BOOK_MARK + iIdx].szValue, &rgbFore); + + int rgbBack = RGB(0, 0xFF, 0); // green + Style_StrGetColor(FALSE, lexDefault.Styles[STY_BOOK_MARK + iIdx].szValue, &rgbBack); + + // adjust background color by alpha in case of show margin + if (bShowSelMargin) { + //int bckgrnd = (int)SendMessage(hwnd, SCI_GETMARGINBACKN, MARGIN_NP3_BOOKMRK, 0); + int bckgrnd = RGB(0xF0, 0xF0, 0xF0); + Style_StrGetColor(FALSE, lexDefault.Styles[STY_MARGIN + iIdx].szValue, &bckgrnd); + rgbBack = Style_RgbAlpha(rgbBack, bckgrnd, min(0xFF, alpha + 50)); + } + SendMessage(hwnd, SCI_MARKERSETFORE, MARKER_NP3_BOOKMARK, rgbFore); + SendMessage(hwnd, SCI_MARKERSETBACK, MARKER_NP3_BOOKMARK, rgbBack); + SendMessage(hwnd, SCI_MARKERSETALPHA, MARKER_NP3_BOOKMARK, alpha); + + // Depending on if the margin is visible or not, choose different bookmark indication + if (bShowSelMargin) { + SendMessage(hwnd, SCI_MARKERDEFINE, MARKER_NP3_BOOKMARK, SC_MARK_BOOKMARK); + } + else { + SendMessage(hwnd, SCI_MARKERDEFINE, MARKER_NP3_BOOKMARK, SC_MARK_BACKGROUND); + } + //SendMessage(hwndEdit, SCI_SETMARGINWIDTHN, 2, 0); + SendMessage(hwnd, SCI_SETMARGINWIDTHN, MARGIN_NP3_BOOKMRK, (bShowSelMargin) ? 16 : 0); +} + + //============================================================================= // // Style_SniffShebang() @@ -3686,7 +3769,7 @@ void Style_SetLexerFromID(HWND hwnd,int id) // void Style_ToggleUse2ndDefault(HWND hwnd) { - bUse2ndDefaultStyle = (bUse2ndDefaultStyle) ? 0 : 1; + bUse2ndDefaultStyle = (bUse2ndDefaultStyle) ? FALSE : TRUE; Style_SetLexer(hwnd,pLexCurrent); } @@ -3697,10 +3780,10 @@ void Style_ToggleUse2ndDefault(HWND hwnd) // void Style_SetDefaultFont(HWND hwnd) { - int iIdx = (bUse2ndDefaultStyle) ? 12 : 0; + int iIdx = (bUse2ndDefaultStyle) ? STY_CNT_LAST : 0; if (Style_SelectFont(hwnd, - lexDefault.Styles[0+iIdx].szValue, - COUNTOF(lexDefault.Styles[0].szValue), + lexDefault.Styles[STY_DEFAULT + iIdx].szValue, + COUNTOF(lexDefault.Styles[STY_DEFAULT].szValue), TRUE)) { fStylesModified = TRUE; Style_SetLexer(hwnd,pLexCurrent); @@ -4962,7 +5045,6 @@ INT_PTR CALLBACK Style_ConfigDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lP if (!GetDlgItemText(hwnd,IDC_STYLEEDIT,pCurrentLexer->szExtensions,COUNTOF(pCurrentLexer->szExtensions))) StringCchCopy(pCurrentLexer->szExtensions,COUNTOF(pCurrentLexer->szExtensions),pCurrentLexer->pszDefExt); } - Style_SetLexer(hwndEdit,pLexCurrent); UpdateLineNumberWidth(); } diff --git a/src/Styles.h b/src/Styles.h index 979aee729..013165e13 100644 --- a/src/Styles.h +++ b/src/Styles.h @@ -19,6 +19,9 @@ #define BUFSIZE_STYLE_VALUE 256 #define BUFZIZE_STYLE_EXTENTIONS 512 +#define MARGIN_NP3_LINENUM 0 +#define MARGIN_NP3_BOOKMRK 1 + typedef struct _editstyle { #pragma warning(disable : 4201) // MS's Non-Std: Struktur/Union ohne Namen @@ -66,6 +69,7 @@ BOOL Style_Export(HWND); void Style_SetLexer(HWND,PEDITLEXER); void Style_SetLongLineColors(HWND); void Style_SetCurrentLineBackground(HWND); +void Style_SetCurrentMargin(HWND, BOOL); void Style_SetLexerFromFile(HWND,LPCWSTR); void Style_SetLexerFromName(HWND,LPCWSTR,LPCWSTR); void Style_SetDefaultLexer(HWND);