mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
Merge branch 'Dev_RC1' into Dev_DM_STD
This commit is contained in:
commit
c20cb096ea
@ -33,14 +33,14 @@ UCD - (UCD)ARDET is an Encoding Detector Library
|
||||
|
||||
|
||||
========================================================
|
||||
Current BETA/RC Version 5.21.525.(build_#) (2021-05-25)
|
||||
Current BETA/RC Version 5.21.527.(build_#) (2021-05-27)
|
||||
========================================================
|
||||
|
||||
--------------------------------------------------------
|
||||
NEW:
|
||||
--------------------------------------------------------
|
||||
[.###.#]- .
|
||||
[.525.1]- Add "Julia" lexer (new in Lexilla).
|
||||
[.525.1]- Add "Julia" lexer (new in Lexilla) (LEX).
|
||||
[.506.1]- Base64 Encoding/Decoding.
|
||||
[.428.1]- Custom ChooseColor resource definition.
|
||||
[.426.1]- Prepare Application Manifest for to grant Identity for non-package desktop apps.
|
||||
@ -72,7 +72,9 @@ NEW:
|
||||
CHANGES:
|
||||
--------------------------------------------------------
|
||||
[.###.#]- .
|
||||
[.525.1]- Update Lexilla Lib (bug fixes for Lexer: Markdown, Cmd/Batch).
|
||||
[.526.1]- Batch-Lexer + patching Markdown-Lexer (eolfilled header lines) (LEX).
|
||||
[.526.1]- Scheme-Dlg: dynamic (alloc) Style-Backup handling.
|
||||
[.525.1]- Update Lexilla Lib (bug fixes for Lexer: Markdown, Cmd/Batch) (LEX).
|
||||
[.515.1]- "grepWinNP3" based on current grepWin ver (boost v1.76 , upd: sktoolslib).
|
||||
[.515.1]- Add some more coding fonts to prefer over Consolas (if installed).
|
||||
[.515.1]- Linker: hardware-enforced stack-protection.
|
||||
@ -118,6 +120,10 @@ CHANGES:
|
||||
[.302.1]- Prevent Path to URL conversion, if Hyperlink RegEx pattern does not match.
|
||||
[.301.1]- Enable Dark Mode feature for Win10 v21H1 insider beta.
|
||||
[.301.1]- EOL-Mode: status-bar double-click : inverted cyclic change rotation CRLF -> LF -> CR.
|
||||
|
||||
--------------------------------------------------------
|
||||
CHANGES Versions in Tools or Libraries:
|
||||
--------------------------------------------------------
|
||||
[.515.1]- Update grepWinNP3 (GRE) version 2.1.7.37 (2021-05.14).
|
||||
[.525.1]- Update Oniguruma Regex (ONI) engine version 7.0.0 (2021-05-17).
|
||||
[.429.1]- Update Lexilla Library (LEX) version 5.0.2 (2021-04-23).
|
||||
@ -127,6 +133,8 @@ CHANGES:
|
||||
FIXES:
|
||||
--------------------------------------------------------
|
||||
[.###.#]- .
|
||||
[.527.1]- Correct handling of F/R dialog pattern combo-box dropdown list.
|
||||
[.527.1]- Minor fixes Markdown-Lexer.
|
||||
[.513.1]- Go to doc begin after global indentation change.
|
||||
[.513.1]- Minor enhancements for selection scroll to view.
|
||||
[.513.1]- Optimized handling of multi-step undo/redo notifications.
|
||||
|
||||
@ -1 +1 @@
|
||||
525
|
||||
527
|
||||
|
||||
@ -697,53 +697,53 @@ END
|
||||
//
|
||||
IDD_MUI_SYSFONT_WITHLINK DIALOGEX 13, 54, 243, 234
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Font"
|
||||
CAPTION "Betűtípus"
|
||||
FONT 9, "Segoe UI", 0, 0, 0x0
|
||||
BEGIN
|
||||
LTEXT "&Font:", stc1, 7, 7, 98, 9
|
||||
LTEXT "&Betűtípus:", stc1, 7, 7, 98, 9
|
||||
COMBOBOX cmb1, 7, 16, 98, 76,
|
||||
CBS_SIMPLE | CBS_AUTOHSCROLL | CBS_DISABLENOSCROLL |
|
||||
CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_HASSTRINGS |
|
||||
CBS_OWNERDRAWFIXED
|
||||
|
||||
LTEXT "Font st&yle:", stc2, 114, 7, 74, 9
|
||||
LTEXT "Betű &stílusa:", stc2, 114, 7, 74, 9
|
||||
COMBOBOX cmb2, 114, 16, 74, 76,
|
||||
CBS_SIMPLE | CBS_AUTOHSCROLL | CBS_DISABLENOSCROLL |
|
||||
WS_VSCROLL | WS_TABSTOP | CBS_HASSTRINGS |
|
||||
CBS_OWNERDRAWFIXED
|
||||
|
||||
LTEXT "&Size:", stc3, 198, 7, 36, 9
|
||||
LTEXT "&Méret:", stc3, 198, 7, 36, 9
|
||||
COMBOBOX cmb3, 198, 16, 36, 76,
|
||||
CBS_SIMPLE | CBS_AUTOHSCROLL | CBS_DISABLENOSCROLL |
|
||||
CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_HASSTRINGS |
|
||||
CBS_OWNERDRAWFIXED
|
||||
|
||||
GROUPBOX "Effects", grp1, 7, 97, 98, 76, WS_GROUP
|
||||
AUTOCHECKBOX "Stri&keout", chx1, 13, 111, 90, 10, WS_TABSTOP
|
||||
AUTOCHECKBOX "&Underline", chx2, 13, 127, 90, 10
|
||||
GROUPBOX "Effektusok", grp1, 7, 97, 98, 76, WS_GROUP
|
||||
AUTOCHECKBOX "Át&húzott", chx1, 13, 111, 90, 10, WS_TABSTOP
|
||||
AUTOCHECKBOX "&Aláhúzom", chx2, 13, 127, 90, 10
|
||||
|
||||
LTEXT "&Color:", stc4, 13, 144, 89, 9
|
||||
LTEXT "&Szín:", stc4, 13, 144, 89, 9
|
||||
COMBOBOX cmb4, 13, 155, 85, 100,
|
||||
CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL |
|
||||
CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
GROUPBOX "Sample", grp2, 114, 97, 120, 43, WS_GROUP
|
||||
GROUPBOX "Minta", grp2, 114, 97, 120, 43, WS_GROUP
|
||||
CTEXT "AaBbYyZz", stc5, 116, 106, 117, 33,
|
||||
SS_NOPREFIX | NOT WS_VISIBLE
|
||||
LTEXT "", stc6, 7, 178, 227, 20, SS_NOPREFIX | NOT WS_GROUP
|
||||
|
||||
LTEXT "Sc&ript:", stc7, 114, 145, 118, 9
|
||||
LTEXT "Í&rott:", stc7, 114, 145, 118, 9
|
||||
COMBOBOX cmb5, 114, 155, 120, 30, CBS_DROPDOWNLIST |
|
||||
CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_HASSTRINGS |
|
||||
WS_BORDER | WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
CONTROL "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink",
|
||||
CONTROL "<A>További betűtípusok</A>", IDC_MANAGE_LINK, "SysLink",
|
||||
WS_TABSTOP, 7, 199, 227, 9
|
||||
|
||||
DEFPUSHBUTTON "OK", IDOK, 141, 215, 45, 14, WS_GROUP
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 190, 215, 45, 14, WS_GROUP
|
||||
PUSHBUTTON "&Apply", psh3, 92, 215, 45, 14, WS_GROUP
|
||||
PUSHBUTTON "&Help", pshHelp, 43, 215, 45, 14, WS_GROUP
|
||||
PUSHBUTTON "Mégsem", IDCANCEL, 190, 215, 45, 14, WS_GROUP
|
||||
PUSHBUTTON "&Alkalmaz", psh3, 92, 215, 45, 14, WS_GROUP
|
||||
PUSHBUTTON "&Súgó", pshHelp, 43, 215, 45, 14, WS_GROUP
|
||||
END
|
||||
|
||||
|
||||
@ -753,25 +753,25 @@ END
|
||||
|
||||
IDD_MUI_SYSCOLOR_DLG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 2, 0, 298, 184
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Choose Color"
|
||||
CAPTION "Válasszon színt"
|
||||
FONT 9, "Segoe UI", 0, 0, 0x0
|
||||
BEGIN
|
||||
LTEXT "&Basic colors:", -1, 4, 4, 140, 9
|
||||
LTEXT "&Alap színek:", -1, 4, 4, 140, 9
|
||||
CONTROL "", COLOR_BOX1, "static",
|
||||
SS_SIMPLE | WS_CHILD | WS_TABSTOP | WS_GROUP,
|
||||
4, 14, 140, 86
|
||||
|
||||
LTEXT "&Custom colors:", -1, 4, 106, 140, 9
|
||||
LTEXT "&Egyéni színek:", -1, 4, 106, 140, 9
|
||||
CONTROL "", COLOR_CUSTOM1, "static",
|
||||
SS_SIMPLE | WS_CHILD | WS_TABSTOP | WS_GROUP,
|
||||
4, 116, 140, 28
|
||||
|
||||
PUSHBUTTON "&Define Custom Colors >>" COLOR_MIX, 4, 150, 138, 14,
|
||||
PUSHBUTTON "&Egyéni színek >>" COLOR_MIX, 4, 150, 138, 14,
|
||||
WS_TABSTOP | WS_GROUP
|
||||
|
||||
DEFPUSHBUTTON "OK", IDOK, 4, 166, 44, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Help", pshHelp, 100, 166, 44, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "Mégsem", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
|
||||
PUSHBUTTON "&Súgó", pshHelp, 100, 166, 44, 14, WS_GROUP | WS_TABSTOP
|
||||
|
||||
CONTROL "", COLOR_RAINBOW, "static",
|
||||
SS_SIMPLE | WS_CHILD, 152, 4, 118, 116
|
||||
@ -783,28 +783,28 @@ BEGIN
|
||||
SS_SIMPLE | WS_CHILD, 152, 124, 40, 26
|
||||
|
||||
PUSHBUTTON "&o", COLOR_SOLID, 300, 200, 4, 14, WS_GROUP
|
||||
RTEXT "Color", COLOR_SOLID_LEFT, 152, 151, 20, 9
|
||||
LTEXT "|S&olid", COLOR_SOLID_RIGHT, 172, 151, 20, 9
|
||||
RTEXT "Szín", COLOR_SOLID_LEFT, 152, 151, 20, 9
|
||||
LTEXT "|&Teli", COLOR_SOLID_RIGHT, 172, 151, 20, 9
|
||||
|
||||
RTEXT "Hu&e:", COLOR_HUEACCEL, 194, 126, 20, 9
|
||||
RTEXT "Árn&y.:", COLOR_HUEACCEL, 194, 126, 20, 9
|
||||
EDITTEXT, COLOR_HUE, 216, 124, 18, 12, WS_GROUP | WS_TABSTOP
|
||||
|
||||
RTEXT "&Sat:", COLOR_SATACCEL, 194, 140, 20, 9
|
||||
RTEXT "&Fény.:", COLOR_SATACCEL, 194, 140, 20, 9
|
||||
EDITTEXT, COLOR_SAT, 216, 138, 18, 12, WS_GROUP | WS_TABSTOP
|
||||
|
||||
RTEXT "&Lum:", COLOR_LUMACCEL, 194, 154, 20, 9
|
||||
EDITTEXT, COLOR_LUM, 216, 152, 18, 12, WS_GROUP | WS_TABSTOP
|
||||
|
||||
RTEXT "&Red:", COLOR_REDACCEL, 243, 126, 24, 9
|
||||
RTEXT "&Vörös:", COLOR_REDACCEL, 243, 126, 24, 9
|
||||
EDITTEXT, COLOR_RED, 269, 124, 18, 12, WS_GROUP | WS_TABSTOP
|
||||
|
||||
RTEXT "&Green:", COLOR_GREENACCEL, 243, 140, 24, 9
|
||||
RTEXT "&Zöld:", COLOR_GREENACCEL, 243, 140, 24, 9
|
||||
EDITTEXT, COLOR_GREEN, 269, 138, 18, 12, WS_GROUP | WS_TABSTOP
|
||||
|
||||
RTEXT "Bl&ue:", COLOR_BLUEACCEL, 243, 154, 24, 9
|
||||
RTEXT "&Kék:", COLOR_BLUEACCEL, 243, 154, 24, 9
|
||||
EDITTEXT, COLOR_BLUE, 269, 152, 18, 12, WS_GROUP | WS_TABSTOP
|
||||
|
||||
PUSHBUTTON "&Add to Custom Colors", COLOR_ADD, 152, 166, 142, 14,
|
||||
PUSHBUTTON "&Hozzáadás az egyéni színekhez", COLOR_ADD, 152, 166, 142, 14,
|
||||
WS_GROUP | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
||||
@ -469,7 +469,7 @@ BEGIN
|
||||
IDS_LEX_STR_63367 "Unicode-Point Hover"
|
||||
IDS_LEX_STR_63368 "2nd Unicode-Point Hover"
|
||||
IDS_LEX_STR_63369 "Interface"
|
||||
IDS_LEX_STR_63370 "Annotation"
|
||||
IDS_LEX_STR_63370 "Annotáció"
|
||||
IDS_LEX_STR_63371 "Comment Doc Word"
|
||||
END
|
||||
|
||||
|
||||
@ -77,10 +77,10 @@ BEGIN
|
||||
END
|
||||
POPUP "In&dítás"
|
||||
BEGIN
|
||||
MENUITEM "Keresés &fájlokban\tCtrl+Shift+F", IDM_GREP_WIN_SEARCH
|
||||
MENUITEM "Keresés &fájlokban\tCtrl+Shift+F", IDM_GREP_WIN_SEARCH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&New Empty Window\tAlt+N", IDM_FILE_NEWWINDOW
|
||||
MENUITEM "&Duplicate Instance\tAlt+Shift+N", IDM_FILE_NEWWINDOW2
|
||||
MENUITEM "&Új üres ablak\tAlt+N", IDM_FILE_NEWWINDOW
|
||||
MENUITEM "&Példány duplikálás\tAlt+Shift+N", IDM_FILE_NEWWINDOW2
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Emelt szinten indítás", IDM_FILE_LAUNCH_ELEVATED
|
||||
MENUITEM SEPARATOR
|
||||
@ -95,7 +95,7 @@ BEGIN
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Visszaállás fájlból\tF5", IDM_FILE_REVERT
|
||||
MENUITEM "&Ignore File-Vars", CMD_IGNORE_FILE_VARS
|
||||
MENUITEM "Fájl&változások kihagyása", CMD_IGNORE_FILE_VARS
|
||||
POPUP "&Kódolás"
|
||||
BEGIN
|
||||
POPUP "Visszaállás fájlból másként&"
|
||||
@ -210,12 +210,12 @@ BEGIN
|
||||
MENUITEM "&Behúzás", IDM_EDIT_INDENT
|
||||
MENUITEM "Behúzás törlése", IDM_EDIT_UNINDENT
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Line &Comment"
|
||||
POPUP "S&or megjegyzés"
|
||||
BEGIN
|
||||
MENUITEM "&Toggle\tCtrl+Q", IDM_EDIT_LINECOMMENT
|
||||
MENUITEM "&Add\tCtrl+Alt+Q", IDM_EDIT_LINECOMMENT_ADD
|
||||
MENUITEM "&Remove\tCtrl+Alt+Shift+Q", IDM_EDIT_LINECOMMENT_REMOVE
|
||||
MENUITEM "&Block Edit\tAlt+Shift+Q", IDM_EDIT_LINECOMMENT_BLOCKEDIT
|
||||
MENUITEM "&Váltás\tCtrl+Q", IDM_EDIT_LINECOMMENT
|
||||
MENUITEM "&Hozzáadás\tCtrl+Alt+Q", IDM_EDIT_LINECOMMENT_ADD
|
||||
MENUITEM "&Eltávolítás\tCtrl+Alt+Shift+Q", IDM_EDIT_LINECOMMENT_REMOVE
|
||||
MENUITEM "&Blokk szerkesztése\tAlt+Shift+Q", IDM_EDIT_LINECOMMENT_BLOCKEDIT
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Blokk megjegyzés\tCtrl+Shift+Q", IDM_EDIT_STREAMCOMMENT
|
||||
@ -263,9 +263,9 @@ BEGIN
|
||||
MENUITEM "Behúzás Tab&ulátorrá\tCtrl+Alt+T", IDM_EDIT_CONVERTSPACES2
|
||||
MENUITEM "Behúzás Tab-m&entes\tCtrl+Alt+S", IDM_EDIT_CONVERTTABS2
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Base&64 Encode", IDM_EDIT_BASE64ENCODE
|
||||
MENUITEM "Base6&4 Decode", IDM_EDIT_BASE64DECODE
|
||||
MENUITEM "Base64 Decode to codepage...", IDM_EDIT_B64DECODESEL
|
||||
MENUITEM "Base&64 kódolás", IDM_EDIT_BASE64ENCODE
|
||||
MENUITEM "Base6&4 dekódolás", IDM_EDIT_BASE64DECODE
|
||||
MENUITEM "Base64 dekódolás kódlapra...", IDM_EDIT_B64DECODESEL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&URL bekódolás\tCtrl+Shift+E", IDM_EDIT_URLENCODE
|
||||
MENUITEM "U&RL kikódolás\tCtrl+Shift+R", IDM_EDIT_URLDECODE
|
||||
|
||||
@ -196,10 +196,10 @@ BEGIN
|
||||
IDS_MUI_EXPORT_FAIL "Hiba a színkiemelések beállításainak exportálásakor ide ""%s""."
|
||||
IDS_MUI_REGEX_INVALID "Hiba a reguláris kifejezés feldolgozásakor. A kifejezés érvénytelen!"
|
||||
IDS_MUI_DROP_NO_FILE "Nem sikerült érvényes fájlnevet kapni.\nHa egy 32 bites alkalmazásból lett átdobva,\nkérem, ejtse újra a Notepad3 eszköztárra."
|
||||
IDS_MUI_URL_DIR_EXISTS "URL specified directory exists!"
|
||||
IDS_MUI_URL_FILE_EXISTS "URL specified file exists!"
|
||||
IDS_MUI_URL_DIR_EXISTS "Az URL-ben megadott könyvtár létezik!"
|
||||
IDS_MUI_URL_FILE_EXISTS "Az URL-ben megadott fájl létezik!"
|
||||
IDS_MUI_URL_PATH_NOT_FOUND
|
||||
"URL specified path not found!"
|
||||
"Az URL-ben megadott útvonal nem létezik!"
|
||||
IDS_MUI_URL_OPEN_FILE "\nAlt + Kattintás a fájl megnyitásához."
|
||||
IDS_MUI_URL_OPEN_BROWSER "\nCtrl + Kattintás a böngészőben való megnyitáshoz."
|
||||
IDS_MUI_INF_PRSVFILEMODTM
|
||||
@ -242,10 +242,10 @@ STRINGTABLE
|
||||
BEGIN
|
||||
IDS_MUI_TRANSL_AUTHOR "(hu-HU) Magyar fordítás: xsak"
|
||||
IDS_MUI_TITLE_FIXBASE "BASE (%s)"
|
||||
IDS_MUI_TITLE_RELCUR "+++ %s: %s Style +++"
|
||||
IDS_MUI_TITLE_FIXCUR "%s: %s Style"
|
||||
IDS_MUI_TITLE_RELARB "+++ Style '%s' (%s) +++"
|
||||
IDS_MUI_TITLE_FIXARB "Style '%s' (%s)"
|
||||
IDS_MUI_TITLE_RELCUR "+++ %s: %s Stílus +++"
|
||||
IDS_MUI_TITLE_FIXCUR "%s: %s Stílus"
|
||||
IDS_MUI_TITLE_RELARB "+++ Stílus '%s' (%s) +++"
|
||||
IDS_MUI_TITLE_FIXARB "Stílus '%s' (%s)"
|
||||
IDS_MUI_ASSOCIATED_EXT "Hozzárendelt kiterjesztések:"
|
||||
IDS_MUI_ZERO_LEN_MATCH "^ Nulla hosszú egyezés"
|
||||
IDS_MUI_GOTO_LINE "Sor (1 - %ti):"
|
||||
@ -272,13 +272,13 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_MUI_SB_MARK_ALL_OCC "Mark All Occurrences..."
|
||||
IDS_MUI_SB_TOGGLE_VIEW "Toggle View..."
|
||||
IDS_MUI_SB_REPLACE_ALL "Replace all..."
|
||||
IDS_MUI_SB_WRAP_LINES "Wrap Lines..."
|
||||
IDS_MUI_SB_CONV_LNBRK "Convert Line Breaks..."
|
||||
IDS_MUI_SB_RECODING_DOC "Recoding Document..."
|
||||
IDS_MUI_SB_LEXER_STYLING "Apply Lexer Styling..."
|
||||
IDS_MUI_SB_MARK_ALL_OCC "Minden találat jelölése..."
|
||||
IDS_MUI_SB_TOGGLE_VIEW "Nézet váltása..."
|
||||
IDS_MUI_SB_REPLACE_ALL "Összes cseréje..."
|
||||
IDS_MUI_SB_WRAP_LINES "Sorok törése..."
|
||||
IDS_MUI_SB_CONV_LNBRK "Sorvégek átalakítása..."
|
||||
IDS_MUI_SB_RECODING_DOC "Dokumentum újrakódolása..."
|
||||
IDS_MUI_SB_LEXER_STYLING "Lexer stílus alkalmazása..."
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
@ -379,4 +379,3 @@ END
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
|
||||
using namespace Lexilla;
|
||||
|
||||
static inline bool IsNewline(const int ch) {
|
||||
constexpr bool IsNewline(const int ch) {
|
||||
return (ch == '\n' || ch == '\r');
|
||||
}
|
||||
|
||||
@ -135,36 +135,45 @@ static bool HasPrevLineContent(StyleContext &sc) {
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool AtTermStart(StyleContext &sc) {
|
||||
constexpr bool AtTermStart(StyleContext &sc) {
|
||||
return sc.currentPos == 0 || sc.chPrev == 0 || isspacechar(sc.chPrev);
|
||||
}
|
||||
|
||||
static bool IsValidHrule(const Sci_PositionU endPos, StyleContext &sc) {
|
||||
static bool IsValidHrule(const Sci_PositionU endPos, StyleContext& sc) {
|
||||
int count = 1;
|
||||
Sci_PositionU i = 0;
|
||||
for (;;) {
|
||||
++i;
|
||||
int c = sc.GetRelative(i);
|
||||
if (c == sc.ch)
|
||||
int const ch = sc.GetRelative(i);
|
||||
if (ch == sc.ch)
|
||||
++count;
|
||||
// hit a terminating character
|
||||
else if (!IsASpaceOrTab(c) || sc.currentPos + i == endPos) {
|
||||
else if (!IsASpaceOrTab(ch) || (sc.currentPos + i) == endPos) {
|
||||
// Are we a valid HRULE
|
||||
if ((IsNewline(c) || sc.currentPos + i == endPos) &&
|
||||
count >= 3 && !HasPrevLineContent(sc)) {
|
||||
if ((IsNewline(ch) || (sc.currentPos + i) == endPos) &&
|
||||
count >= 3 && !HasPrevLineContent(sc)) {
|
||||
sc.SetState(SCE_MARKDOWN_HRULE);
|
||||
sc.Forward(i);
|
||||
sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
//@@@sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
sc.SetState(SCE_MARKDOWN_DEFAULT);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
sc.SetState(SCE_MARKDOWN_DEFAULT);
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
constexpr bool IsInHeaderState(const int state) {
|
||||
return (
|
||||
state == SCE_MARKDOWN_HEADER1 || state == SCE_MARKDOWN_HEADER2 ||
|
||||
state == SCE_MARKDOWN_HEADER3 || state == SCE_MARKDOWN_HEADER4 ||
|
||||
state == SCE_MARKDOWN_HEADER5 || state == SCE_MARKDOWN_HEADER6
|
||||
);
|
||||
}
|
||||
|
||||
static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,
|
||||
WordList **, Accessor &styler) {
|
||||
Sci_PositionU endPos = startPos + length;
|
||||
@ -178,16 +187,21 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int
|
||||
StyleContext sc(startPos, length, initStyle, styler);
|
||||
|
||||
while (sc.More()) {
|
||||
|
||||
// Skip past escaped characters
|
||||
if (sc.ch == '\\') {
|
||||
sc.Forward();
|
||||
continue;
|
||||
}
|
||||
|
||||
// A blockquotes resets the line semantics
|
||||
if (sc.state == SCE_MARKDOWN_BLOCKQUOTE)
|
||||
if (IsInHeaderState(sc.state) && sc.atLineStart) {
|
||||
sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
}
|
||||
|
||||
// A blockquotes resets the line semantics
|
||||
if (sc.state == SCE_MARKDOWN_BLOCKQUOTE) {
|
||||
sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
}
|
||||
// Conditional state-based actions
|
||||
if (sc.state == SCE_MARKDOWN_CODE2) {
|
||||
if (sc.Match("``") && sc.GetRelative(-2) != ' ') {
|
||||
@ -263,24 +277,36 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int
|
||||
}
|
||||
else if (sc.state == SCE_MARKDOWN_LINE_BEGIN) {
|
||||
// Header
|
||||
if (sc.Match("######"))
|
||||
if (sc.Match("######")) {
|
||||
SetStateAndZoom(SCE_MARKDOWN_HEADER6, 6, '#', sc);
|
||||
else if (sc.Match("#####"))
|
||||
freezeCursor = true;
|
||||
}
|
||||
else if (sc.Match("#####")) {
|
||||
SetStateAndZoom(SCE_MARKDOWN_HEADER5, 5, '#', sc);
|
||||
else if (sc.Match("####"))
|
||||
SetStateAndZoom(SCE_MARKDOWN_HEADER4, 4, '#', sc);
|
||||
else if (sc.Match("###"))
|
||||
freezeCursor = true;
|
||||
}
|
||||
else if (sc.Match("####")) {
|
||||
SetStateAndZoom(SCE_MARKDOWN_HEADER4, 4, '#', sc);
|
||||
freezeCursor = true;
|
||||
}
|
||||
else if (sc.Match("###")) {
|
||||
SetStateAndZoom(SCE_MARKDOWN_HEADER3, 3, '#', sc);
|
||||
else if (sc.Match("##"))
|
||||
freezeCursor = true;
|
||||
}
|
||||
else if (sc.Match("##")) {
|
||||
SetStateAndZoom(SCE_MARKDOWN_HEADER2, 2, '#', sc);
|
||||
freezeCursor = true;
|
||||
}
|
||||
else if (sc.Match("#")) {
|
||||
// Catch the special case of an unordered list
|
||||
if (sc.chNext == '.' && IsASpaceOrTab(sc.GetRelative(2))) {
|
||||
precharCount = 0;
|
||||
sc.SetState(SCE_MARKDOWN_PRECHAR);
|
||||
}
|
||||
else
|
||||
else {
|
||||
SetStateAndZoom(SCE_MARKDOWN_HEADER1, 1, '#', sc);
|
||||
freezeCursor = true;
|
||||
}
|
||||
}
|
||||
// Code block
|
||||
else if (sc.Match("~~~")) {
|
||||
@ -303,20 +329,22 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int
|
||||
sc.SetState(SCE_MARKDOWN_PRECHAR);
|
||||
}
|
||||
}
|
||||
else if (IsNewline(sc.ch))
|
||||
sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
else if (sc.atLineEnd) {
|
||||
sc.ForwardSetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
freezeCursor = true;
|
||||
}
|
||||
else {
|
||||
precharCount = 0;
|
||||
sc.SetState(SCE_MARKDOWN_PRECHAR);
|
||||
}
|
||||
}
|
||||
|
||||
// The header lasts until the newline
|
||||
else if (sc.state == SCE_MARKDOWN_HEADER1 || sc.state == SCE_MARKDOWN_HEADER2 ||
|
||||
sc.state == SCE_MARKDOWN_HEADER3 || sc.state == SCE_MARKDOWN_HEADER4 ||
|
||||
sc.state == SCE_MARKDOWN_HEADER5 || sc.state == SCE_MARKDOWN_HEADER6) {
|
||||
if (IsNewline(sc.ch))
|
||||
sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
// The header lasts beyond the newline (eolfilled)
|
||||
else if (IsInHeaderState(sc.state)) {
|
||||
if (sc.atLineEnd) {
|
||||
sc.ForwardSetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
freezeCursor = true;
|
||||
}
|
||||
}
|
||||
|
||||
// New state only within the initial whitespace
|
||||
@ -427,14 +455,16 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int
|
||||
sc.Forward();
|
||||
}
|
||||
// Beginning of line
|
||||
else if (IsNewline(sc.ch)) {
|
||||
sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
else if (sc.atLineEnd) {
|
||||
sc.ForwardSetState(SCE_MARKDOWN_LINE_BEGIN);
|
||||
freezeCursor = true;
|
||||
}
|
||||
}
|
||||
// Advance if not holding back the cursor for this iteration.
|
||||
if (!freezeCursor)
|
||||
sc.Forward();
|
||||
freezeCursor = false;
|
||||
else
|
||||
freezeCursor = false;
|
||||
}
|
||||
sc.Complete();
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<assemblyIdentity
|
||||
name="Rizonesoft.Notepad3"
|
||||
processorArchitecture="*"
|
||||
version="5.21.525.1"
|
||||
version="5.21.527.1"
|
||||
type="win32"
|
||||
/>
|
||||
<description>Notepad3 beta</description>
|
||||
|
||||
@ -73,7 +73,7 @@ constexpr bool CheckBuildNumber(DWORD buildNumber)
|
||||
case 19042: // Win10 v20H2
|
||||
case 19043: // Win10 v21H1 Insider Beta and Release Preview Channels [2021-04-28]
|
||||
// unknown, if working with these version(s) :-O
|
||||
case 21387: // Win10 v21H2 Insider Dev Channel [2021-05-18]
|
||||
case 21390: // Win10 v21H2 Insider Dev Channel [2021-05-21]
|
||||
return true;
|
||||
default:
|
||||
// not supported
|
||||
|
||||
@ -4970,18 +4970,21 @@ void SetWindowReadingRTL(HWND hwnd, bool bRTL)
|
||||
// A2W: Convert Dialog Item Text form Unicode to UTF-8 and vice versa
|
||||
//
|
||||
|
||||
UINT ComboBox_GetTextLenth(HWND hDlg, int nIDDlgItem)
|
||||
UINT ComboBox_GetTextLengthEx(HWND hDlg, int nIDDlgItem)
|
||||
{
|
||||
return (UINT)ComboBox_GetTextLength(GetDlgItem(hDlg, nIDDlgItem));
|
||||
}
|
||||
|
||||
UINT ComboBox_GetTextW2MB(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount)
|
||||
{
|
||||
UINT ComboBox_GetCurSelEx(HWND hDlg, int nIDDlgItem) {
|
||||
return (UINT)ComboBox_GetCurSel(GetDlgItem(hDlg, nIDDlgItem));
|
||||
}
|
||||
|
||||
UINT ComboBox_GetTextW2MB(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount) {
|
||||
WCHAR wsz[FNDRPL_BUFFER] = { L'\0' };
|
||||
HWND const hwndCtl = GetDlgItem(hDlg, nIDDlgItem);
|
||||
UINT const uRet = (UINT)ComboBox_GetTextLength(hwndCtl);
|
||||
int const idx = ComboBox_GetCurSel(hwndCtl);
|
||||
if (-1 != idx) {
|
||||
if (idx >= 0) {
|
||||
if (uRet < COUNTOF(wsz)) {
|
||||
ComboBox_GetLBText(hwndCtl, ComboBox_GetCurSel(hwndCtl), wsz);
|
||||
}
|
||||
@ -5001,13 +5004,14 @@ void ComboBox_SetTextMB2W(HWND hDlg, int nIDDlgItem, LPCSTR lpString)
|
||||
//return SetDlgItemText(hDlg, nIDDlgItem, wsz);
|
||||
}
|
||||
|
||||
LRESULT ComboBox_AddStringMB2W(HWND hwnd, LPCSTR lpString)
|
||||
#if 0
|
||||
void ComboBox_AddStringMB2W(HWND hDlg, int nIDDlgItem, LPCSTR lpString)
|
||||
{
|
||||
WCHAR wsz[FNDRPL_BUFFER] = { L'\0' };
|
||||
MultiByteToWideChar(Encoding_SciCP, 0, lpString, -1, wsz, (int)COUNTOF(wsz));
|
||||
return SendMessageW(hwnd, CB_ADDSTRING, 0, (LPARAM)wsz);
|
||||
ComboBox_AddString(GetDlgItem(hDlg, nIDDlgItem), wsz);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
|
||||
@ -89,10 +89,11 @@ void SetWindowTransparentMode(HWND hwnd, bool bTransparentMode, int iOpacityLeve
|
||||
void SetWindowLayoutRTL(HWND hwnd, bool bRTL);
|
||||
void SetWindowReadingRTL(HWND hwnd, bool bRTL);
|
||||
|
||||
UINT ComboBox_GetTextLenth(HWND hDlg, int nIDDlgItem);
|
||||
UINT ComboBox_GetTextLengthEx(HWND hDlg, int nIDDlgItem);
|
||||
UINT ComboBox_GetCurSelEx(HWND hDlg, int nIDDlgItem);
|
||||
UINT ComboBox_GetTextW2MB(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount);
|
||||
void ComboBox_SetTextMB2W(HWND hDlg, int nIDDlgItem, LPCSTR lpString);
|
||||
LRESULT ComboBox_AddStringMB2W(HWND hwnd, LPCSTR lpString);
|
||||
//void ComboBox_AddStringMB2W(HWND hDlg, int nIDDlgItem, LPCSTR lpString);
|
||||
|
||||
POINT GetCenterOfDlgInParent(const RECT* rcDlg, const RECT* rcParent);
|
||||
HWND GetParentOrDesktop(HWND hDlg);
|
||||
|
||||
411
src/Edit.c
411
src/Edit.c
@ -5442,196 +5442,194 @@ void EditGetExcerpt(HWND hwnd,LPWSTR lpszExcerpt,DWORD cchExcerpt)
|
||||
//
|
||||
static void _SetSearchFlags(HWND hwnd, LPEDITFINDREPLACE lpefr)
|
||||
{
|
||||
if (lpefr) {
|
||||
if (hwnd) {
|
||||
char szBuf[FNDRPL_BUFFER] = { '\0' };
|
||||
bool bIsFindDlg = (GetDlgItem(Globals.hwndDlgFindReplace, IDC_REPLACE) == NULL);
|
||||
if (hwnd && lpefr) {
|
||||
|
||||
ComboBox_GetTextW2MB(hwnd, IDC_FINDTEXT, szBuf, COUNTOF(szBuf));
|
||||
if (StringCchCompareXA(szBuf, lpefr->szFind) != 0) {
|
||||
StringCchCopyA(lpefr->szFind, COUNTOF(lpefr->szFind), szBuf);
|
||||
char szBuf[FNDRPL_BUFFER] = { '\0' };
|
||||
bool bIsFindDlg = (GetDlgItem(Globals.hwndDlgFindReplace, IDC_REPLACE) == NULL);
|
||||
|
||||
ComboBox_GetTextW2MB(hwnd, IDC_FINDTEXT, szBuf, COUNTOF(szBuf));
|
||||
if (StringCchCompareXA(szBuf, lpefr->szFind) != 0) {
|
||||
StringCchCopyA(lpefr->szFind, COUNTOF(lpefr->szFind), szBuf);
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
|
||||
ComboBox_GetTextW2MB(hwnd, IDC_REPLACETEXT, szBuf, COUNTOF(szBuf));
|
||||
if (StringCchCompareXA(szBuf, lpefr->szReplace) != 0) {
|
||||
StringCchCopyA(lpefr->szReplace, COUNTOF(lpefr->szReplace), szBuf);
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
|
||||
bool bIsFlagSet = ((lpefr->fuFlags & SCFIND_MATCHCASE) != 0);
|
||||
if (IsButtonChecked(hwnd, IDC_FINDCASE)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->fuFlags |= SCFIND_MATCHCASE;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
|
||||
ComboBox_GetTextW2MB(hwnd, IDC_REPLACETEXT, szBuf, COUNTOF(szBuf));
|
||||
if (StringCchCompareXA(szBuf, lpefr->szReplace) != 0) {
|
||||
StringCchCopyA(lpefr->szReplace, COUNTOF(lpefr->szReplace), szBuf);
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->fuFlags &= ~(SCFIND_MATCHCASE);
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
bIsFlagSet = ((lpefr->fuFlags & SCFIND_WHOLEWORD) != 0);
|
||||
if (IsButtonChecked(hwnd, IDC_FINDWORD)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->fuFlags |= SCFIND_WHOLEWORD;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->fuFlags &= ~(SCFIND_WHOLEWORD);
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool bIsFlagSet = ((lpefr->fuFlags & SCFIND_MATCHCASE) != 0);
|
||||
if (IsButtonChecked(hwnd, IDC_FINDCASE)) {
|
||||
bIsFlagSet = ((lpefr->fuFlags & SCFIND_WORDSTART) != 0);
|
||||
if (IsButtonChecked(hwnd, IDC_FINDSTART)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->fuFlags |= SCFIND_WORDSTART;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->fuFlags &= ~(SCFIND_WORDSTART);
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
bIsFlagSet = lpefr->bRegExprSearch;
|
||||
if (IsButtonChecked(hwnd, IDC_FINDREGEXP)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bRegExprSearch = true;
|
||||
lpefr->fuFlags |= SCFIND_REGEXP;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bRegExprSearch = false;
|
||||
lpefr->fuFlags &= ~SCFIND_REGEXP;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsDialogControlEnabled(hwnd, IDC_DOT_MATCH_ALL)) {
|
||||
bIsFlagSet = ((lpefr->fuFlags & SCFIND_DOT_MATCH_ALL) != 0);
|
||||
if (IsButtonChecked(hwnd, IDC_DOT_MATCH_ALL)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->fuFlags |= SCFIND_MATCHCASE;
|
||||
lpefr->fuFlags |= SCFIND_DOT_MATCH_ALL;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->fuFlags &= ~(SCFIND_MATCHCASE);
|
||||
lpefr->fuFlags &= ~SCFIND_DOT_MATCH_ALL;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bIsFlagSet = ((lpefr->fuFlags & SCFIND_WHOLEWORD) != 0);
|
||||
if (IsButtonChecked(hwnd, IDC_FINDWORD)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->fuFlags |= SCFIND_WHOLEWORD;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->fuFlags &= ~(SCFIND_WHOLEWORD);
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
// force consistency
|
||||
if (lpefr->bRegExprSearch) {
|
||||
CheckDlgButton(hwnd, IDC_WILDCARDSEARCH, BST_UNCHECKED);
|
||||
}
|
||||
bIsFlagSet = lpefr->bWildcardSearch;
|
||||
if (IsButtonChecked(hwnd, IDC_WILDCARDSEARCH)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bWildcardSearch = true;
|
||||
lpefr->fuFlags |= SCFIND_REGEXP; // Wildcard search based on RegExpr
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
|
||||
bIsFlagSet = ((lpefr->fuFlags & SCFIND_WORDSTART) != 0);
|
||||
if (IsButtonChecked(hwnd, IDC_FINDSTART)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->fuFlags |= SCFIND_WORDSTART;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->fuFlags &= ~(SCFIND_WORDSTART);
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
bIsFlagSet = lpefr->bRegExprSearch;
|
||||
if (IsButtonChecked(hwnd, IDC_FINDREGEXP)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bRegExprSearch = true;
|
||||
lpefr->fuFlags |= SCFIND_REGEXP;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bRegExprSearch = false;
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bWildcardSearch = false;
|
||||
if (!(lpefr->bRegExprSearch)) {
|
||||
lpefr->fuFlags &= ~SCFIND_REGEXP;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsDialogControlEnabled(hwnd, IDC_DOT_MATCH_ALL)) {
|
||||
bIsFlagSet = ((lpefr->fuFlags & SCFIND_DOT_MATCH_ALL) != 0);
|
||||
if (IsButtonChecked(hwnd, IDC_DOT_MATCH_ALL)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->fuFlags |= SCFIND_DOT_MATCH_ALL;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->fuFlags &= ~SCFIND_DOT_MATCH_ALL;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
bIsFlagSet = lpefr->bOverlappingFind;
|
||||
if (IsButtonChecked(hwnd, IDC_FIND_OVERLAPPING)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bOverlappingFind = true;
|
||||
lpefr->bStateChanged = false; // no effect on state
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bOverlappingFind = false;
|
||||
lpefr->bStateChanged = false; // no effect on state
|
||||
}
|
||||
}
|
||||
|
||||
// force consistency
|
||||
if (lpefr->bRegExprSearch) {
|
||||
CheckDlgButton(hwnd, IDC_WILDCARDSEARCH, BST_UNCHECKED);
|
||||
bIsFlagSet = lpefr->bNoFindWrap;
|
||||
if (IsButtonChecked(hwnd, IDC_NOWRAP)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bNoFindWrap = true;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
bIsFlagSet = lpefr->bWildcardSearch;
|
||||
if (IsButtonChecked(hwnd, IDC_WILDCARDSEARCH)) {
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bNoFindWrap = false;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
bIsFlagSet = lpefr->bMarkOccurences;
|
||||
if (IsButtonChecked(hwnd, IDC_ALL_OCCURRENCES)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bMarkOccurences = true;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bMarkOccurences = false;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsDialogControlEnabled(hwnd, IDC_FINDTRANSFORMBS)) {
|
||||
bIsFlagSet = lpefr->bTransformBS;
|
||||
if (IsButtonChecked(hwnd, IDC_FINDTRANSFORMBS)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bWildcardSearch = true;
|
||||
lpefr->fuFlags |= SCFIND_REGEXP; // Wildcard search based on RegExpr
|
||||
lpefr->bTransformBS = true;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bWildcardSearch = false;
|
||||
if (!(lpefr->bRegExprSearch)) {
|
||||
lpefr->fuFlags &= ~SCFIND_REGEXP;
|
||||
}
|
||||
lpefr->bTransformBS = false;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bIsFlagSet = lpefr->bOverlappingFind;
|
||||
if (IsButtonChecked(hwnd, IDC_FIND_OVERLAPPING)) {
|
||||
if (bIsFindDlg) {
|
||||
bIsFlagSet = lpefr->bFindClose;
|
||||
if (IsButtonChecked(hwnd, IDC_FINDCLOSE)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bOverlappingFind = true;
|
||||
lpefr->bStateChanged = false; // no effect on state
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bOverlappingFind = false;
|
||||
lpefr->bStateChanged = false; // no effect on state
|
||||
}
|
||||
}
|
||||
|
||||
bIsFlagSet = lpefr->bNoFindWrap;
|
||||
if (IsButtonChecked(hwnd, IDC_NOWRAP)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bNoFindWrap = true;
|
||||
lpefr->bFindClose = true;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bNoFindWrap = false;
|
||||
lpefr->bFindClose = false;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
bIsFlagSet = lpefr->bMarkOccurences;
|
||||
if (IsButtonChecked(hwnd, IDC_ALL_OCCURRENCES)) {
|
||||
} else { // replace close
|
||||
bIsFlagSet = lpefr->bReplaceClose;
|
||||
if (IsButtonChecked(hwnd, IDC_FINDCLOSE)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bMarkOccurences = true;
|
||||
lpefr->bReplaceClose = true;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bMarkOccurences = false;
|
||||
lpefr->bReplaceClose = false;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsDialogControlEnabled(hwnd, IDC_FINDTRANSFORMBS)) {
|
||||
bIsFlagSet = lpefr->bTransformBS;
|
||||
if (IsButtonChecked(hwnd, IDC_FINDTRANSFORMBS)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bTransformBS = true;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bTransformBS = false;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bIsFindDlg) {
|
||||
bIsFlagSet = lpefr->bFindClose;
|
||||
if (IsButtonChecked(hwnd, IDC_FINDCLOSE)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bFindClose = true;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bFindClose = false;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
} else { // replace close
|
||||
bIsFlagSet = lpefr->bReplaceClose;
|
||||
if (IsButtonChecked(hwnd, IDC_FINDCLOSE)) {
|
||||
if (!bIsFlagSet) {
|
||||
lpefr->bReplaceClose = true;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
} else {
|
||||
if (bIsFlagSet) {
|
||||
lpefr->bReplaceClose = false;
|
||||
lpefr->bStateChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // if hwnd
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5895,6 +5893,29 @@ static void _ShowZeroLengthCallTip(DocPos iPosition)
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// _EnableFRDlgCtrls()
|
||||
//
|
||||
static bool _EnableFRDlgCtrls(HWND hwnd) {
|
||||
|
||||
//bool const bEmptyFnd = (ComboBox_GetTextLengthEx(hwnd, IDC_FINDTEXT) == 0 || ComboBox_GetCurSelEx(hwnd, IDC_FINDTEXT) != CB_ERR);
|
||||
//bool const bEmptyRpl = (ComboBox_GetTextLengthEx(hwnd, IDC_REPLACETEXT) == 0 || ComboBox_GetCurSelEx(hwnd, IDC_REPLACETEXT) != CB_ERR);
|
||||
bool const bEmptyFnd = ComboBox_GetTextLengthEx(hwnd, IDC_FINDTEXT) == 0;
|
||||
bool const bEmptyRpl = ComboBox_GetTextLengthEx(hwnd, IDC_REPLACETEXT) == 0;
|
||||
bool const bEmptySel = !(SciCall_IsSelectionEmpty() || Sci_IsMultiOrRectangleSelection());
|
||||
|
||||
DialogEnableControl(hwnd, IDOK, !bEmptyFnd);
|
||||
DialogEnableControl(hwnd, IDC_FINDPREV, !bEmptyFnd);
|
||||
DialogEnableControl(hwnd, IDC_REPLACE, !bEmptyFnd);
|
||||
DialogEnableControl(hwnd, IDC_REPLACEALL, !bEmptyFnd);
|
||||
DialogEnableControl(hwnd, IDC_REPLACEINSEL, !bEmptyFnd && !bEmptySel);
|
||||
DialogEnableControl(hwnd, IDC_SWAPSTRG, !bEmptyFnd || !bEmptyRpl);
|
||||
|
||||
return !bEmptyFnd;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// EditFindReplaceDlgProc()
|
||||
@ -6339,79 +6360,88 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
|
||||
case IDC_FINDTEXT:
|
||||
case IDC_REPLACETEXT: {
|
||||
|
||||
bool bPatternChanged = false;
|
||||
bool bFndPatternChanged = s_pEfrDataDlg->bStateChanged;
|
||||
|
||||
switch (HIWORD(wParam)) {
|
||||
|
||||
case CBN_CLOSEUP: {
|
||||
LONG lSelEnd = 0;
|
||||
SendDlgItemMessage(hwnd, LOWORD(wParam), CB_GETEDITSEL, 0, (LPARAM)&lSelEnd);
|
||||
SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETEDITSEL, 0, MAKELPARAM(lSelEnd, lSelEnd));
|
||||
}
|
||||
break;
|
||||
|
||||
case CBN_EDITUPDATE:
|
||||
if (SendDlgItemMessage(hwnd, LOWORD(wParam), CB_GETDROPPEDSTATE, 0, 0)) {
|
||||
//~SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETCURSEL, (WPARAM)-1, 0); // clear
|
||||
SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SHOWDROPDOWN, 0, 0); // hide
|
||||
}
|
||||
break;
|
||||
|
||||
case CBN_SELCHANGE: {
|
||||
LRESULT const cursel = SendDlgItemMessage(hwnd, LOWORD(wParam), CB_GETCURSEL, 0, 0);
|
||||
if (cursel != CB_ERR) {
|
||||
SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETCURSEL, (WPARAM)cursel, 0);
|
||||
}
|
||||
}
|
||||
// [fallthrough]
|
||||
case CBN_SELENDOK:
|
||||
case CBN_EDITCHANGE:
|
||||
bFndPatternChanged = (LOWORD(wParam) == IDC_FINDTEXT);
|
||||
LPSTR const buffer = bFndPatternChanged ? s_pEfrDataDlg->szFind : s_pEfrDataDlg->szReplace;
|
||||
ComboBox_GetTextW2MB(hwnd, LOWORD(wParam), buffer, FNDRPL_BUFFER);
|
||||
if (bFndPatternChanged) {
|
||||
SetFindPatternMB(s_pEfrDataDlg->szFind);
|
||||
}
|
||||
break;
|
||||
|
||||
case CBN_KILLFOCUS:
|
||||
case CBN_SELENDCANCEL:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (Globals.bFindReplCopySelOrClip) {
|
||||
char* lpszSelection = NULL;
|
||||
char *lpszSelection = NULL;
|
||||
DocPos const cchSelection = SciCall_GetSelText(NULL);
|
||||
if ((cchSelection > 1) && (LOWORD(wParam) != IDC_REPLACETEXT)) {
|
||||
lpszSelection = AllocMem(cchSelection + 1, HEAP_ZERO_MEMORY);
|
||||
SciCall_GetSelText(lpszSelection);
|
||||
} else { // (cchSelection <= 1)
|
||||
// nothing is selected in the editor:
|
||||
// if first time you bring up find/replace dialog,
|
||||
// use most recent search pattern to find box
|
||||
lpszSelection = AllocMem(FNDRPL_BUFFER, HEAP_ZERO_MEMORY);
|
||||
if (lpszSelection) {
|
||||
// if first time you bring up find/replace dialog,
|
||||
// use most recent search pattern to find box
|
||||
// in case of no history: paste clipboard
|
||||
_EditGetFindStrg(Globals.hwndEdit, s_pEfrDataDlg, lpszSelection, SizeOfMem(lpszSelection));
|
||||
}
|
||||
}
|
||||
|
||||
if (lpszSelection) {
|
||||
ComboBox_SetTextMB2W(hwnd, IDC_FINDTEXT, lpszSelection);
|
||||
FreeMem(lpszSelection);
|
||||
lpszSelection = NULL;
|
||||
bPatternChanged = true;
|
||||
bFndPatternChanged = true;
|
||||
}
|
||||
s_InitialTopLine = -1; // reset
|
||||
s_InitialTopLine = -1; // reset
|
||||
s_anyMatch = NO_MATCH;
|
||||
Globals.bFindReplCopySelOrClip = false;
|
||||
|
||||
} // Globals.bFindReplCopySelOrClip
|
||||
|
||||
switch (HIWORD(wParam)) {
|
||||
case CBN_CLOSEUP:
|
||||
case CBN_EDITCHANGE:
|
||||
bPatternChanged = (LOWORD(wParam) == IDC_FINDTEXT);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
// ------------------------
|
||||
if (!bFndPatternChanged) {
|
||||
break; // return
|
||||
}
|
||||
// ------------------------
|
||||
|
||||
if (!bPatternChanged) {
|
||||
break;
|
||||
}
|
||||
|
||||
bool const bEmptyFnd = (ComboBox_GetTextLenth(hwnd, IDC_FINDTEXT) ||
|
||||
CB_ERR != SendDlgItemMessage(hwnd, IDC_FINDTEXT, CB_GETCURSEL, 0, 0));
|
||||
|
||||
bool const bEmptyRpl = (ComboBox_GetTextLenth(hwnd, IDC_REPLACETEXT) ||
|
||||
CB_ERR != SendDlgItemMessage(hwnd, IDC_REPLACETEXT, CB_GETCURSEL, 0, 0));
|
||||
|
||||
bool const bEmptySel = !(SciCall_IsSelectionEmpty() || Sci_IsMultiOrRectangleSelection());
|
||||
|
||||
DialogEnableControl(hwnd, IDOK, bEmptyFnd);
|
||||
DialogEnableControl(hwnd, IDC_FINDPREV, bEmptyFnd);
|
||||
DialogEnableControl(hwnd, IDC_REPLACE, bEmptyFnd);
|
||||
DialogEnableControl(hwnd, IDC_REPLACEALL, bEmptyFnd);
|
||||
DialogEnableControl(hwnd, IDC_REPLACEINSEL, bEmptyFnd && bEmptySel);
|
||||
DialogEnableControl(hwnd, IDC_SWAPSTRG, bEmptyFnd || bEmptyRpl);
|
||||
|
||||
if (!bEmptyFnd) {
|
||||
if (_EnableFRDlgCtrls(hwnd)) {
|
||||
s_anyMatch = NO_MATCH;
|
||||
EditSetSelectionEx(s_InitialAnchorPos, s_InitialCaretPos, -1, -1);
|
||||
}
|
||||
|
||||
if (HIWORD(wParam) == CBN_CLOSEUP) {
|
||||
LONG lSelEnd = 0;
|
||||
SendDlgItemMessage(hwnd, LOWORD(wParam), CB_GETEDITSEL, 0, (LPARAM)&lSelEnd);
|
||||
SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETEDITSEL, 0, MAKELPARAM(lSelEnd, lSelEnd));
|
||||
}
|
||||
|
||||
_SetSearchFlags(hwnd, s_pEfrDataDlg);
|
||||
|
||||
if (StrIsEmptyA(s_pEfrDataDlg->szFind)) {
|
||||
SetFindPattern(L"");
|
||||
}
|
||||
SetFindPatternMB(s_pEfrDataDlg->szFind);
|
||||
|
||||
DocPos start = s_InitialSearchStart;
|
||||
DocPos end = Sci_GetDocEndPosition();
|
||||
@ -6581,16 +6611,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
|
||||
CopyMemory(&s_efrSave, s_pEfrDataDlg, sizeof(EDITFINDREPLACE));
|
||||
}
|
||||
|
||||
if (!s_bSwitchedFindReplace &&
|
||||
!ComboBox_GetTextW2MB(hwnd, IDC_FINDTEXT, s_pEfrDataDlg->szFind, COUNTOF(s_pEfrDataDlg->szFind))) {
|
||||
DialogEnableControl(hwnd, IDOK, false);
|
||||
DialogEnableControl(hwnd, IDC_FINDPREV, false);
|
||||
DialogEnableControl(hwnd, IDC_REPLACE, false);
|
||||
DialogEnableControl(hwnd, IDC_REPLACEALL, false);
|
||||
DialogEnableControl(hwnd, IDC_REPLACEINSEL, false);
|
||||
if (!ComboBox_GetTextW2MB(hwnd, IDC_REPLACETEXT, s_pEfrDataDlg->szReplace, COUNTOF(s_pEfrDataDlg->szReplace))) {
|
||||
DialogEnableControl(hwnd, IDC_SWAPSTRG, false);
|
||||
}
|
||||
if (!s_bSwitchedFindReplace && !_EnableFRDlgCtrls(hwnd)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -1177,7 +1177,7 @@ void SetFindPattern(LPCWSTR wchFindPattern)
|
||||
//
|
||||
void SetFindPatternMB(LPCSTR chFindPattern)
|
||||
{
|
||||
MultiByteToWideCharEx(Encoding_SciCP, 0, chFindPattern, -1, sCurrentFindPattern, COUNTOF(sCurrentFindPattern));
|
||||
MultiByteToWideChar(Encoding_SciCP, 0, chFindPattern, -1, sCurrentFindPattern, (int)COUNTOF(sCurrentFindPattern));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -76,7 +76,11 @@
|
||||
#undef VER_CPL
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#if (_MSC_VER == 1928)
|
||||
#if (_MSC_VER == 1929)
|
||||
#if (_MSC_FULL_VER >= 192930037)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.10.0
|
||||
#endif
|
||||
#elif (_MSC_VER == 1928)
|
||||
#if (_MSC_FULL_VER >= 192829915)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.9.(5-6)
|
||||
#elif (_MSC_FULL_VER >= 192829914)
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
#define SAPPNAME "Notepad3"
|
||||
#define VERSION_MAJOR 5
|
||||
#define VERSION_MINOR 21
|
||||
#define VERSION_REV 525
|
||||
#define VERSION_REV 527
|
||||
#define VERSION_BUILD 1
|
||||
#define SCINTILLA_VER 502
|
||||
#define LEXILLA_VER 502
|
||||
|
||||
Loading…
Reference in New Issue
Block a user