View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002059 | Wishes | Macro | public | 2012-03-31 13:14 | 2018-01-27 13:17 |
Reporter | DAtaMan | Assigned To | vskirdin | ||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | no change required | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0002059: Макрофункции для обращения к строкам редактора по индексу | ||||
Description | В патче реализованы 2 макрокоманды: S=Editor.GetString([N]) - получение строки с индексом N N=Editor.SetString(S[,N]) - запись строки S с индексом N N == 0 в случае ошибки (например, редактор залочен) Если индекс строки == 0, то функции работают с текущей строкой. | ||||
Tags | No tags attached. | ||||
Build | 0 | ||||
|
macro.patch (42,059 bytes)
Index: C++/FAR/unicode_far/syslog.cpp =================================================================== --- C++/FAR/unicode_far/syslog.cpp (revision 7805) +++ C++/FAR/unicode_far/syslog.cpp (working copy) @@ -1207,8 +1207,10 @@ DEF_MCODE_(F_CHR), // S=chr(N) DEF_MCODE_(F_DATE), // S=date([S]) DEF_MCODE_(F_DLG_GETVALUE), // V=Dlg.GetValue([Pos[,InfoID]]) + DEF_MCODE_(F_EDITOR_GET_STRING), // S=Editor.GetString([N]) DEF_MCODE_(F_EDITOR_SEL), // V=Editor.Sel(Action[,Opt]) DEF_MCODE_(F_EDITOR_SET), // N=Editor.Set(N,Var) + DEF_MCODE_(F_EDITOR_SET_STRING), // N=Editor.SetString(S[,N)] DEF_MCODE_(F_EDITOR_UNDO), // V=Editor.Undo(N) DEF_MCODE_(F_EDITOR_POS), // N=Editor.Pos(Op,What[,Where]) DEF_MCODE_(F_ENVIRON), // S=Env(S[,Mode[,Value]]) Index: C++/FAR/unicode_far/macro.cpp =================================================================== --- C++/FAR/unicode_far/macro.cpp (revision 7805) +++ C++/FAR/unicode_far/macro.cpp (working copy) @@ -336,9 +336,11 @@ static bool dateFunc(const TMacroFunction*); static bool dlggetvalueFunc(const TMacroFunction*); static bool dlgsetfocusFunc(const TMacroFunction*); +static bool editorgetstringFunc(const TMacroFunction*); static bool editorposFunc(const TMacroFunction*); static bool editorselFunc(const TMacroFunction*); static bool editorsetFunc(const TMacroFunction*); +static bool editorsetstringFunc(const TMacroFunction*); static bool editorsettitleFunc(const TMacroFunction*); static bool editorundoFunc(const TMacroFunction*); static bool environFunc(const TMacroFunction*); @@ -399,101 +401,103 @@ static TMacroFunction intMacroFunction[]= { //Name fnGUID Syntax Func Buffer BufferSize IntFlags Code - {L"Abs", nullptr, L"N=Abs(N)", absFunc, nullptr, 0, 0, MCODE_F_ABS, }, - {L"Akey", nullptr, L"V=Akey(Mode[,Type])", usersFunc, nullptr, 0, 0, MCODE_F_AKEY, }, - {L"Asc", nullptr, L"N=Asc(N)", ascFunc, nullptr, 0, 0, MCODE_F_ASC, }, - {L"Atoi", nullptr, L"N=Atoi(S[,Radix])", atoiFunc, nullptr, 0, 0, MCODE_F_ATOI, }, - {L"Beep", nullptr, L"N=Beep([N])", beepFunc, nullptr, 0, 0, MCODE_F_BEEP, }, - {L"BM.Add", nullptr, L"N=BM.Add()", usersFunc, nullptr, 0, 0, MCODE_F_BM_ADD, }, - {L"BM.Clear", nullptr, L"N=BM.Clear()", usersFunc, nullptr, 0, 0, MCODE_F_BM_CLEAR, }, - {L"BM.Del", nullptr, L"N=BM.Del([Idx])", usersFunc, nullptr, 0, 0, MCODE_F_BM_DEL, }, - {L"BM.Get", nullptr, L"N=BM.Get(Idx,M)", usersFunc, nullptr, 0, 0, MCODE_F_BM_GET, }, - {L"BM.Goto", nullptr, L"N=BM.Goto([N])", usersFunc, nullptr, 0, 0, MCODE_F_BM_GOTO, }, - {L"BM.Next", nullptr, L"N=BM.Next()", usersFunc, nullptr, 0, 0, MCODE_F_BM_NEXT, }, - {L"BM.Pop", nullptr, L"N=BM.Pop()", usersFunc, nullptr, 0, 0, MCODE_F_BM_POP, }, - {L"BM.Prev", nullptr, L"N=BM.Prev()", usersFunc, nullptr, 0, 0, MCODE_F_BM_PREV, }, - {L"BM.Back", nullptr, L"N=BM.Back()", usersFunc, nullptr, 0, 0, MCODE_F_BM_BACK, }, - {L"BM.Push", nullptr, L"N=BM.Push()", usersFunc, nullptr, 0, 0, MCODE_F_BM_PUSH, }, - {L"BM.Stat", nullptr, L"N=BM.Stat([N])", usersFunc, nullptr, 0, 0, MCODE_F_BM_STAT, }, - {L"CallPlugin", nullptr, L"V=CallPlugin(SysID[,param])", usersFunc, nullptr, 0, 0, MCODE_F_CALLPLUGIN, }, - {L"CheckHotkey", nullptr, L"N=CheckHotkey(S[,N])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_CHECKHOTKEY,}, - {L"Chr", nullptr, L"S=Chr(N)", chrFunc, nullptr, 0, 0, MCODE_F_CHR, }, - {L"Clip", nullptr, L"V=Clip(N[,V])", clipFunc, nullptr, 0, 0, MCODE_F_CLIP, }, - {L"Date", nullptr, L"S=Date([S])", dateFunc, nullptr, 0, 0, MCODE_F_DATE, }, - {L"Dlg.GetValue", nullptr, L"V=Dlg.GetValue([Pos[,InfoID]])", dlggetvalueFunc, nullptr, 0, 0, MCODE_F_DLG_GETVALUE, }, - {L"Dlg.SetFocus", nullptr, L"N=Dlg.SetFocus([ID])", dlgsetfocusFunc, nullptr, 0, 0, MCODE_F_DLG_SETFOCUS, }, - {L"Editor.Pos", nullptr, L"N=Editor.Pos(Op,What[,Where])", editorposFunc, nullptr, 0, 0, MCODE_F_EDITOR_POS, }, - {L"Editor.Sel", nullptr, L"V=Editor.Sel(Action[,Opt])", editorselFunc, nullptr, 0, 0, MCODE_F_EDITOR_SEL, }, - {L"Editor.Set", nullptr, L"N=Editor.Set(N,Var)", editorsetFunc, nullptr, 0, 0, MCODE_F_EDITOR_SET, }, - {L"Editor.Settitle", nullptr, L"N=Editor.SetTitle([Title])", editorsettitleFunc, nullptr, 0, 0, MCODE_F_EDITOR_SETTITLE, }, - {L"Editor.Undo", nullptr, L"V=Editor.Undo(N)", editorundoFunc, nullptr, 0, 0, MCODE_F_EDITOR_UNDO, }, - {L"Env", nullptr, L"S=Env(S[,Mode[,Value]])", environFunc, nullptr, 0, 0, MCODE_F_ENVIRON, }, - {L"Eval", nullptr, L"N=Eval(S[,N])", usersFunc, nullptr, 0, 0, MCODE_F_EVAL, }, - {L"Far.Cfg.Get", nullptr, L"V=Far.Cfg.Get(Key,Name)", farcfggetFunc, nullptr, 0, 0, MCODE_F_FAR_CFG_GET, }, - {L"FAttr", nullptr, L"N=FAttr(S)", fattrFunc, nullptr, 0, 0, MCODE_F_FATTR, }, - {L"FExist", nullptr, L"N=FExist(S)", fexistFunc, nullptr, 0, 0, MCODE_F_FEXIST, }, - {L"Float", nullptr, L"N=Float(V)", floatFunc, nullptr, 0, 0, MCODE_F_FLOAT, }, - {L"FLock", nullptr, L"N=FLock(N,N)", flockFunc, nullptr, 0, 0, MCODE_F_FLOCK, }, - {L"FMatch", nullptr, L"N=FMatch(S,Mask)", fmatchFunc, nullptr, 0, 0, MCODE_F_FMATCH, }, - {L"FSplit", nullptr, L"S=FSplit(S,N)", fsplitFunc, nullptr, 0, 0, MCODE_F_FSPLIT, }, - {L"GetHotkey", nullptr, L"S=GetHotkey([N])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_GETHOTKEY, }, - {L"History.Disable", nullptr, L"N=History.Disable([State])", usersFunc, nullptr, 0, 0, MCODE_F_HISTIORY_DISABLE,}, - {L"Iif", nullptr, L"V=Iif(Condition,V1,V2)", iifFunc, nullptr, 0, 0, MCODE_F_IIF, }, - {L"Index", nullptr, L"S=Index(S1,S2[,Mode])", indexFunc, nullptr, 0, 0, MCODE_F_INDEX, }, - {L"Int", nullptr, L"N=Int(V)", intFunc, nullptr, 0, 0, MCODE_F_INT, }, - {L"Itoa", nullptr, L"S=Itoa(N[,radix])", itowFunc, nullptr, 0, 0, MCODE_F_ITOA, }, - {L"KbdLayout", nullptr, L"N=kbdLayout([N])", kbdLayoutFunc, nullptr, 0, 0, MCODE_F_KBDLAYOUT, }, - {L"Key", nullptr, L"S=Key(V)", keyFunc, nullptr, 0, 0, MCODE_F_KEY, }, - {L"KeyBar.Show", nullptr, L"N=KeyBar.Show([N])", keybarshowFunc, nullptr, 0, 0, MCODE_F_KEYBAR_SHOW, }, - {L"LCase", nullptr, L"S=LCase(S1)", lcaseFunc, nullptr, 0, 0, MCODE_F_LCASE, }, - {L"Len", nullptr, L"N=Len(S)", lenFunc, nullptr, 0, 0, MCODE_F_LEN, }, - {L"Macro.Const", nullptr, L"S=Macro.Const(Index[,Type])", macroenumConstFunc, nullptr, 0, 0, MCODE_F_MACRO_CONST, }, - {L"Macro.Func", nullptr, L"S=Macro.Func(Index[,Type])", macroenumfuncFunc, nullptr, 0, 0, MCODE_F_MACRO_FUNC, }, - {L"Macro.Keyword", nullptr, L"S=Macro.Keyword(Index[,Type])", macroenumkwdFunc, nullptr, 0, 0, MCODE_F_MACRO_KEYWORD, }, - {L"Macro.Var", nullptr, L"S=Macro.Var(Index[,Type])", macroenumvarFunc, nullptr, 0, 0, MCODE_F_MACRO_VAR, }, - {L"Max", nullptr, L"N=Max(N1,N2)", maxFunc, nullptr, 0, 0, MCODE_F_MAX, }, - {L"Menu.Filter", nullptr, L"N=Menu.Filter([Action[,Mode]])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_FILTER, }, - {L"Menu.FilterStr", nullptr, L"N=Menu.FilterStr([Action[,S]])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_FILTERSTR, }, - {L"Menu.GetValue", nullptr, L"S=Menu.GetValue([N])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_GETVALUE, }, - {L"Menu.ItemStatus", nullptr, L"N=Menu.ItemStatus([N])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_ITEMSTATUS, }, - {L"Menu.Select", nullptr, L"N=Menu.Select(S[,N[,Dir]])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_SELECT, }, - {L"Menu.Show", nullptr, L"S=Menu.Show(Items[,Title[,Flags[,FindOrFilter[,X[,Y]]]]])", menushowFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_MENU_SHOW, }, - {L"Min", nullptr, L"N=Min(N1,N2)", minFunc, nullptr, 0, 0, MCODE_F_MIN, }, - {L"MLoad", nullptr, L"N=MLoad(S)", mloadFunc, nullptr, 0, 0, MCODE_F_MLOAD, }, - {L"MMode", nullptr, L"N=MMode(Action[,Value])", usersFunc, nullptr, 0, 0, MCODE_F_MMODE, }, - {L"Mod", nullptr, L"N=Mod(a,b)", modFunc, nullptr, 0, 0, MCODE_F_MOD, }, - {L"MSave", nullptr, L"N=MSave(S)", msaveFunc, nullptr, 0, 0, MCODE_F_MSAVE, }, - {L"MsgBox", nullptr, L"N=MsgBox([Title[,Text[,flags]]])", msgBoxFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_MSGBOX, }, - {L"Panel.FAttr", nullptr, L"N=Panel.FAttr(panelType,fileMask)", panelfattrFunc, nullptr, 0, 0, MCODE_F_PANEL_FATTR, }, - {L"Panel.FExist", nullptr, L"N=Panel.FExist(panelType,fileMask)", panelfexistFunc, nullptr, 0, 0, MCODE_F_PANEL_FEXIST, }, - {L"Panel.Item", nullptr, L"V=Panel.Item(Panel,Index,TypeInfo)", panelitemFunc, nullptr, 0, 0, MCODE_F_PANELITEM, }, - {L"Panel.Select", nullptr, L"V=Panel.Select(panelType,Action[,Mode[,Items]])", panelselectFunc, nullptr, 0, 0, MCODE_F_PANEL_SELECT, }, - {L"Panel.SetPath", nullptr, L"N=panel.SetPath(panelType,pathName[,fileName])", panelsetpathFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_PANEL_SETPATH, }, - {L"Panel.SetPos", nullptr, L"N=panel.SetPos(panelType,fileName)", panelsetposFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_PANEL_SETPOS, }, - {L"Panel.SetPosIdx", nullptr, L"N=Panel.SetPosIdx(panelType,Idx[,InSelection])", panelsetposidxFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_PANEL_SETPOSIDX, }, - {L"PanelItem", nullptr, L"V=PanelItem(Panel,Index,TypeInfo)", panelitemFunc, nullptr, 0, 0, MCODE_F_PANELITEM, }, - {L"Plugin.Call", nullptr, L"N=Plugin.Call(Guid[,Item])", usersFunc, nullptr, 0, 0, MCODE_F_PLUGIN_CALL, }, - {L"Plugin.Command", nullptr, L"N=Plugin.Command(Guid[,Command])", usersFunc, nullptr, 0, 0, MCODE_F_PLUGIN_COMMAND, }, - {L"Plugin.Config", nullptr, L"N=Plugin.Config(Guid[,MenuGuid])", usersFunc, nullptr, 0, 0, MCODE_F_PLUGIN_CONFIG, }, - {L"Plugin.Exist", nullptr, L"N=Plugin.Exist(Guid)", pluginexistFunc, nullptr, 0, 0, MCODE_F_PLUGIN_EXIST, }, - {L"Plugin.Load", nullptr, L"N=Plugin.Load(DllPath[,ForceLoad])", pluginloadFunc, nullptr, 0, 0, MCODE_F_PLUGIN_LOAD, }, - {L"Plugin.Menu", nullptr, L"N=Plugin.Menu(Guid[,MenuGuid])", usersFunc, nullptr, 0, 0, MCODE_F_PLUGIN_MENU, }, - {L"Plugin.UnLoad", nullptr, L"N=Plugin.UnLoad(DllPath)", pluginunloadFunc, nullptr, 0, 0, MCODE_F_PLUGIN_UNLOAD, }, - {L"Print", nullptr, L"N=Print(Str)", usersFunc, nullptr, 0, 0, MCODE_F_PRINT, }, - {L"Prompt", nullptr, L"S=Prompt([Title[,Prompt[,flags[,Src[,History]]]]])", promptFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_PROMPT, }, - {L"Replace", nullptr, L"S=Replace(Str,Find,Replace[,Cnt[,Mode]])", replaceFunc, nullptr, 0, 0, MCODE_F_REPLACE, }, - {L"Rindex", nullptr, L"S=RIndex(S1,S2[,Mode])", rindexFunc, nullptr, 0, 0, MCODE_F_RINDEX, }, - {L"Size2Str", nullptr, L"S=Size2Str(N,Flags[,Width])", size2strFunc, nullptr, 0, 0, MCODE_F_SIZE2STR, }, - {L"Sleep", nullptr, L"N=Sleep(N)", sleepFunc, nullptr, 0, 0, MCODE_F_SLEEP, }, - {L"String", nullptr, L"S=String(V)", stringFunc, nullptr, 0, 0, MCODE_F_STRING, }, - {L"StrWrap", nullptr, L"S=StrWrap(Text,Width[,Break[,Flags]])", strwrapFunc, nullptr, 0, 0, MCODE_F_STRWRAP, }, - {L"SubStr", nullptr, L"S=SubStr(S,start[,length])", substrFunc, nullptr, 0, 0, MCODE_F_SUBSTR, }, - {L"TestFolder", nullptr, L"N=TestFolder(S)", testfolderFunc, nullptr, 0, 0, MCODE_F_TESTFOLDER, }, - {L"Trim", nullptr, L"S=Trim(S[,N])", trimFunc, nullptr, 0, 0, MCODE_F_TRIM, }, - {L"UCase", nullptr, L"S=UCase(S1)", ucaseFunc, nullptr, 0, 0, MCODE_F_UCASE, }, - {L"WaitKey", nullptr, L"V=Waitkey([N,[T]])", waitkeyFunc, nullptr, 0, 0, MCODE_F_WAITKEY, }, - {L"Window.Scroll", nullptr, L"N=Window.Scroll(Lines[,Axis])", windowscrollFunc, nullptr, 0, 0, MCODE_F_WINDOW_SCROLL, }, - {L"Xlat", nullptr, L"S=Xlat(S[,Flags])", xlatFunc, nullptr, 0, 0, MCODE_F_XLAT, }, + {L"Abs", nullptr, L"N=Abs(N)", absFunc, nullptr, 0, 0, MCODE_F_ABS, }, + {L"Akey", nullptr, L"V=Akey(Mode[,Type])", usersFunc, nullptr, 0, 0, MCODE_F_AKEY, }, + {L"Asc", nullptr, L"N=Asc(N)", ascFunc, nullptr, 0, 0, MCODE_F_ASC, }, + {L"Atoi", nullptr, L"N=Atoi(S[,Radix])", atoiFunc, nullptr, 0, 0, MCODE_F_ATOI, }, + {L"Beep", nullptr, L"N=Beep([N])", beepFunc, nullptr, 0, 0, MCODE_F_BEEP, }, + {L"BM.Add", nullptr, L"N=BM.Add()", usersFunc, nullptr, 0, 0, MCODE_F_BM_ADD, }, + {L"BM.Clear", nullptr, L"N=BM.Clear()", usersFunc, nullptr, 0, 0, MCODE_F_BM_CLEAR, }, + {L"BM.Del", nullptr, L"N=BM.Del([Idx])", usersFunc, nullptr, 0, 0, MCODE_F_BM_DEL, }, + {L"BM.Get", nullptr, L"N=BM.Get(Idx,M)", usersFunc, nullptr, 0, 0, MCODE_F_BM_GET, }, + {L"BM.Goto", nullptr, L"N=BM.Goto([N])", usersFunc, nullptr, 0, 0, MCODE_F_BM_GOTO, }, + {L"BM.Next", nullptr, L"N=BM.Next()", usersFunc, nullptr, 0, 0, MCODE_F_BM_NEXT, }, + {L"BM.Pop", nullptr, L"N=BM.Pop()", usersFunc, nullptr, 0, 0, MCODE_F_BM_POP, }, + {L"BM.Prev", nullptr, L"N=BM.Prev()", usersFunc, nullptr, 0, 0, MCODE_F_BM_PREV, }, + {L"BM.Back", nullptr, L"N=BM.Back()", usersFunc, nullptr, 0, 0, MCODE_F_BM_BACK, }, + {L"BM.Push", nullptr, L"N=BM.Push()", usersFunc, nullptr, 0, 0, MCODE_F_BM_PUSH, }, + {L"BM.Stat", nullptr, L"N=BM.Stat([N])", usersFunc, nullptr, 0, 0, MCODE_F_BM_STAT, }, + {L"CallPlugin", nullptr, L"V=CallPlugin(SysID[,param])", usersFunc, nullptr, 0, 0, MCODE_F_CALLPLUGIN, }, + {L"CheckHotkey", nullptr, L"N=CheckHotkey(S[,N])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_CHECKHOTKEY, }, + {L"Chr", nullptr, L"S=Chr(N)", chrFunc, nullptr, 0, 0, MCODE_F_CHR, }, + {L"Clip", nullptr, L"V=Clip(N[,V])", clipFunc, nullptr, 0, 0, MCODE_F_CLIP, }, + {L"Date", nullptr, L"S=Date([S])", dateFunc, nullptr, 0, 0, MCODE_F_DATE, }, + {L"Dlg.GetValue", nullptr, L"V=Dlg.GetValue([Pos[,InfoID]])", dlggetvalueFunc, nullptr, 0, 0, MCODE_F_DLG_GETVALUE, }, + {L"Dlg.SetFocus", nullptr, L"N=Dlg.SetFocus([ID])", dlgsetfocusFunc, nullptr, 0, 0, MCODE_F_DLG_SETFOCUS, }, + {L"Editor.GetString", nullptr, L"S=Editor.GetString([N)]", editorgetstringFunc, nullptr, 0, 0, MCODE_F_EDITOR_GET_STRING, }, + {L"Editor.Pos", nullptr, L"N=Editor.Pos(Op,What[,Where])", editorposFunc, nullptr, 0, 0, MCODE_F_EDITOR_POS, }, + {L"Editor.Sel", nullptr, L"V=Editor.Sel(Action[,Opt])", editorselFunc, nullptr, 0, 0, MCODE_F_EDITOR_SEL, }, + {L"Editor.Set", nullptr, L"N=Editor.Set(N,Var)", editorsetFunc, nullptr, 0, 0, MCODE_F_EDITOR_SET, }, + {L"Editor.SetString", nullptr, L"N=Editor.SetString(S[,N)]", editorsetstringFunc, nullptr, 0, 0, MCODE_F_EDITOR_SET_STRING, }, + {L"Editor.Settitle", nullptr, L"N=Editor.SetTitle([Title])", editorsettitleFunc, nullptr, 0, 0, MCODE_F_EDITOR_SETTITLE, }, + {L"Editor.Undo", nullptr, L"V=Editor.Undo(N)", editorundoFunc, nullptr, 0, 0, MCODE_F_EDITOR_UNDO, }, + {L"Env", nullptr, L"S=Env(S[,Mode[,Value]])", environFunc, nullptr, 0, 0, MCODE_F_ENVIRON, }, + {L"Eval", nullptr, L"N=Eval(S[,N])", usersFunc, nullptr, 0, 0, MCODE_F_EVAL, }, + {L"Far.Cfg.Get", nullptr, L"V=Far.Cfg.Get(Key,Name)", farcfggetFunc, nullptr, 0, 0, MCODE_F_FAR_CFG_GET, }, + {L"FAttr", nullptr, L"N=FAttr(S)", fattrFunc, nullptr, 0, 0, MCODE_F_FATTR, }, + {L"FExist", nullptr, L"N=FExist(S)", fexistFunc, nullptr, 0, 0, MCODE_F_FEXIST, }, + {L"Float", nullptr, L"N=Float(V)", floatFunc, nullptr, 0, 0, MCODE_F_FLOAT, }, + {L"FLock", nullptr, L"N=FLock(N,N)", flockFunc, nullptr, 0, 0, MCODE_F_FLOCK, }, + {L"FMatch", nullptr, L"N=FMatch(S,Mask)", fmatchFunc, nullptr, 0, 0, MCODE_F_FMATCH, }, + {L"FSplit", nullptr, L"S=FSplit(S,N)", fsplitFunc, nullptr, 0, 0, MCODE_F_FSPLIT, }, + {L"GetHotkey", nullptr, L"S=GetHotkey([N])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_GETHOTKEY, }, + {L"History.Disable", nullptr, L"N=History.Disable([State])", usersFunc, nullptr, 0, 0, MCODE_F_HISTIORY_DISABLE, }, + {L"Iif", nullptr, L"V=Iif(Condition,V1,V2)", iifFunc, nullptr, 0, 0, MCODE_F_IIF, }, + {L"Index", nullptr, L"S=Index(S1,S2[,Mode])", indexFunc, nullptr, 0, 0, MCODE_F_INDEX, }, + {L"Int", nullptr, L"N=Int(V)", intFunc, nullptr, 0, 0, MCODE_F_INT, }, + {L"Itoa", nullptr, L"S=Itoa(N[,radix])", itowFunc, nullptr, 0, 0, MCODE_F_ITOA, }, + {L"KbdLayout", nullptr, L"N=kbdLayout([N])", kbdLayoutFunc, nullptr, 0, 0, MCODE_F_KBDLAYOUT, }, + {L"Key", nullptr, L"S=Key(V)", keyFunc, nullptr, 0, 0, MCODE_F_KEY, }, + {L"KeyBar.Show", nullptr, L"N=KeyBar.Show([N])", keybarshowFunc, nullptr, 0, 0, MCODE_F_KEYBAR_SHOW, }, + {L"LCase", nullptr, L"S=LCase(S1)", lcaseFunc, nullptr, 0, 0, MCODE_F_LCASE, }, + {L"Len", nullptr, L"N=Len(S)", lenFunc, nullptr, 0, 0, MCODE_F_LEN, }, + {L"Macro.Const", nullptr, L"S=Macro.Const(Index[,Type])", macroenumConstFunc, nullptr, 0, 0, MCODE_F_MACRO_CONST, }, + {L"Macro.Func", nullptr, L"S=Macro.Func(Index[,Type])", macroenumfuncFunc, nullptr, 0, 0, MCODE_F_MACRO_FUNC, }, + {L"Macro.Keyword", nullptr, L"S=Macro.Keyword(Index[,Type])", macroenumkwdFunc, nullptr, 0, 0, MCODE_F_MACRO_KEYWORD, }, + {L"Macro.Var", nullptr, L"S=Macro.Var(Index[,Type])", macroenumvarFunc, nullptr, 0, 0, MCODE_F_MACRO_VAR, }, + {L"Max", nullptr, L"N=Max(N1,N2)", maxFunc, nullptr, 0, 0, MCODE_F_MAX, }, + {L"Menu.Filter", nullptr, L"N=Menu.Filter([Action[,Mode]])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_FILTER, }, + {L"Menu.FilterStr", nullptr, L"N=Menu.FilterStr([Action[,S]])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_FILTERSTR, }, + {L"Menu.GetValue", nullptr, L"S=Menu.GetValue([N])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_GETVALUE, }, + {L"Menu.ItemStatus", nullptr, L"N=Menu.ItemStatus([N])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_ITEMSTATUS, }, + {L"Menu.Select", nullptr, L"N=Menu.Select(S[,N[,Dir]])", usersFunc, nullptr, 0, 0, MCODE_F_MENU_SELECT, }, + {L"Menu.Show", nullptr, L"S=Menu.Show(Items[,Title[,Flags[,FindOrFilter[,X[,Y]]]]])", menushowFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_MENU_SHOW, }, + {L"Min", nullptr, L"N=Min(N1,N2)", minFunc, nullptr, 0, 0, MCODE_F_MIN, }, + {L"MLoad", nullptr, L"N=MLoad(S)", mloadFunc, nullptr, 0, 0, MCODE_F_MLOAD, }, + {L"MMode", nullptr, L"N=MMode(Action[,Value])", usersFunc, nullptr, 0, 0, MCODE_F_MMODE, }, + {L"Mod", nullptr, L"N=Mod(a,b)", modFunc, nullptr, 0, 0, MCODE_F_MOD, }, + {L"MSave", nullptr, L"N=MSave(S)", msaveFunc, nullptr, 0, 0, MCODE_F_MSAVE, }, + {L"MsgBox", nullptr, L"N=MsgBox([Title[,Text[,flags]]])", msgBoxFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_MSGBOX, }, + {L"Panel.FAttr", nullptr, L"N=Panel.FAttr(panelType,fileMask)", panelfattrFunc, nullptr, 0, 0, MCODE_F_PANEL_FATTR, }, + {L"Panel.FExist", nullptr, L"N=Panel.FExist(panelType,fileMask)", panelfexistFunc, nullptr, 0, 0, MCODE_F_PANEL_FEXIST, }, + {L"Panel.Item", nullptr, L"V=Panel.Item(Panel,Index,TypeInfo)", panelitemFunc, nullptr, 0, 0, MCODE_F_PANELITEM, }, + {L"Panel.Select", nullptr, L"V=Panel.Select(panelType,Action[,Mode[,Items]])", panelselectFunc, nullptr, 0, 0, MCODE_F_PANEL_SELECT, }, + {L"Panel.SetPath", nullptr, L"N=panel.SetPath(panelType,pathName[,fileName])", panelsetpathFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_PANEL_SETPATH, }, + {L"Panel.SetPos", nullptr, L"N=panel.SetPos(panelType,fileName)", panelsetposFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_PANEL_SETPOS, }, + {L"Panel.SetPosIdx", nullptr, L"N=Panel.SetPosIdx(panelType,Idx[,InSelection])", panelsetposidxFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_PANEL_SETPOSIDX, }, + {L"PanelItem", nullptr, L"V=PanelItem(Panel,Index,TypeInfo)", panelitemFunc, nullptr, 0, 0, MCODE_F_PANELITEM, }, + {L"Plugin.Call", nullptr, L"N=Plugin.Call(Guid[,Item])", usersFunc, nullptr, 0, 0, MCODE_F_PLUGIN_CALL, }, + {L"Plugin.Command", nullptr, L"N=Plugin.Command(Guid[,Command])", usersFunc, nullptr, 0, 0, MCODE_F_PLUGIN_COMMAND, }, + {L"Plugin.Config", nullptr, L"N=Plugin.Config(Guid[,MenuGuid])", usersFunc, nullptr, 0, 0, MCODE_F_PLUGIN_CONFIG, }, + {L"Plugin.Exist", nullptr, L"N=Plugin.Exist(Guid)", pluginexistFunc, nullptr, 0, 0, MCODE_F_PLUGIN_EXIST, }, + {L"Plugin.Load", nullptr, L"N=Plugin.Load(DllPath[,ForceLoad])", pluginloadFunc, nullptr, 0, 0, MCODE_F_PLUGIN_LOAD, }, + {L"Plugin.Menu", nullptr, L"N=Plugin.Menu(Guid[,MenuGuid])", usersFunc, nullptr, 0, 0, MCODE_F_PLUGIN_MENU, }, + {L"Plugin.UnLoad", nullptr, L"N=Plugin.UnLoad(DllPath)", pluginunloadFunc, nullptr, 0, 0, MCODE_F_PLUGIN_UNLOAD, }, + {L"Print", nullptr, L"N=Print(Str)", usersFunc, nullptr, 0, 0, MCODE_F_PRINT, }, + {L"Prompt", nullptr, L"S=Prompt([Title[,Prompt[,flags[,Src[,History]]]]])", promptFunc, nullptr, 0, IMFF_UNLOCKSCREEN|IMFF_DISABLEINTINPUT, MCODE_F_PROMPT, }, + {L"Replace", nullptr, L"S=Replace(Str,Find,Replace[,Cnt[,Mode]])", replaceFunc, nullptr, 0, 0, MCODE_F_REPLACE, }, + {L"Rindex", nullptr, L"S=RIndex(S1,S2[,Mode])", rindexFunc, nullptr, 0, 0, MCODE_F_RINDEX, }, + {L"Size2Str", nullptr, L"S=Size2Str(N,Flags[,Width])", size2strFunc, nullptr, 0, 0, MCODE_F_SIZE2STR, }, + {L"Sleep", nullptr, L"N=Sleep(N)", sleepFunc, nullptr, 0, 0, MCODE_F_SLEEP, }, + {L"String", nullptr, L"S=String(V)", stringFunc, nullptr, 0, 0, MCODE_F_STRING, }, + {L"StrWrap", nullptr, L"S=StrWrap(Text,Width[,Break[,Flags]])", strwrapFunc, nullptr, 0, 0, MCODE_F_STRWRAP, }, + {L"SubStr", nullptr, L"S=SubStr(S,start[,length])", substrFunc, nullptr, 0, 0, MCODE_F_SUBSTR, }, + {L"TestFolder", nullptr, L"N=TestFolder(S)", testfolderFunc, nullptr, 0, 0, MCODE_F_TESTFOLDER, }, + {L"Trim", nullptr, L"S=Trim(S[,N])", trimFunc, nullptr, 0, 0, MCODE_F_TRIM, }, + {L"UCase", nullptr, L"S=UCase(S1)", ucaseFunc, nullptr, 0, 0, MCODE_F_UCASE, }, + {L"WaitKey", nullptr, L"V=Waitkey([N,[T]])", waitkeyFunc, nullptr, 0, 0, MCODE_F_WAITKEY, }, + {L"Window.Scroll", nullptr, L"N=Window.Scroll(Lines[,Axis])", windowscrollFunc, nullptr, 0, 0, MCODE_F_WINDOW_SCROLL, }, + {L"Xlat", nullptr, L"S=Xlat(S[,Flags])", xlatFunc, nullptr, 0, 0, MCODE_F_XLAT, }, {} }; @@ -3516,6 +3520,46 @@ return Ret.i() != -1; } +// S=Editor.GetString([N]) +static bool editorgetstringFunc(const TMacroFunction*) +{ + parseParams(1,Params); + TVar Ret(L""); + int Line=(int)Params[0].getInteger()-1; + + if (CtrlObject->Macro.GetMode()==MACRO_EDITOR && CtrlObject->Plugins->CurEditor && CtrlObject->Plugins->CurEditor->IsVisible()) + { + EditorGetString egs; + egs.StringNumber=Line; + CtrlObject->Plugins->CurEditor->EditorControl(ECTL_GETSTRING,&egs); + Ret=egs.StringText; + } + + VMStack.Push(Ret); + return true; +} + +// N=Editor.SetString(S[,N]) +static bool editorsetstringFunc(const TMacroFunction*) +{ + parseParams(2,Params); + TVar Ret; + int Line=(int)Params[1].getInteger()-1; + + if (CtrlObject->Macro.GetMode()==MACRO_EDITOR && CtrlObject->Plugins->CurEditor && CtrlObject->Plugins->CurEditor->IsVisible()) + { + EditorSetString ess; + ess.StringNumber=Line; + ess.StringEOL=NULL; + ess.StringText=Params[0].s(); + ess.StringLength=StrLength(Params[0].s()); + Ret=CtrlObject->Plugins->CurEditor->EditorControl(ECTL_SETSTRING,&ess); + } + + VMStack.Push(Ret); + return Ret.i(); +} + // OldVar=Editor.Set(Idx,Value) static bool editorsetFunc(const TMacroFunction*) { Index: C++/FAR/unicode_far/macroopcode.hpp =================================================================== --- C++/FAR/unicode_far/macroopcode.hpp (revision 7805) +++ C++/FAR/unicode_far/macroopcode.hpp (working copy) @@ -153,8 +153,10 @@ MCODE_F_CHR, // S=chr(N) MCODE_F_DATE, // S=date([S]) MCODE_F_DLG_GETVALUE, // V=Dlg.GetValue([Pos[,InfoID]]) + MCODE_F_EDITOR_GET_STRING, // S=Editor.GetString([N]) MCODE_F_EDITOR_SEL, // V=Editor.Sel(Action[,Opt]) MCODE_F_EDITOR_SET, // N=Editor.Set(N,Var) + MCODE_F_EDITOR_SET_STRING, // N=Editor.SetString(S[,N)] MCODE_F_EDITOR_UNDO, // V=Editor.Undo(N) MCODE_F_EDITOR_POS, // N=Editor.Pos(Op,What[,Where]) MCODE_F_ENVIRON, // S=Env(S[,Mode[,Value]]) |
|
а запись с заменой? то есть строка заменится? Полезно! Для полного удовлетворения не хватает: N=Editor.DelString([N]) N=Editor.AddString(S[,N])или лучше N=Editor.InsString(S[,N]) |
|
>то есть строка заменится? Да, целиком. >Для полного удовлетворения не хватает Тоже можно. Или заменить на что-то типа Editor.String(S[, Action[, N]]) Action = 0 - получить 1 - записать 2 - вставить 3 - удалить ? |
|
S не требуется для актион 0, тогда уж лучше: Editor.String(Index[, Action[, Value]])или Editor.String([Action[, Index[, Value]])- тогда без параметров будет аналогично Editor.Value |
|
В данном случае, наверное, более общеупотребимым будет не String, а Row… или Line… |
|
Зачем это усложнение с Action? Гораздо приятнее исходный вариант. |
|
>Гораздо приятнее исходный вариант. Да, мне тоже. :) Тем более, что мне его достаточно (то есть, без вставки/удаления строк). P.S. Долго буду вдали от интернетов, так что... |
|
Вставку и удаление, конечно, тоже стоит добавить. Будут 4 функции - замечательно. |
|
> Вставку и удаление, конечно, тоже стоит добавить. Тогда может они и плагинам будут полезны? что-то типа ECTL_INSERTROW (Param2 - EditorSetString) и ECTL_DELETEROW (Param1 - номер строки) ??? |
|
Ждем автора? |
|
Да просто не знаю, как сделать лучше. По поводу удаления строки - можно добавить к ECTL_DELETESTRING параметром номер строки. То есть, если null, то как сейчас - удаляется текущая строка. Вроде, плагины это не сломает. И тогда им не нужно будет сохранять/восстанавливать позицию. Кому-нибудь нужно? А вот что делать со вставкой, новую команду в API? Кому-нибудь нужно? (c) Ну или некоторые методы из Editor вытаскивать из приватных для доступа к ним из Macro. |
|
1. Небольшая оптимизация Editor::GetStringByNumber 2. Добавлены макрокоманды: N=Editor.DelLine([Line]) S=Editor.GetStr([Line]) S=Editor.InsStr([S[,Line]]) S=Editor.SetStr([S[,Line]]) если Line не задана, то функции работают с текущей строкой. P.S. В архиве изменённые файлы. Если diff нужен, то только вечером дома сделаю, :) |
|
|
|
Тестовый макрос - удаление пустых строк: $If(Selected) %StartLine=Editor.Sel(0, 0); %EndLine=Editor.Sel(0, 2); $Else %StartLine=1; %EndLine=Editor.Lines; $End %Count=%EndLine-%StartLine+1; %i=%StartLine; Editor.Undo(0); $Rep(%Count) $If(Len(Trim(Editor.GetStr(%i)))==0) Editor.DelLine(%i); $Else %i=%i+1; $End $End Editor.Undo(1); |
|
build 2663 |
|
Я так думаю, что "if (Flags.Check(FEDITOR_LOCKMODE))" для MCODE_F_EDITOR_GETSTR как то не совсем верно :-) Мы же только берем строку, а не модифицируем. |
|
...да и для Ins/Set нужно учитывать то, что описано в 0001879, а не просто GlobalEOL. |
|
...кстати, а почему возврат для Ins/Set обозначен как S (срока)? по коду вижу, что возвращается "1" или "не 1". Где неправда? |
|
>if (Flags.Check(FEDITOR_LOCKMODE))" для MCODE_F_EDITOR_GETSTR как то не совсем верно Угу, сначала было 4 case, потом упростил - и вот результат. :( >...да и для Ins/Set нужно учитывать то, что описано в 0001879, а не просто GlobalEOL. Да, оказывается я не обновился. :) >...кстати, а почему возврат для Ins/Set обозначен как S (срока)? Копипаст, будь он неладен. Конечно же N=... |
|
ждем доп.патч :-) (в Писании "S" заменен на "N") |
|
Вроде так. Доп. изменения: - Editor.GetStr работает и при залоченном редакторе + после Editor.SetStr позиция курсора не меняется |
|
|
|
build 2664 |
|
В Писании: >Вставить значение S в строку с номером Line. Наверное, правильнее написать "_после_ строки с номером Line". |
|
Писание fixed. |
|
|
|
И ещё раз. fixed: если строка не была указана, то она принимала значение "0" |
|
может все же сделать... эээ вместо if (Line.isInteger()) сделать: int nLine=Line.i() тогда будут допустимы "числовые строки", например. %a="12" Editor.InsStr("foo",%a) после 12 строки вставится строка "foo" (это к тому, что TVar "умеет" подобные "трюки"). Хотя, с другой стороны, если %a="foo", то вставка пройдет после текущей строки, хотя Editor.InsStr в этом случае должен был закончится с ошибкой... Наверное в TVar надо вынести checkTypeString()... В этом случае получим: if (!Line.isInteger() && Line.checkTypeString() == tsInt) Line.toInteger(); if (S.isUnknown()) S=L""; Делаем? |
|
точнее вот так: if (!Line.isInteger() && Line.checkTypeString() == tsInt) Line.toInteger(); if (Line.isInteger()) { if (S.isUnknown()) S=L""; Ret=(__int64)CtrlObject->Plugins->CurEditor->VMProcess(MCODE_F_EDITOR_INSSTR, (wchar_t *)S.s(), Line.getInteger()-1); } |
|
>Делаем? И для единообразия вообще во всех функциях, да? :-) |
|
Угу |
|
build 2669 |
|
Не знаю, есть же int(...) и atoi(...), если так уж нужно. Тут ещё такая проблема - если в строке есть табы, то Editor.SetStr глючит с позиционированием курсора. Доделать-то можно, но не хотелось бы замедлять её работу. Может совсем откатить позиционирование? |
|
в принципе да, надо откатить - для позиционирования есть свои функции. |
|
build 2675 Для Editor.SetStr() удален функционал позиционирования курсора. Для этого есть соответствующие функции. |
|
editor.cpp, line 820: int CurPos=EditPtr->GetCurPos(); тоже можно убрать Обнаружил баг на таком файле: пустая строка непустая строка непустая строка пустая строка на _последней строке_ выполняем вышеприведённый макрос удаления пустых строк. И после нажатия CtrlZ строки располагаются по-другому. Где-то баг... На всякий случай: с прежним вариантом GetStringByNumber точно так же. :-) |
|
С таким макросом так же: Editor.Undo(0); CtrlHome $While(Editor.CurLine<Editor.Lines) $If(Len(Trim(Editor.Value))==0) CtrlY $Else Down $End $End Editor.Undo(1); |
|
с последним макросом все ок, а с первым добавляются какие-то пустые строки |
|
Потому что на CtrlY DeleteString(CurLine,NumLine,FALSE,NumLine); а в DelLine DeleteString(CurLine,NumLine,TRUE,NumLine); |
|
DeleteString(EditPtr,DestLine,___FALSE___,DestLine); |
|
я так понимаю, с FALSE все ок? |
|
Да, но тогда нельзя удалить последнюю строку. Лучше, если бы было можно. |
|
Не, с FALSE тоже фигня. На последней строке пару пробелов давани и попробуй первый макрос :-) |
|
походу что-то с Unod/Redo не так. |
|
Либо GetStringByNumber не ту строку выдаёт. |
|
а ещё с выделением непонятки... macro:post ShiftF4 Enter 1 Enter 2 Enter 3 Enter CtrlA editor.setstr("замена",2) Хочется чтобы выделение оставалось на месте! также как и курсор. |
|
и в писании копипаст неправильный про editor.getstr: "Возвращает 1 для успешно выполненной операции..." команда возвращает строку при успехе... |
|
В 2675 удален функционал курсора. Писание поправил |
|
>Хочется чтобы выделение оставалось на месте! также как и курсор. Есть же спецфункции для этого. А текущая реализация работает быстро. Зачем замедлять? |
|
Какая спец функция для сохранения выделения? Тогда уж надо однозначно выделение сбрасывать!!! а то части выделения остаются видимыми - макрос запустите, что очень смахивает на глюк... (иногда визуально выделения нет а Selection == 1) Отличный функционал на порядок быстрее чем работа с редактором и в разы быстрее чем работа с поиск-замена. |
|
>Какая спец функция для сохранения выделения? editor.sel(0, ...), editor.sel(2, ...) и т.д. Громоздко, да, но можно. >Тогда уж надо однозначно выделение сбрасывать!!! editor.sel(4) чем не вариант? В идеале можно бы добавить: editor.undo(4) - запомнить позицию курсора и координаты блока editor.undo(5) - восстановить их |
|
>editor.sel(4) чем не вариант? Пока поймёшь, что выделение НЕОБХОДИМО САМОМУ сбрасывать/восстанавливать, глюки ловить, но метод тыка - наш обычный макро-метод :) Посмотрите на поведение редактора: macro:post ShiftF4 Enter 1 Enter 2 Enter 3 Enter CtrlA editor.setstr("замена",2) >В идеале можно бы добавить: Я и за это, но тут лучше было бы стандартно сохранять выделение как при editor.pos например. а сохранение курсора зря убрали, ладно bm.push bm.pop не сложно по сравнению с editor.sel editor.sel editor.sel editor.sel editor.pos и т.д.... |
|
А что в этом тикете не доделано? И есть ли отличия в поведении от функций LuaFAR API editor.GetString editor.SetString editor.InsertString editor.DeleteString ? |
|
> А что в этом тикете не доделано? Вся требуемая функциональность вроде бы имеется, тикет можно закрывать. |
|
Закрываю ввиду отсутствия возражений. |
Date Modified | Username | Field | Change |
---|---|---|---|
2012-03-31 13:14 | DAtaMan | New Issue | |
2012-03-31 13:14 | DAtaMan | File Added: macro.patch | |
2012-03-31 14:32 | SUSim | Note Added: 0008836 | |
2012-03-31 14:34 | SUSim | Note Edited: 0008836 | |
2012-03-31 14:53 | DAtaMan | Note Added: 0008837 | |
2012-04-01 04:32 | SUSim | Note Added: 0008838 | |
2012-04-01 14:06 | DiRTy_GaRRy | Note Added: 0008841 | |
2012-04-01 18:06 | max rusov | Note Added: 0008842 | |
2012-04-02 06:28 | DAtaMan | Note Added: 0008843 | |
2012-04-02 07:49 | max rusov | Note Added: 0008844 | |
2012-04-06 08:26 | DAtaMan | Note Added: 0008846 | |
2012-04-19 13:06 | vskirdin | Note Added: 0008963 | |
2012-04-19 13:38 | DAtaMan | Note Added: 0008966 | |
2012-05-10 06:45 | DAtaMan | Note Added: 0009114 | |
2012-05-10 06:46 | DAtaMan | File Added: EditorLinesV1.7z | |
2012-05-10 06:49 | DAtaMan | Note Added: 0009115 | |
2012-05-10 08:14 | vskirdin | Note Added: 0009116 | |
2012-05-10 08:14 | vskirdin | Assigned To | => vskirdin |
2012-05-10 08:14 | vskirdin | Status | new => feedback |
2012-05-10 08:23 | vskirdin | Note Added: 0009117 | |
2012-05-10 08:25 | vskirdin | Note Added: 0009118 | |
2012-05-10 08:28 | vskirdin | Note Added: 0009119 | |
2012-05-10 08:38 | DAtaMan | Note Added: 0009120 | |
2012-05-10 08:38 | DAtaMan | Status | feedback => assigned |
2012-05-10 08:47 | vskirdin | Note Added: 0009121 | |
2012-05-10 10:51 | DAtaMan | Note Added: 0009122 | |
2012-05-10 10:51 | DAtaMan | File Added: EditorLinesV2.7z | |
2012-05-10 11:14 | vskirdin | Note Added: 0009123 | |
2012-05-10 11:14 | vskirdin | Status | assigned => feedback |
2012-05-10 11:40 | DAtaMan | Note Added: 0009124 | |
2012-05-10 11:40 | DAtaMan | Status | feedback => assigned |
2012-05-10 11:55 | vskirdin | Note Added: 0009125 | |
2012-05-10 11:55 | vskirdin | Status | assigned => feedback |
2012-05-10 12:44 | DAtaMan | File Added: EditorLinesV3.7z | |
2012-05-10 12:46 | DAtaMan | Note Added: 0009126 | |
2012-05-10 12:46 | DAtaMan | Status | feedback => assigned |
2012-05-10 13:49 | vskirdin | Note Added: 0009127 | |
2012-05-10 13:51 | vskirdin | Note Added: 0009128 | |
2012-05-10 14:05 | DAtaMan | Note Added: 0009129 | |
2012-05-10 15:58 | vskirdin | Note Added: 0009130 | |
2012-05-10 17:16 | vskirdin | Note Added: 0009132 | |
2012-05-10 17:16 | vskirdin | Status | assigned => feedback |
2012-05-10 17:25 | DAtaMan | Note Added: 0009134 | |
2012-05-10 17:25 | DAtaMan | Status | feedback => assigned |
2012-05-10 17:31 | vskirdin | Note Added: 0009135 | |
2012-05-14 10:01 | vskirdin | Note Added: 0009184 | |
2012-05-14 10:01 | vskirdin | Status | assigned => feedback |
2012-05-14 10:33 | 2useven10 | Note Edited: 0009184 | |
2012-05-14 11:33 | DAtaMan | Note Added: 0009186 | |
2012-05-14 11:33 | DAtaMan | Status | feedback => assigned |
2012-05-14 11:53 | DAtaMan | Note Added: 0009188 | |
2012-05-14 12:33 | vskirdin | Note Added: 0009190 | |
2012-05-14 12:39 | DAtaMan | Note Added: 0009191 | |
2012-05-14 12:42 | vskirdin | Note Added: 0009193 | |
2012-05-14 12:43 | vskirdin | Note Added: 0009194 | |
2012-05-14 12:47 | DAtaMan | Note Added: 0009195 | |
2012-05-14 12:51 | vskirdin | Note Added: 0009196 | |
2012-05-14 12:52 | vskirdin | Note Added: 0009197 | |
2012-05-14 13:06 | DAtaMan | Note Added: 0009198 | |
2012-05-14 15:17 | SUSim | Note Added: 0009199 | |
2012-05-14 15:25 | SUSim | Note Added: 0009200 | |
2012-05-14 15:26 | SUSim | Note Edited: 0009199 | |
2012-05-14 15:27 | SUSim | Note Edited: 0009199 | |
2012-05-14 16:30 | vskirdin | Note Added: 0009201 | |
2012-05-14 16:34 | DAtaMan | Note Added: 0009202 | |
2012-05-14 16:47 | SUSim | Note Added: 0009203 | |
2012-05-14 17:33 | DAtaMan | Note Added: 0009204 | |
2012-05-14 18:43 | SUSim | Note Added: 0009205 | |
2013-02-03 00:33 | alexy | Severity | minor => feature |
2013-04-11 18:37 | JohnDoe | Note Added: 0010750 | |
2014-02-09 15:40 | shmuel | Note Added: 0011828 | |
2014-02-13 19:50 | shmuel | Build | => 0 |
2014-02-13 19:50 | shmuel | Note Added: 0011829 | |
2014-02-13 19:50 | shmuel | Status | assigned => closed |
2014-02-13 19:50 | shmuel | Resolution | open => no change required |
2014-02-13 19:50 | shmuel | Fixed in Version | => 3.0 |
2018-01-27 13:17 | zg | Relationship added | related to 0003577 |