mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge branch 'Bookmark_Enhancements' into development
This commit is contained in:
commit
babebc43eb
11
src/Edit.c
11
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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
144
src/Notepad3.c
144
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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
BIN
src/Notepad3.rc
BIN
src/Notepad3.rc
Binary file not shown.
312
src/Styles.c
312
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(\
|
||||
(255 - alpha) * (int)GetRValue(rgbBack) / 255 + alpha * (int)GetRValue(rgbFore) / 255, \
|
||||
(255 - alpha) * (int)GetGValue(rgbBack) / 255 + alpha * (int)GetGValue(rgbFore) / 255, \
|
||||
(255 - alpha) * (int)GetBValue(rgbBack) / 255 + alpha * (int)GetBValue(rgbFore) / 255);
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
@ -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(255,0,0); // red
|
||||
Style_StrGetColor(TRUE, lexDefault.Styles[STY_BOOK_MARK + iIdx].szValue, &rgbFore);
|
||||
|
||||
int rgbBack = RGB(0,255,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(240,240,240);
|
||||
Style_StrGetColor(FALSE, lexDefault.Styles[STY_MARGIN + iIdx].szValue, &bckgrnd);
|
||||
rgbBack = Style_RgbAlpha(rgbBack, bckgrnd, alpha);
|
||||
}
|
||||
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();
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user