Index: C:/upp/uppsrc/ide/Common/Util.cpp =================================================================== --- C:/upp/uppsrc/ide/Common/Util.cpp (revision 9938) +++ C:/upp/uppsrc/ide/Common/Util.cpp (working copy) @@ -174,6 +174,7 @@ static void ReadMacro(CParser& p) { IdeMacro macro; + macro.filename = p.GetFileName(); if(p.IsString()) { macro.menu = p.ReadString(); if(p.Char(':')) Index: C:/upp/uppsrc/ide/Core/Core.h =================================================================== --- C:/upp/uppsrc/ide/Core/Core.h (revision 9938) +++ C:/upp/uppsrc/ide/Core/Core.h (working copy) @@ -152,6 +152,7 @@ String menu; String submenu; EscValue code; + String filename; }; ArrayMap& UscGlobal(); Index: C:/upp/uppsrc/ide/idebar.cpp =================================================================== --- C:/upp/uppsrc/ide/idebar.cpp (revision 9938) +++ C:/upp/uppsrc/ide/idebar.cpp (working copy) @@ -289,6 +289,20 @@ EditMacroMenu(menu, va); } } + + menu.Separator(); + menu.Sub("Edit", + [&](Bar& b) { + SortedIndex files; + for(int i = 0; i < mlist.GetCount(); i++) { + if(files.Find(mlist[i].filename) < 0) { + String filename = mlist[i].filename; + files.Add(filename); + b.Add(filename, [filename, this]() { EditFile(filename); } ); + } + } + } + ); } }