From ee6e7f2b813722c05c99dfbc0c82f2284acb1f0c Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Sun, 3 May 2020 17:35:39 +0200 Subject: [PATCH 1/2] + chg: Markdown Lexer: changed style of header lines --- Versions/build.txt | 2 +- language/common_res.h | 1 + language/np3_de_de/encode_de_de.rc | 8 ++-- language/np3_de_de/lexer_de_de.rc | 4 ++ language/np3_en_gb/encode_en_gb.rc | 8 ++-- language/np3_en_us/encode_en_us.rc | 8 ++-- language/np3_en_us/lexer_en_us.rc | 1 + res/Notepad3.exe.manifest.conf | 2 +- scintilla/include/SciLexer.h | 1 + scintilla/lexers/LexMarkdown.cxx | 69 ++++++++++++++++++------------ src/StyleLexers/styleLexMARKDOWN.c | 13 +++--- src/VersionEx.h | 2 +- 12 files changed, 71 insertions(+), 48 deletions(-) diff --git a/Versions/build.txt b/Versions/build.txt index d00491fd7..0cfbf0888 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -1 +2 diff --git a/language/common_res.h b/language/common_res.h index 2cc415637..0d12d9198 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -1076,6 +1076,7 @@ #define IDS_LEX_STR_63364 63364 #define IDS_LEX_STR_63365 63365 #define IDS_LEX_STR_63366 63366 +#define IDS_LEX_STR_63367 63367 #define IDS_LEX_CSV_COL_0 63400 #define IDS_LEX_CSV_COL_1 63401 diff --git a/language/np3_de_de/encode_de_de.rc b/language/np3_de_de/encode_de_de.rc index b6b2dd8cc..e15c6b4fa 100644 --- a/language/np3_de_de/encode_de_de.rc +++ b/language/np3_de_de/encode_de_de.rc @@ -80,8 +80,8 @@ BEGIN IDS_ENC_MAC_CENTRAL_EUROP "C;Central European (Mac);Mac (Central)" IDS_ENC_WIN_1250 "C;Central European (Windows-1250);Windows-1250" IDS_ENC_GB18030 "C;Chinese (GB18030);GB-18030" + IDS_ENC_GBK_936 "C;Chinese (GBK);GBK-936" IDS_ENC_GB2312_80 "C;Chinese Simplified (GB2312-80);GB-2312-80" - IDS_ENC_GBK_936 "C;Chinese Simplified (GBK-936);GBK-936" IDS_ENC_MAC_ZH_CN "C;Chinese Simplified (Mac);Mac (zh-cn)" IDS_ENC_BIG5 "C;Chinese Traditional (Big5);Big5" IDS_ENC_MAC_ZH_TW "C;Chinese Traditional (Mac);Mac (zh-tw)" @@ -151,14 +151,14 @@ STRINGTABLE BEGIN IDS_ENC_EUC_JAPANESE "C;Japanese (EUC);Japanese (EUC)" IDS_ENC_EUC_KOREAN "C;Korean (EUC);Korean (EUC)" - IDS_ENC_ISO_2022_CN "C;Chinese Traditional (ISO-2022);ISO-2022-CN" - IDS_ENC_HZ_GB2312 "C;Chinese Simplified (HZ-GB2312);HZ-GB2312" + IDS_ENC_ISO_2022_CN "C;Chinese (ISO-2022);ISO-2022-CN" + IDS_ENC_HZ_GB2312 "C;Chinese Simplified (GB2312);HZ-GB2312" IDS_ENC_ISO_2022_JP "C;Japanese (ISO-2022);ISO-2022-JP" IDS_ENC_ISO_2022_KR "C;Korean (ISO-2022);ISO-2022-KR" IDS_ENC_X_CHINESE_CNS "C;Chinese Traditional (CNS);x-chinese-cns" IDS_ENC_JOHAB "C;Korean (Johab);Korean (Johab)" IDS_ENC_ISO_8859_10 "B;Nordic (ISO-8859-10);ISO-8859-10" - IDS_ENC_BIG5_HKSCS "C;Chinese Hong Kong (Big5HKSCS);Big5HKSCS" + IDS_ENC_BIG5_HKSCS "C;Chinese Traditional (Big5HKSCS);Big5HKSCS" END diff --git a/language/np3_de_de/lexer_de_de.rc b/language/np3_de_de/lexer_de_de.rc index 55170f93f..cce583206 100644 --- a/language/np3_de_de/lexer_de_de.rc +++ b/language/np3_de_de/lexer_de_de.rc @@ -461,6 +461,10 @@ BEGIN IDS_LEX_STR_63361 "Substitution" IDS_LEX_STR_63362 "Modifier" IDS_LEX_STR_63363 "Tag" + IDS_LEX_STR_63364 "Eigenschaften Name" + IDS_LEX_STR_63365 "LD Keyword" + IDS_LEX_STR_63366 "ESC Sequenz" + IDS_LEX_STR_63367 "Header Text" END STRINGTABLE diff --git a/language/np3_en_gb/encode_en_gb.rc b/language/np3_en_gb/encode_en_gb.rc index 49677cf88..f920a8962 100644 --- a/language/np3_en_gb/encode_en_gb.rc +++ b/language/np3_en_gb/encode_en_gb.rc @@ -80,8 +80,8 @@ BEGIN IDS_ENC_MAC_CENTRAL_EUROP "C;Central European (Mac);Mac (Central)" IDS_ENC_WIN_1250 "C;Central European (Windows-1250);Windows-1250" IDS_ENC_GB18030 "C;Chinese (GB18030);GB-18030" + IDS_ENC_GBK_936 "C;Chinese (GBK);GBK-936" IDS_ENC_GB2312_80 "C;Chinese Simplified (GB2312-80);GB-2312-80" - IDS_ENC_GBK_936 "C;Chinese Simplified (GBK-936);GBK-936" IDS_ENC_MAC_ZH_CN "C;Chinese Simplified (Mac);Mac (zh-cn)" IDS_ENC_BIG5 "C;Chinese Traditional (Big5);Big5" IDS_ENC_MAC_ZH_TW "C;Chinese Traditional (Mac);Mac (zh-tw)" @@ -151,14 +151,14 @@ STRINGTABLE BEGIN IDS_ENC_EUC_JAPANESE "C;Japanese (EUC);Japanese (EUC)" IDS_ENC_EUC_KOREAN "C;Korean (EUC);Korean (EUC)" - IDS_ENC_ISO_2022_CN "C;Chinese Traditional (ISO-2022);ISO-2022-CN" - IDS_ENC_HZ_GB2312 "C;Chinese Simplified (HZ-GB2312);HZ-GB2312" + IDS_ENC_ISO_2022_CN "C;Chinese (ISO-2022);ISO-2022-CN" + IDS_ENC_HZ_GB2312 "C;Chinese Simplified (GB2312);HZ-GB2312" IDS_ENC_ISO_2022_JP "C;Japanese (ISO-2022);ISO-2022-JP" IDS_ENC_ISO_2022_KR "C;Korean (ISO-2022);ISO-2022-KR" IDS_ENC_X_CHINESE_CNS "C;Chinese Traditional (CNS);x-chinese-cns" IDS_ENC_JOHAB "C;Korean (Johab);Korean (Johab)" IDS_ENC_ISO_8859_10 "B;Nordic (ISO-8859-10);ISO-8859-10" - IDS_ENC_BIG5_HKSCS "C;Chinese Hong Kong (Big5HKSCS);Big5HKSCS" + IDS_ENC_BIG5_HKSCS "C;Chinese Traditional (Big5HKSCS);Big5HKSCS" END diff --git a/language/np3_en_us/encode_en_us.rc b/language/np3_en_us/encode_en_us.rc index 5ced89337..e22e71eb3 100644 --- a/language/np3_en_us/encode_en_us.rc +++ b/language/np3_en_us/encode_en_us.rc @@ -80,8 +80,8 @@ BEGIN IDS_ENC_MAC_CENTRAL_EUROP "C;Central European (Mac);Mac (Central)" IDS_ENC_WIN_1250 "C;Central European (Windows-1250);Windows-1250" IDS_ENC_GB18030 "C;Chinese (GB18030);GB-18030" + IDS_ENC_GBK_936 "C;Chinese (GBK);GBK-936" IDS_ENC_GB2312_80 "C;Chinese Simplified (GB2312-80);GB-2312-80" - IDS_ENC_GBK_936 "C;Chinese Simplified (GBK-936);GBK-936" IDS_ENC_MAC_ZH_CN "C;Chinese Simplified (Mac);Mac (zh-cn)" IDS_ENC_BIG5 "C;Chinese Traditional (Big5);Big5" IDS_ENC_MAC_ZH_TW "C;Chinese Traditional (Mac);Mac (zh-tw)" @@ -151,14 +151,14 @@ STRINGTABLE BEGIN IDS_ENC_EUC_JAPANESE "C;Japanese (EUC);Japanese (EUC)" IDS_ENC_EUC_KOREAN "C;Korean (EUC);Korean (EUC)" - IDS_ENC_ISO_2022_CN "C;Chinese Traditional (ISO-2022);ISO-2022-CN" - IDS_ENC_HZ_GB2312 "C;Chinese Simplified (HZ-GB2312);HZ-GB2312" + IDS_ENC_ISO_2022_CN "C;Chinese (ISO-2022);ISO-2022-CN" + IDS_ENC_HZ_GB2312 "C;Chinese Simplified (GB2312);HZ-GB2312" IDS_ENC_ISO_2022_JP "C;Japanese (ISO-2022);ISO-2022-JP" IDS_ENC_ISO_2022_KR "C;Korean (ISO-2022);ISO-2022-KR" IDS_ENC_X_CHINESE_CNS "C;Chinese Traditional (CNS);x-chinese-cns" IDS_ENC_JOHAB "C;Korean (Johab);Korean (Johab)" IDS_ENC_ISO_8859_10 "B;Nordic (ISO-8859-10);ISO-8859-10" - IDS_ENC_BIG5_HKSCS "C;Chinese Hong Kong (Big5HKSCS);Big5HKSCS" + IDS_ENC_BIG5_HKSCS "C;Chinese Traditional (Big5HKSCS);Big5HKSCS" END diff --git a/language/np3_en_us/lexer_en_us.rc b/language/np3_en_us/lexer_en_us.rc index 720d54aae..cf1c0c1d7 100644 --- a/language/np3_en_us/lexer_en_us.rc +++ b/language/np3_en_us/lexer_en_us.rc @@ -464,6 +464,7 @@ BEGIN IDS_LEX_STR_63364 "Property Name" IDS_LEX_STR_63365 "LD Keyword" IDS_LEX_STR_63366 "ESC Sequence" + IDS_LEX_STR_63367 "Header Text" END STRINGTABLE diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index 797759071..e69f693df 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 BETA diff --git a/scintilla/include/SciLexer.h b/scintilla/include/SciLexer.h index 4ea1b6f6f..90d2d8fb0 100644 --- a/scintilla/include/SciLexer.h +++ b/scintilla/include/SciLexer.h @@ -1520,6 +1520,7 @@ #define SCE_MARKDOWN_CODE 19 #define SCE_MARKDOWN_CODE2 20 #define SCE_MARKDOWN_CODEBK 21 +#define SCE_MARKDOWN_HDRTEXT 22 #define SCE_TXT2TAGS_DEFAULT 0 #define SCE_TXT2TAGS_LINE_BEGIN 1 #define SCE_TXT2TAGS_STRONG1 2 diff --git a/scintilla/lexers/LexMarkdown.cxx b/scintilla/lexers/LexMarkdown.cxx index ba6ce1d7d..96e218edc 100644 --- a/scintilla/lexers/LexMarkdown.cxx +++ b/scintilla/lexers/LexMarkdown.cxx @@ -76,20 +76,23 @@ static bool FollowToLineEnd(const int ch, const int state, const Sci_PositionU e // Set the state on text section from current to length characters, // then set the rest until the newline to default, except for any characters matching token + +constexpr bool IsHdrToken(const int ch, const int tok) noexcept { + return ((ch == tok) || (ch == ' ') || (ch == '\n') || (ch == '\r')); +} + static void SetStateAndZoom(const int state, const Sci_Position length, const int token, StyleContext &sc) { sc.SetState(state); sc.Forward(length); - sc.SetState(SCE_MARKDOWN_DEFAULT); - sc.Forward(); - bool started = false; - while (sc.More() && !IsNewline(sc.ch)) { - if (sc.ch == token && !started) { + bool tokenState = true; + while (sc.More() && !sc.atLineStart) { + if (IsHdrToken(sc.ch, token) && !tokenState) { sc.SetState(state); - started = true; + tokenState = true; } - else if (sc.ch != token) { - sc.SetState(SCE_MARKDOWN_DEFAULT); - started = false; + else if (!IsHdrToken(sc.ch, token) && tokenState) { + sc.SetState(SCE_MARKDOWN_HDRTEXT); + tokenState = false; } sc.Forward(); } @@ -239,24 +242,36 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int } else if (sc.state == SCE_MARKDOWN_LINE_BEGIN) { // Header - if (sc.Match("######")) - SetStateAndZoom(SCE_MARKDOWN_HEADER6, 6, '#', sc); - else if (sc.Match("#####")) - SetStateAndZoom(SCE_MARKDOWN_HEADER5, 5, '#', sc); - else if (sc.Match("####")) - SetStateAndZoom(SCE_MARKDOWN_HEADER4, 4, '#', sc); - else if (sc.Match("###")) - SetStateAndZoom(SCE_MARKDOWN_HEADER3, 3, '#', sc); - else if (sc.Match("##")) - SetStateAndZoom(SCE_MARKDOWN_HEADER2, 2, '#', sc); + if (sc.Match("######")) { + SetStateAndZoom(SCE_MARKDOWN_HEADER6, 6, '#', sc); + freezeCursor = true; + } + else if (sc.Match("#####")) { + SetStateAndZoom(SCE_MARKDOWN_HEADER5, 5, '#', sc); + freezeCursor = true; + } + else if (sc.Match("####")) { + SetStateAndZoom(SCE_MARKDOWN_HEADER4, 4, '#', sc); + freezeCursor = true; + } + else if (sc.Match("###")) { + SetStateAndZoom(SCE_MARKDOWN_HEADER3, 3, '#', sc); + 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 - SetStateAndZoom(SCE_MARKDOWN_HEADER1, 1, '#', sc); + else { + SetStateAndZoom(SCE_MARKDOWN_HEADER1, 1, '#', sc); + freezeCursor = true; + } } // Code block else if (sc.Match("~~~")) { @@ -288,12 +303,12 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int } // 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); - } + 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); + } // New state only within the initial whitespace if (sc.state == SCE_MARKDOWN_PRECHAR) { diff --git a/src/StyleLexers/styleLexMARKDOWN.c b/src/StyleLexers/styleLexMARKDOWN.c index a589a87eb..0da07dca6 100644 --- a/src/StyleLexers/styleLexMARKDOWN.c +++ b/src/StyleLexers/styleLexMARKDOWN.c @@ -13,12 +13,13 @@ SCLEX_MARKDOWN, IDS_LEX_MARKDOWN, L"Markdown", L"md; markdown; mdown; mkdn; mkd" { {SCE_MARKDOWN_LINE_BEGIN}, IDS_LEX_STR_63317, L"Line Begin", L"", L"" }, { {MULTI_STYLE(SCE_MARKDOWN_STRONG1,SCE_MARKDOWN_STRONG2,0,0)}, IDS_LEX_STR_63318, L"Strong", L"bold", L"" }, { {MULTI_STYLE(SCE_MARKDOWN_EM1,SCE_MARKDOWN_EM2,0,0)}, IDS_LEX_STR_63319, L"Emphasis", L"italic", L"" }, - { {SCE_MARKDOWN_HEADER1}, IDS_LEX_STR_63320, L"Header 1", L"bold; fore:#FF0088", L"" }, - { {SCE_MARKDOWN_HEADER2}, IDS_LEX_STR_63321, L"Header 2", L"bold; fore:#FF0088", L"" }, - { {SCE_MARKDOWN_HEADER3}, IDS_LEX_STR_63322, L"Header 3", L"bold; fore:#FF0088", L"" }, - { {SCE_MARKDOWN_HEADER4}, IDS_LEX_STR_63323, L"Header 4", L"bold; fore:#FF0088", L"" }, - { {SCE_MARKDOWN_HEADER5}, IDS_LEX_STR_63324, L"Header 5", L"bold; fore:#FF0088", L"" }, - { {SCE_MARKDOWN_HEADER6}, IDS_LEX_STR_63325, L"Header 6", L"bold; fore:#FF0088", L"" }, + { {SCE_MARKDOWN_HEADER1}, IDS_LEX_STR_63320, L"Header 1", L"bold; fore:#009D9D; back:#DDFFDD; eolfilled", L"" }, + { {SCE_MARKDOWN_HEADER2}, IDS_LEX_STR_63321, L"Header 2", L"bold; fore:#009D9D; back:#DDFFDD; eolfilled", L"" }, + { {SCE_MARKDOWN_HEADER3}, IDS_LEX_STR_63322, L"Header 3", L"bold; fore:#009D9D; back:#DDFFDD; eolfilled", L"" }, + { {SCE_MARKDOWN_HEADER4}, IDS_LEX_STR_63323, L"Header 4", L"bold; fore:#009D9D; back:#DDFFDD; eolfilled", L"" }, + { {SCE_MARKDOWN_HEADER5}, IDS_LEX_STR_63324, L"Header 5", L"bold; fore:#009D9D; back:#DDFFDD; eolfilled", L"" }, + { {SCE_MARKDOWN_HEADER6}, IDS_LEX_STR_63325, L"Header 6", L"bold; fore:#009D9D; back:#DDFFDD; eolfilled", L"" }, + { {SCE_MARKDOWN_HDRTEXT}, IDS_LEX_STR_63367, L"Header Text", L"bold; fore:#B0005C; back:#DDFFDD; eolfilled", L"" }, { {SCE_MARKDOWN_PRECHAR}, IDS_LEX_STR_63326, L"Pre Char", L"fore:#00007F", L"" }, { {SCE_MARKDOWN_ULIST_ITEM}, IDS_LEX_STR_63327, L"Unordered List", L"bold; fore:#0080FF", L"" }, { {SCE_MARKDOWN_OLIST_ITEM}, IDS_LEX_STR_63268, L"Ordered List", L"bold; fore:#0080FF", L"" }, diff --git a/src/VersionEx.h b/src/VersionEx.h index 754b7fe8f..996a0f381 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -9,7 +9,7 @@ #define VERSION_MAJOR 5 #define VERSION_MINOR 20 #define VERSION_REV 503 -#define VERSION_BUILD 1 +#define VERSION_BUILD 2 #define SCINTILLA_VER 433 #define ONIGURUMA_REGEX_VER 6.9.5 #define UCHARDET_VER 2018.09.27 From bf12e166424e55bc38e41166fd0a779cf51ad9a8 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Sun, 3 May 2020 17:44:22 +0200 Subject: [PATCH 2/2] + chg: context menu --- language/np3_de_de/menu_de_de.rc | 3 ++- language/np3_en_gb/menu_en_gb.rc | 3 ++- language/np3_en_us/menu_en_us.rc | 3 ++- src/Notepad3.c | 6 +++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/language/np3_de_de/menu_de_de.rc b/language/np3_de_de/menu_de_de.rc index d43c4fb70..6df7a085a 100644 --- a/language/np3_de_de/menu_de_de.rc +++ b/language/np3_de_de/menu_de_de.rc @@ -488,6 +488,8 @@ IDR_MUI_POPUPMENU MENU BEGIN POPUP "+" BEGIN + MENUITEM "Öffne &Hyperlink", CMD_OPEN_HYPERLINK + MENUITEM SEPARATOR MENUITEM "&Rückgängig", IDM_EDIT_UNDO MENUITEM "&Wiederholen", IDM_EDIT_REDO MENUITEM SEPARATOR @@ -502,7 +504,6 @@ BEGIN MENUITEM SEPARATOR MENUITEM "Öffne Web-Aktion &1", CMD_WEBACTION1 MENUITEM "Öffne Web Aktion &2", CMD_WEBACTION2 - MENUITEM "Öffne &Hyperlink", CMD_OPEN_HYPERLINK END POPUP "+" BEGIN diff --git a/language/np3_en_gb/menu_en_gb.rc b/language/np3_en_gb/menu_en_gb.rc index 128e5441b..a810aebd4 100644 --- a/language/np3_en_gb/menu_en_gb.rc +++ b/language/np3_en_gb/menu_en_gb.rc @@ -488,6 +488,8 @@ IDR_MUI_POPUPMENU MENU BEGIN POPUP "+" BEGIN + MENUITEM "Open &Hyperlink", CMD_OPEN_HYPERLINK + MENUITEM SEPARATOR MENUITEM "&Undo", IDM_EDIT_UNDO MENUITEM "&Redo", IDM_EDIT_REDO MENUITEM SEPARATOR @@ -502,7 +504,6 @@ BEGIN MENUITEM SEPARATOR MENUITEM "Open Web Action &1", CMD_WEBACTION1 MENUITEM "Open Web Action &2", CMD_WEBACTION2 - MENUITEM "Open &Hyperlink", CMD_OPEN_HYPERLINK END POPUP "+" BEGIN diff --git a/language/np3_en_us/menu_en_us.rc b/language/np3_en_us/menu_en_us.rc index 678e3f12c..15f7d1588 100644 --- a/language/np3_en_us/menu_en_us.rc +++ b/language/np3_en_us/menu_en_us.rc @@ -488,6 +488,8 @@ IDR_MUI_POPUPMENU MENU BEGIN POPUP "+" BEGIN + MENUITEM "Open &Hyperlink", CMD_OPEN_HYPERLINK + MENUITEM SEPARATOR MENUITEM "&Undo", IDM_EDIT_UNDO MENUITEM "&Redo", IDM_EDIT_REDO MENUITEM SEPARATOR @@ -502,7 +504,6 @@ BEGIN MENUITEM SEPARATOR MENUITEM "Open Web Action &1", CMD_WEBACTION1 MENUITEM "Open Web Action &2", CMD_WEBACTION2 - MENUITEM "Open &Hyperlink", CMD_OPEN_HYPERLINK END POPUP "+" BEGIN diff --git a/src/Notepad3.c b/src/Notepad3.c index a7eb26b8c..931675fda 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -3515,10 +3515,10 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) i = IDM_VIEW_NOESCFUNC; CheckMenuRadioItem(hmenu, IDM_VIEW_NOESCFUNC, IDM_VIEW_ESCEXIT, i, MF_BYCOMMAND); - EnableCmd(hmenu, CMD_WEBACTION1, !se && !mrs && bPosInSel); - EnableCmd(hmenu, CMD_WEBACTION2, !se && !mrs && bPosInSel); bool const bIsHLink = (SciCall_IndicatorValueAt(INDIC_NP3_HYPERLINK, iCurPos) > 0); - EnableCmd(hmenu, CMD_OPEN_HYPERLINK, bIsHLink); + EnableCmd(hmenu, CMD_OPEN_HYPERLINK, !mrs && bIsHLink); + EnableCmd(hmenu, CMD_WEBACTION1, !se && !mrs && bPosInSel && !bIsHLink); + EnableCmd(hmenu, CMD_WEBACTION2, !se && !mrs && bPosInSel && !bIsHLink); i = (int)StringCchLenW(Settings2.AdministrationTool, COUNTOF(Settings2.AdministrationTool)); EnableCmd(hmenu, IDM_HELP_ADMINEXE, i);