Skip to content

Commit b485805

Browse files
authored
Merge pull request #2690 from akruphi/highlighting_def_use_groups
Highlighting def use groups
2 parents a1e0e97 + 1f17bc1 commit b485805

9 files changed

+110
-47
lines changed

far2l/bootstrap/scripts/FarEng.hlf.m4

+2
Original file line numberDiff line numberDiff line change
@@ -3370,6 +3370,8 @@ combinations are available:
33703370

33713371
#Enter# or #F4# - ~Edit~@HighlightEdit@ the current highlighting group
33723372

3373+
#F3# - Show for current item file masks after expand all masks groups
3374+
33733375
#Ctrl-R# - Restore the default file highlighting groups
33743376

33753377
#Ctrl-Up# - Move a group up

far2l/bootstrap/scripts/FarHun.hlf.m4

+2
Original file line numberDiff line numberDiff line change
@@ -2973,6 +2973,8 @@ műveleteket hajthatunk végre a csoportok listáján, a következő billentyűk
29732973

29742974
#Enter# vagy #F4# - Az aktuális kiemelési csoport ~szerkesztése~@HighlightEdit@
29752975

2976+
#F3# - Show for current item file masks after expand all masks groups
2977+
29762978
#Ctrl-R# - ^<wrap>Visszaállítja az alapértelmezett kiemelési
29772979
csoportokat
29782980

far2l/bootstrap/scripts/FarRus.hlf.m4

+2
Original file line numberDiff line numberDiff line change
@@ -3427,6 +3427,8 @@ $ #Раскраска файлов и группы сортировки: кла
34273427

34283428
#Enter# или #F4# - ~Изменить параметры~@HighlightEdit@ текущей группы раскраски
34293429

3430+
#F3# - Показ для текущего элемента масок файлов после раскрытия всех групп масок
3431+
34303432
#Ctrl-R# - Восстановить предопределённые группы раскраски файлов
34313433

34323434
#Ctrl-Up# - Передвинуть группу вверх

far2l/bootstrap/scripts/FarUkr.hlf.m4

+2
Original file line numberDiff line numberDiff line change
@@ -3262,6 +3262,8 @@ $ #Розмальовка файлів та групи сортування: к
32623262

32633263
#Enter# або #F4# - ~Змінити параметри~@HighlightEdit@ поточної групи розмальовки
32643264

3265+
#F3# - Show for current item file masks after expand all masks groups
3266+
32653267
#Ctrl-R# - Відновити певні групи забарвлення файлів
32663268

32673269
#Ctrl-Up# - Пересунути групу нагору

far2l/bootstrap/scripts/farlang.templ.m4

+9-9
Original file line numberDiff line numberDiff line change
@@ -12971,15 +12971,15 @@ l:
1297112971
"Афарбоўка файлаў"
1297212972

1297312973
HighlightBottom
12974-
"+ - Пробел Ins Del F4 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12975-
"+ - Space Ins Del F4 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12976-
"+ - Mezera Ins Del F4 F5 Ctrl+Nahoru/Dolů Ctrl+M"
12977-
"+ - Leer Einf Entf F4 F5 Strg+Up/Down Strg+R Strg+M"
12978-
"+ - Szóköz Ins Del F4 F5 Ctrl+Fel/Le Ctrl+R Ctrl+M"
12979-
"+ - Spacja Ins Del F4 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12980-
"+ - Space Ins Del F4 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12981-
"+ - Пробіл Ins Del F4 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12982-
"+ - Space Ins Del F4 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12974+
"+ - Пробел Ins Del Enter/F4 F3 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12975+
"+ - Space Ins Del Enter/F4 F3 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12976+
"+ - Mezera Ins Del Enter/F4 F3 F5 Ctrl+Nahoru/Dolů Ctrl+M"
12977+
"+ - Leer Einf Entf Enter/F4 F3 F5 Strg+Up/Down Strg+R Strg+M"
12978+
"+ - Szóköz Ins Del Enter/F4 F3 F5 Ctrl+Fel/Le Ctrl+R Ctrl+M"
12979+
"+ - Spacja Ins Del Enter/F4 F3 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12980+
"+ - Space Ins Del Enter/F4 F3 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12981+
"+ - Пробіл Ins Del Enter/F4 F3 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
12982+
"+ - Прабел Ins Del Enter/F4 F3 F5 Ctrl+Up/Down Ctrl+R Ctrl+M"
1298312983

1298412984
HighlightUpperSortGroup
1298512985
"Верхняя группа сортировки"

far2l/src/cfg/MaskGroups.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ static void ApplyDefaultMaskGroups()
4040
{
4141
static const std::pair<const wchar_t*, const wchar_t*> Sets[]
4242
{
43-
{ L"arc", L"*.rar,*.zip,*.[zj],*.[bxg7]z,*.[bg]zip,*.tar,*.t[agbx]z,*.ar[cj],*.r[0-9][0-9],*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,"
44-
L"*.ha,*.ac[bei],*.pa[ck],*.rk,*.cpio,*.rpm,*.zoo,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,*.bs[2a],*.sea,*.hpk,*.ddi,"
43+
{ L"arc", L"*.rar,*.zip,*.[zj],*.[7bglx]z,*.[bg]zip,*.tar,*.t[agbx]z,*.ar[cj],*.r[0-9][0-9],*.a[0-9][0-9],*.bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,"
44+
L"*.ha,*.ac[bei],*.pa[ck],*.rk,*.cpio,*.rpm,*.tbz2,*.zoo,*.zst,*.hqx,*.sit,*.ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,*.bs[2a],*.sea,*.hpk,*.ddi,"
4545
L"*.x2,*.rkv,*.[lw]sz,*.h[ay]p,*.lim,*.sqz,*.chz" },
4646
{ L"temp", L"*.cache,*.temp,*.tmp,*.bak,*.old,*.backup,*.back,temp,temp.*,temporary*" },
4747
{ L"tmp", L"<temp>" },
48-
{ L"exec", L"*.sh,*.pl,*.cmd,*.exe,*.bat,*.com,*.elf,*.run,*.AppImage,*.apk,*.rb" },
48+
{ L"exec", L"*.sh,*.py,*.pl,*.cmd,*.exe,*.bat,*.com,*.elf,*.run,*.AppImage,*.apk,*.rb" },
49+
{ L"shared", L"*.dll,*.so,*.dll.*,*.so.*,*.obj,*.o,*.a,*.lib,*.sys,*.pyo,*.vim" },
4950
{ L"sound", L"*.aif,*.cda,*.mid,*.midi,*.mp3,*.mpa,*.ogg,*.wma,*.flac,*.wav,*.ape,*.wv,*.voc,*.669,*.digi,*.amf,*.ams,*.dbm,*.dmf,*.dsm,*.gdm,"
5051
L"*.imf,*.it,*.itg,*.itp,*.j2b,*.mdl,*.med,*.mo3,*.mod,*.mt2,*.mtm,*.okt,*.plm,*.psm,*.ptm,*.s3m,*.sfx,*.stm,*.stp,*.uax,*.ult,*.xm"},
5152
{ L"snd", L"<sound>" },

far2l/src/hilight.cpp

+75-35
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5656
#include <mutex>
5757
#include <unordered_set>
5858
#include "color.hpp"
59+
#include "MaskGroups.hpp"
5960

6061
struct HighlightStrings
6162
{
@@ -87,31 +88,6 @@ static void SetDefaultHighlighting()
8788
fprintf(stderr, "SetDefaultHighlighting\n");
8889

8990
ConfigWriter cfg_writer;
90-
static const wchar_t *MasksArchives = /* 1 */
91-
L"*.rar,*.zip,*.[zj],*.[7bglx]z,*.[bg]zip,*.tar,*.t[agbx]z,*.ar[cj],*.r[0-9][0-9],*.a[0-9][0-9],*."
92-
L"bz2,*.cab,*.msi,*.jar,*.lha,*.lzh,*.ha,*.ac[bei],*.pa[ck],*.rk,*.cpio,*.rpm,*.tbz2,*.zoo,*.zst,*.hqx,*.sit,*"
93-
L".ice,*.uc2,*.ain,*.imp,*.777,*.ufa,*.boa,*.bs[2a],*.sea,*.hpk,*.ddi,*.x2,*.rkv,*.[lw]sz,*.h[ay]"
94-
L"p,*.lim,*.sqz,*.chz";
95-
static const wchar_t *MasksTemporary = /* 2 */ L"*.bak,*.tmp";
96-
/*
97-
$ 25.09.2001 IS
98-
Эта маска для каталогов: обрабатывать все каталоги, кроме тех, что
99-
являются родительскими (их имена - две точки).
100-
*/
101-
static const wchar_t *MasksScripts = L"*.sh,*.py,*.pl,*.cmd,*.exe,*.bat,*.com,*.run,*.elf";
102-
static const wchar_t *MasksSoundFiles =
103-
L"*.aif,*.cda,*.mid,*.midi,*.mp3,*.mpa,*.ogg,*.wma,*.flac,*.wav,*.ape,*.wv,*.voc,*.669,*.digi,*.amf,*.ams,*.dbm,*.dmf,*.dsm,*.gdm,*.imf,"
104-
L"*.it,*.itg,*.itp,*.j2b,*.mdl,*.med,*.mo3,*.mod,*.mt2,*.mtm,*.okt,*.plm,*.psm,*.ptm,*.s3m,*.sfx,*.stm,*.stp,*.uax,*.ult,*.xm";
105-
static const wchar_t *MaskSharedObjects = L"*.dll,*.so,*.dll.*,*.so.*,*.obj,*.o,*.a,*.lib,*.sys,*.pyo,*.vim";
106-
static const wchar_t *MaskVideoFiles = L"*.mkv,*.webm,*.mpg,*.mp2,*.mpeg,*.mpe,*.mpv,*.mp4,*.m4p,*.m4v,*.avi,*.wmv,*.mov,*.qt,*.flv,*.swf,*.avchd,*.3gp,*.vob";
107-
static const wchar_t *MaskImageFiles = L"*.avif,*.jpg,*.jpeg,*.jpeg2000,*.ico,*.gif,*.png,*.webp,*.tga,*.bmp,*.pcx,*.tiff,*.tif,*.psd,*.eps,*.indd,*.svg,*.ai,*.cpt,*.kra,*.pdn,*.psp,*.xcf,*.sai,*.cgm,*.mpo,*.pns,*.jps";
108-
static const wchar_t *MaskSourceFiles = L"*.c,*.cpp,*.c++,*.h,*.hpp,*.h++,*.asm,*.inc,*.src,*.css,*.glsl,*.lua,*.java,*.php,*.go,*.perl,*.r,*.bas,*.pas,*.jsm,*.qml,"
109-
L"*.js,*.kt,*.sample,*.vs,*.fs,*.fx,*.hlsl,*.fsh,*.vsh,*.pixel,*.vertex,*.fragmentshader,*.fragment,*.vertexshader,"
110-
L"*.ml,*.frag,*.geom,*.vert,*.rs,*.ts,*.jam,*.tcl, *.swift";
111-
static const wchar_t *MaskModelFiles = L"*.ma,*.mb,*.opengex,*.ply,*.pov-ray,*.prc,*.step,*.skp,*.stl,*.u3d,*.vrml,*.xaml,*.xgl,*.xvl,*.xvrml,*.x3d,*.3d,*.3df,*.3dm,*.3ds,*.3dxml,*.x3d,"
112-
L"*.dds,*.sdkmesh,*.x,*.hdr,*.ktx,*.amf,*.asymptote,*.blend,*.collada,*.dgn,*.dwf,*.dwg,*.dxf,*.drawings,*.flt,*.fvrml,*.gltf,*.hsf,*.iges,*.imml,*.ipa,*.jt";
113-
static const wchar_t *MaskTextFiles = L"*.docx,*.odt,*.pdf,*.rtf,*.tex,*.wpd,*.htm,*.html,*.key,*.odp,*.pps,*.ppt,*.pptx,*.ods,*.xls,*.xlsm,*.xlsx,*.srt,*.nfo,*.rst,*.man,"
114-
L"read.me,readme*,*.txt,*.chm,*.hlp,*.doc,*.md,NEWS";
11591

11692
static struct DefaultData
11793
{
@@ -159,18 +135,18 @@ static void SetDefaultHighlighting()
159135
{L"System", L"*", 1, FILE_ATTRIBUTE_SYSTEM, 0x00, 0x10 | F_CYAN, 0xFFFFFFFD0F, 0x30 | F_DARKGRAY, 0xFFFFFFFD0F, 0xFF263C, 1, 0},
160136
{L"Hardlinks > 1", L"*", 1, FILE_ATTRIBUTE_HARDLINKS, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_LIGHTCYAN, 0xFFFFFFFD0F, 0x30 | F_BLUE, 0xFFFFFFFD0F, 0xFF00AB, 0, 0},
161137
// without any mark, only different colors
162-
{L"Shared", MaskSharedObjects, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00b800ull << 16) | (0x10 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x005500ull << 16) | (0x30 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
163-
{L"Source", MaskSourceFiles, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xffbcacull << 16) | (0x10 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x8F0C00ull << 16) | (0x30 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
164-
{L"Image", MaskImageFiles, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00ffaeull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x00432eull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
165-
{L"Model", MaskModelFiles, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00ffaeull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x00432eull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
166-
{L"Scripts", MasksScripts, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0x30 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
167-
{L"Archives", MasksArchives, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_LIGHTMAGENTA, 0xFFFFFFFD0F, 0x30 | F_LIGHTMAGENTA, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
168-
{L"Temporary", MasksTemporary, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_BROWN, 0xFFFFFFFD0F, 0x30 | F_BROWN, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
138+
{L"Shared", L"<shared>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00b800ull << 16) | (0x10 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x005500ull << 16) | (0x30 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
139+
{L"Source", L"<src>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xffbcacull << 16) | (0x10 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x8F0C00ull << 16) | (0x30 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
140+
{L"Image", L"<pic>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00ffaeull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x00432eull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
141+
{L"Model", L"<3d>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00ffaeull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x00432eull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
142+
{L"Scripts", L"<exec>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0x30 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
143+
{L"Archives", L"<arc>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_LIGHTMAGENTA, 0xFFFFFFFD0F, 0x30 | F_LIGHTMAGENTA, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
144+
{L"Temporary", L"<temp>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_BROWN, 0xFFFFFFFD0F, 0x30 | F_BROWN, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
169145
// sound '♪' (disabled by default)
170-
{L"Sound", MasksSoundFiles, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xAAFF00ull << 16) | (0x10 | F_LIGHTGREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x005500ull << 16) | (0x30 | F_LIGHTGREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF266A/**/, 0, FFF_DISABLED},
146+
{L"Sound", L"<sound>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xAAFF00ull << 16) | (0x10 | F_LIGHTGREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x005500ull << 16) | (0x30 | F_LIGHTGREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF266A/**/, 0, FFF_DISABLED},
171147
// without any mark, only different colors
172-
{L"Video", MaskVideoFiles, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x30b8ffull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x006767ull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
173-
{L"Text files", MaskTextFiles, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xccccccull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x767676ull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
148+
{L"Video", L"<video>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x30b8ffull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x006767ull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
149+
{L"Text files", L"<doc>", 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xccccccull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x767676ull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0},
174150

175151
};
176152

@@ -804,6 +780,70 @@ void HighlightFiles::HiEdit(int MenuPos)
804780

805781
break;
806782
}
783+
case KEY_F3: { // show for current item file masks after expand all groups
784+
int *Count = nullptr;
785+
int RealSelectPos = MenuPosToRealPos(SelectPos, &Count);
786+
787+
if (Count && RealSelectPos < (int)HiData.getCount()) {
788+
const wchar_t *fmask;
789+
FileFilterParams *ffp = HiData.getItem(RealSelectPos);
790+
FARString fs;
791+
792+
ExMessager em(L"Files highlighting expand Mask Groups");
793+
fs.Format(L"== Highlighting Name: \"%ls\"", ffp->GetTitle());
794+
em.AddDup(fs);
795+
{
796+
HighlightDataColor hl;
797+
ffp->GetColors(&hl);
798+
fs.Format(L"== Highlighting Marker: \"%ls\"", hl.Mark);
799+
em.AddDup(fs);
800+
}
801+
if (!ffp->GetMask(&fmask) )
802+
em.AddDup(L"== Highlighting has empty masks");
803+
else {
804+
fs = L"== " + Msg::FileFilterMatchMaskCase;
805+
fs.AppendFormat(L": %s", ffp->GetMaskIgnoreCase() ? "OFF" : "ON");
806+
em.AddDup(fs);
807+
em.AddDup(L"");
808+
em.AddDup(L"== Highlighting masks before expand:");
809+
em.AddDupWrap(fmask);
810+
811+
// expand all groups
812+
bool b_first = true;
813+
int ngroups = 0;
814+
size_t pos_open, pos_close;
815+
FARString fs_group_name, fs_masks_from_group;
816+
fs = fmask;
817+
for( ;; ) {
818+
if( !fs.Pos(pos_open, '<', b_first ? 0 : pos_close+1) )
819+
break;
820+
b_first = false;
821+
if( !fs.Pos(pos_close, '>', pos_open+1) )
822+
break;
823+
if( pos_close-pos_open < 2 )
824+
continue;
825+
fs_group_name = fs.SubStr(pos_open+1, pos_close-pos_open-1);
826+
if( !GetMaskGroup(fs_group_name, fs_masks_from_group) )
827+
continue;
828+
fs.Replace(pos_open, pos_close-pos_open+1, fs_masks_from_group);
829+
pos_close = pos_open-1; // may be need recursive expand
830+
ngroups++;
831+
}
832+
em.AddDup(L"");
833+
fs_group_name.Format(L"== Correctly expanded Groups inside Highlighting masks: %d", ngroups);
834+
em.AddDup(fs_group_name);
835+
em.AddDup(L"");
836+
em.AddDup(L"== Highlighting masks after expand all groups:");
837+
em.AddDupWrap(fs);
838+
}
839+
em.AddDup(Msg::Ok);
840+
em.AddDup(Msg::MaskGroupTitle);
841+
if( em.Show(MSG_LEFTALIGN, 2) == 1)
842+
MaskGroupsSettings();
843+
}
844+
845+
break;
846+
}
807847
case KEY_NUMENTER:
808848
case KEY_ENTER:
809849
case KEY_F4: {

far2l/src/message.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,19 @@ Messager &FN_NOINLINE ExMessager::AddDup(const wchar_t *v)
566566
return *this;
567567
}
568568

569+
// dumb wrap long string
570+
Messager &FN_NOINLINE ExMessager::AddDupWrap(const wchar_t *v)
571+
{
572+
size_t maxlen = wcslen(v);
573+
if( maxlen <= MAX_WIDTH_MESSAGE )
574+
return AddDup(v);
575+
576+
FARString fs = v;
577+
for(size_t pos = 0; pos < maxlen; pos+=MAX_WIDTH_MESSAGE)
578+
AddDup( fs.SubStr(pos, pos+MAX_WIDTH_MESSAGE).CPtr() );
579+
return *this;
580+
}
581+
569582
Messager &FN_NOINLINE ExMessager::AddMultiline(const wchar_t *v, const wchar_t *divs)
570583
{
571584
std::wstring source_str = v;

far2l/src/message.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ struct ExMessager : Messager
8989
Messager &AddFormat(FarLangMsg fmt, ...);
9090
Messager &AddFormat(const wchar_t *fmt, ...);
9191
Messager &AddDup(const wchar_t *v);
92+
Messager &AddDupWrap(const wchar_t *v);
9293
Messager &AddMultiline(const wchar_t *v, const wchar_t *divs = L"\n");
9394
inline Messager &AddMultiline(FarLangMsg v, const wchar_t *divs = L"\n")
9495
{ return AddMultiline(v.CPtr(), divs); };

0 commit comments

Comments
 (0)