View Issue Details

IDProjectCategoryView StatusLast Update
0003684Wishes.PluginsLuaMacro / Macro Browserpublic2018-12-02 09:14
ReportersToLps Assigned Toshmuel  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Summary0003684: Включать и выключать показ макросов с пониженным приоритетом в меню выбора макросов.
DescriptionСейчас при наличии в конкретной макрообласти более одного макроса с одинаковым ключом и с одинаковым наибольшим приоритетом выводится меню выбора макроса. А макросы с меньшими приоритетами остаются как бы "спрятанными" за его пределами. И вызвать их можно только через макробраузеры или по другим ключам, либо с помощью изобретательных ухищрений, вполне подходящих для опытных энтузиастов, но ни как не для массы "рядовых" пользователей.

Поэтому желательно "централизованное" решение. Предпочтительно в форме некой новой команды, подаваемой клавишей или клавишесочетанием непосредственно в меню выбора макросов, и обеспечивающей включение и выключение показа в этом меню макросов с пониженным приоритетом.

Это не только даст возможность по-быстрому вызывать макросы с любыми приоритетами. Но и кроме того позволит активно использовать штатное поле priority для вывода ещё более гибких меню выбора макросов, удобно добавляя к обычным также и расширенные их варианты.

Например, редко используемые макросы, справочные макросы и макросы, дублирующие нативные команды Far`а, можно будет тогда помечать пониженным приоритетом и в нужные моменты оперативно дополнять ими "базовые" меню выбора и также изымать их оттуда простой командой, свободно доступной любому пользователю Far`а.

Обсуждение проводилось от сюда и далее несколько постов.
TagsNo tags attached.

Activities

JohnDoe

2018-11-29 07:50

updater   bugnote:0016344

Предпочтительно в форме некой новой команды, подаваемой клавишей или клавишесочетанием непосредственно в меню выбора макросов,

sToLps
На форуме я уже писал, что ваш способ использования не является универсальным, и скорее наоборот, идёт в разрез общепринятому.
Само по себе это абсолютно нормально, но вот такая фича в меню конфликта "из коробки" может быть даже вредна (имхо).

С другой стороны, можно было бы подумать о расширении функций работы с макросами.
По типу того, как вы изначально предлагали добавить новый параметр в eval.

sToLps

2018-11-30 16:07

reporter   bugnote:0016346

Ума не приложу, чем ситуативный показ макросов с пониженным приоритетом может быть вреден. Поясните, пожалуйста, на чём основано Ваше беспокойство.

Расширение функций работы с макросами может ведь осуществляться и пapaллeльнo. И реализация первоначального предложения была бы полезна для составления ещё более разнообразных макросов. Реализация же изложенного в данном више ориентирована, прежде всего, на увеличения удобства их применения. И также может быть использована и при написании макросов.

shmuel

2018-11-30 21:22

developer   bugnote:0016347

Приложен файл utils.lua для тестирования.
Нужно поставить его вместо LuaMacro\utils.lua и перезапустить Фар.
Переключение режимов - в меню "Execute Macro" нажатием CtrlH
На данный момент я не уверен, что данное изменение полезно и оправдывает усложнение кода.
Хочу получить обратную связь, а там будет видно.
utils.lua.7z (9,979 bytes)

sToLps

2018-12-01 08:00

reporter   bugnote:0016348

shmuel

Большое спасибо!

В добротно настроенной сборке, которую я чаще всего использую в качестве тестовой, проба прошла так как ожидалось, так как надо. На Ура! По команде вызова тестовых макросов вывелось меню только с макросами с обычным приоритетом и затем по CtrlH осуществлялось оперативное быстрое переключение режимов "Execute Macro".

А когда я провёл то же опробование в свежескачанной ночной сборке Far30b5332.x86.20181201, то по команде вызова тестовых макросов вывелось меню только с макросами с пониженным приоритетом. И оно на CtrlH не реагировало. Возможно, в сборке не достаёт каких-то элементов, что ли?

А ещё в одной тестовой сборке Far`а, в которую напихано очень много разных макросов и плагинов, по команде вызова тестовых макросов ожидаемо вывелось меню с макросами с обычным приоритетом. Но потом, при нажатии на CtrlH, оно просто сбрасывалось, без вывода "расширенного" варианта меню. Теперь буду искать виновника, препятствующего нормальной работе в этой сборке. И когда найду, то доложусь.

JohnDoe

2018-12-01 08:57

updater   bugnote:0016349

На данный момент я не уверен, что данное изменение полезно и оправдывает усложнение кода.

shmuel
Имхо, что-то подобное было бы полезно, и не только в сценарии sToLps.

Но действительно, прежде чем внедрять стоит обдумать все ньюансы.
Например в некоторых случаях я лично хотел бы включить в (подобное) меню не только все макросы невзирая на приоритет, но и те, condition которых не сработал.
Кроме того я очень хочу при этом не исполнять выбранный макрос, а лишь получать его, для дальнейшей обработки в своём коде.

Наибольшей универсальности можно достичь указывая параметры при вызыве функции, подобной eval.
Но здесь это оффтопик, напишу на форуме.

sToLps

2018-12-01 09:51

reporter   bugnote:0016350

Last edited: 2018-12-01 09:53

Выше я писал:

Теперь буду искать виновника, препятствующего нормальной работе в этой сборке. И когда найду, то доложусь.

Докладываю. Препятствовавший макрос найден, но у меня, к сожалению, не отмечено откуда именно он взят.
local Info = Info or package.loaded.regscript or function(...) return ... end --luacheck: ignore 113/Info
local nfo = Info { _filename or ...,
  name        = "ConcurrentHotkeys";
  description = "";
  version     = "0.9+pre"; --http://semver.org/lang/ru/
  author      = "jd";
  url         = "http://forum.farmanager.com/viewtopic.php?f=15&t=9197";
  id          = "FDD043A9-5062-472D-A737-7F119073E3EE";
  farbugs = [[
http://bugs.farmanager.com/view.php?id=2878 fixed in 4215
http://bugs.farmanager.com/view.php?id=2877
http://bugs.farmanager.com/view.php?id=2879
http://bugs.farmanager.com/view.php?id=2881]];
  minfarversion = {3,0,0,5010,0}; --far>5009,luamacro>=613
  options     = {
    FilterMenu  = true,
    AltHotkey   = true,
    CtrlHotkey  = true,
    ResetFilter = true,

    checkMacroState = false,
    disabled = false,
  };
  --disabled    = true;
}
if not nfo then return end
local O = nfo.options
local Esc
if O.ResetFilter then
  Esc = type(O.ResetFilter)=="string" and O.ResetFilter:lower() or "esc"
end
local checkMacroState
if not O.checkMacroState then
  function checkMacroState() return true end
elseif type(O.checkMacroState)=="function" then
  checkMacroState = O.checkMacroState
else --default
  function checkMacroState() return not O.checkMacroState or far.MacroGetState()==F.MACROSTATE_NOMACRO end
end

local F = far.Flags
local checkHK,getHK = Object.CheckHotkey,Object.GetHotkey
local Ctrl,Alt = bor(F.RIGHT_CTRL_PRESSED,F.LEFT_CTRL_PRESSED),bor(F.RIGHT_ALT_PRESSED,F.LEFT_ALT_PRESSED)

local function P2p(hDlg, ID) --"visible" Pos -> "total" pos
  local P,p,ii = {},{},0
  for i,item in ipairs(far.GetDlgItem(hDlg,ID)[6]) do --[6]  Selected/ListItems: integer/table
    if band(item.Flags,F.LIF_HIDDEN)==0 then
      ii = ii+1
      P[i],p[ii] = ii,i
    end
  end
  return p,P
end

local lastkey
local processed = {}

local function procFilterMenu(hDlg,ID,ItemIndex)
  local handle = hDlg:rawhandle()
  if processed[handle]~=ID then
    if hDlg:send(F.DM_LISTINFO,ID).ItemsNumber~=Object.ItemCount then return end --macro api item indexes does not count hidden items
    --local P = select(2,P2p(hDlg,ID)); ItemIndex = P[ItemIndex]
    local hk = getHK(ItemIndex):lower()
    if hk=="" or far.NameToInputRecord(hk).VirtualKeyCode~=lastkey.vk or checkHK(hk,ItemIndex+1)==0 then return end
    --
    processed[handle] = ID
    hDlg:send(F.DM_SHOWDIALOG,0)
    local list = far.GetDlgItem(hDlg,ID)[6] --[6]  Selected/ListItems: integer/table
    local item
    --todo q/й
    for i=#list,1,-1 do
      if getHK(i):lower()~=hk then
        item = list[i]
        hDlg:send(F.DM_LISTUPDATE,ID,{Index=i,Text=item.Text,Flags=bor(item.Flags,F.LIF_HIDDEN)})
      end
    end
    hDlg:send(F.DM_SHOWDIALOG,1)
    if item then
      --if Object.ItemCount==1 then return param.hDlg:send"DM_CLOSE" end
      Menu.Filter(4) --подправить высоту списка под количество элементов
      --if getHK(lastkey.InitPos):lower()~=hk then return 0 end
      return 0
    end
  end
  return hDlg:send(F.DM_LISTSETCURPOS,ID,{SelectPos=lastkey.InitPos+1})~=lastkey.InitPos and 1 or 0
end

local function procAltHotkey(hDlg,ID)
  local hk = getHK()
  if hk~="" and far.NameToInputRecord(hk).VirtualKeyCode==lastkey.vk then
    local p,P = P2p(hDlg,ID)
    local Pos = checkHK(hk,P[lastkey.InitPos]+1)
    Pos = Pos~=0 and Pos or checkHK(hk)
    hDlg:send(F.DM_LISTSETCURPOS,ID,{SelectPos=p[Pos]})
    return 1
  end
end

local function saveLastKey(hDlg,ID,rec)
  local AltPressed = band(rec.ControlKeyState,Alt)~=0
  local CtrlPressed = band(rec.ControlKeyState,Ctrl)~=0
  return {
    Alt  = AltPressed  and not CtrlPressed,
    Ctrl = CtrlPressed and not AltPressed,
    vk = rec.VirtualKeyCode,
    InitPos = hDlg:send(F.DM_LISTINFO,ID).SelectPos
  }
end

local function CtrlHotkey(hDlg,ID,key) --Ctrl-<hotkey> to run hotkey
  local Pos = checkHK(key)
  if Pos~=0 then
    local hk = getHK():lower()
    if hk~=key and hk~=far.XLat(key) then
      hDlg:send(F.DM_LISTSETCURPOS,ID,{SelectPos=P2p(hDlg,ID)[Pos]})
    end
    return hDlg:send"DM_CLOSE"
  end
end

local function ResetFilter(hDlg,ID)
  local handle = hDlg:rawhandle()
  if processed[handle]==ID then
    local flag
    hDlg:send(F.DM_SHOWDIALOG,0)
    for i,item in ipairs(far.GetDlgItem(hDlg,ID)[6]) do--[6]  Selected/ListItems: integer/table
      if band(item.Flags,F.LIF_HIDDEN)~=0 then
        flag = true
        hDlg:send(F.DM_LISTUPDATE,ID,{Index=i,Text=item.Text,Flags=band(item.Flags,bnot(F.LIF_HIDDEN))})
      end
    end
    hDlg:send(F.DM_SHOWDIALOG,1)
    processed[handle] = nil
    if flag then
      Menu.Filter(4) --подправить высоту списка под количество элементов
      return 1
    end
  end
end

Event { group="DialogEvent";
description="_DialogEvent:ConcurrentHotkey обработчик (&jd)"; -- description="ConcurrentHotkey handler";
  id="33E83694-4F10-44A0-8CAD-C7DE90F5621C";
  action=function(Event,param)
    if O.disabled then
      return
    elseif Event==F.DE_DLGPROCEND then
      if param.Msg==F.DN_CLOSE then------------------------------<
        local handle = param.hDlg:rawhandle()
        if processed[handle] then processed[handle] = nil end
      end
    elseif Event~=F.DE_DLGPROCINIT then
      return
    elseif param.Msg==F.DN_CONTROLINPUT then-----------------------<
      if param.Param2.EventType==F.KEY_EVENT and param.Param2.KeyDown then
        --todo Menu.Filter
        local hDlg,ID,rec = param.hDlg,param.Param1,param.Param2
        if not checkMacroState() or far.GetDlgItem(hDlg,ID)[1]~=F.DI_LISTBOX then
          lastkey = false; return
        end
        lastkey = saveLastKey(hDlg,ID,rec)                   --save lastkey
        local key = far.InputRecordToName(rec)
        if not key then return end
        key = key:lower()
        if lastkey.Ctrl then                                 --CtrlHotkey
          return O.CtrlHotkey and CtrlHotkey(hDlg,ID,key:match("r?ctrl(.+)")) or nil
        elseif key==Esc then
          return ResetFilter(hDlg,ID)                        --ResetFilter
        end
      end
    elseif param.Msg==F.DN_LISTHOTKEY and lastkey then---------<
      local hDlg,ID,ItemIndex = param.hDlg,param.Param1,param.Param2
      if lastkey.Alt then
        return O.AltHotkey and procAltHotkey(hDlg,ID) or nil --Alt-<hotkey> to pos to menu item (cycle through same hotkeys)
      else
        return O.FilterMenu and procFilterMenu(hDlg,ID,ItemIndex) or nil --Concurrent hotkeys menu filter
      end
    end
  end;
}

JohnDoe

2018-12-01 11:51

updater   bugnote:0016351

но у меня, к сожалению, не отмечено откуда именно он взят.

sToLps
Там же ссылка на тему есть.
Макрос определённо нуждается в доработке, поскольку имеет серьёзные недостатки, проявляющиеся и в некоторых других случаях.

shmuel

2018-12-01 13:33

developer   bugnote:0016352

Last edited: 2018-12-01 13:33

По поводу файла для тестирования, насколько я понимаю:
a) sToLps не пришёл к однозначному выводу.
b) JohnDoe и вовсе непонятно, пробовал ли.

sToLps

2018-12-01 14:18

reporter   bugnote:0016353

Почему же?

Вот я написал:

проба прошла так как ожидалось, так как надо. На Ура! По команде вызова тестовых макросов вывелось меню только с макросами с обычным приоритетом и затем по CtrlH осуществлялось оперативное быстрое переключение режимов "Execute Macro"

Собственно, это и есть вывод — получилось очень хорошо.

JohnDoe

2018-12-01 14:27

updater   bugnote:0016354

У sToLps не работало из-за конфликтующего макроса, перехватывающего CtrlH.
У меня тоже работает, как и ожидалось.

Сомнения в таком решении у меня лишь идеологические:
- выводим макросы отсеянные низким приоритетом, но не отсеянные по флагам/условиям
- выводим меню в случае когда есть 2 макроса с одним приоритетом, и нет возможности вывести его если макрос всего один (но есть низкоприоритетные)

Т.е. решение получается имхо неоправданно узко специализированное.

sToLps

2018-12-01 14:36

reporter   bugnote:0016355

Получившееся решение хорошо решает поставленную задачу. Другие задачи или эту же задачу, но при других условиях, можно будет попробовать порешать другими способами. Или, со временем, усовершенствовать этот способ. По-моему, так.

shmuel

2018-12-01 14:39

developer   bugnote:0016356

> - выводим макросы отсеянные низким приоритетом, но не отсеянные по флагам/условиям
Ну вот зачем же их выводить, если условий для их исполнения нет. Они ведь не то что проиграли макросам-конкурентам, они в данных обстоятельствах просто непригодны для исполнения. Не забудьте, что меню называется "Исполнить макрос".

> нет возможности вывести его если макрос всего один (но есть низкоприоритетные)
Технически это сделать очень легко, но на мой взгляд, это будет логически неверно. В случае, когда есть ровно один "макрос-победитель", мне представляется, что он должен быть немедленно исполнен, без всякого меню.

JohnDoe

2018-12-01 14:58

updater   bugnote:0016357

Ну вот зачем же их выводить, если условий для их исполнения нет.

shmuel
Напомню, что автор тикета использует меню не по его прямому назначению.
Таким образом кто-то другой (например я) захочет использовать его тоже немного нестандартно.
Например, чтобы посмотреть и откорректировать (AltF4) все макросы на данную клавишу, и для этого не имеет значения есть ли условия (как раз для того и требуется отредактировать, чтоб условия поправить).

В случае, когда есть ровно один "макрос-победитель", мне представляется, что он должен быть немедленно исполнен, без всякого меню.

shmuel
Именно так (и я бы возражал, будь оно иначе).
Но в данном случае с помощью этого меню решаются немного другие задачи.

Я за то, чтобы в стандартное меню конфликта не добавлять ничего. А вместо этого дать апи, посволяющие легко реализовать подобные свистелки.

sToLps

2018-12-01 15:12

reporter   bugnote:0016358

> А вместо этого дать апи
Ну почему же вместо? Когда намного полезнее сделать вместе с тем. Причём апи — в расширенном варианте.
То, что получилось, очень удобно при использовании уже готовых макросов. А апи нужно для их составления. И у меня уже созрели некоторые предложения, которые я намерен изложить в другом месте или другом више.

sToLps

2018-12-01 15:22

reporter   bugnote:0016359

Last edited: 2018-12-01 15:25

shmuel
Кстати, по оформлению. На мой взгляд очень удачно сделано с разделительной полосой. А не дать ли по ней запись типа: "----- CtrlH: макросы с пониженным priority -----" ?

shmuel

2018-12-01 15:44

developer   bugnote:0016360

Last edited: 2018-12-01 15:44

JohnDoe> Я за то, чтобы в стандартное меню конфликта не добавлять ничего. А вместо этого дать апи, посволяющие легко реализовать подобные свистелки.
Ну так если не нажимать CtrlH, то ничего и не добавляется. Кто не знает, ничего и не заметит.
По поводу дополнительного API - это вроде отдельная тема, не имеющая прямого отношения к данной.
В общем, подумав, склоняюсь к тому, чтобы оставить сделанное изменение. Аргумент "за" таков: приоритеты формируются по заранее заданным алгоритмам, а в данный момент времени (поскольку меню так или иначе выводится) можно дать пользователю бОльшую возможность повлиять на решение.

sToLps> удачно сделано с разделительной полосой. А не дать ли по ней запись типа: "----- CtrlH: макросы с пониженным priority -----" ?
Думал об этом, пока не определился. Информативность повышается, но меню становится более "забитым", перенасыщенным что ли.

shmuel

2018-12-01 15:48

developer   bugnote:0016361

А может имеет смысл обойтись без CtrlH, сразу выводя расширенное меню? Сохраняя при этом разделитель между двумя его частями.

sToLps

2018-12-01 16:02

reporter   bugnote:0016362

Last edited: 2018-12-01 16:08

> А может имеет смысл обойтись без CtrlH, сразу выводя расширенное меню?
Лично я ни сколько не против. Но я не знаю как к этому отнесутся те пользователи, которые не привыкли в меню выбора макроса видеть макросы с пониженным приоритетом. А ведь привычка — вторая натура.
upd: Но, поскольку это удобно и полезно, вероятнее всего, что видеть их в меню быстро войдёт в привычку.

shmuel

2018-12-01 20:18

developer   bugnote:0016363

LM build 676.

sToLps

2018-12-02 02:59

reporter   bugnote:0016364

Last edited: 2018-12-02 03:30

shmuel
Попрактиковавшись, предлагаю ещё раз вернуться к вопросу:
> А может имеет смысл обойтись без CtrlH, сразу выводя расширенное меню?

Дело ведь в том, что конкретно в момент нажатия клавишесочетания пользователь не намерен исполнять макросы с пониженным приоритетом. И поэтому когда он их не видит в меню, то это для него привычно. А если он, всё-таки, захочет к ним обратиться, то дополнительно нажимает на CtrlH и получает такую возможность. Т.е. при непосредственном выводе этих макросов в меню без дополнительных действий со стороны пользователя возникает, всё же, некоторый диссонанс.

Поэтому я предлагаю макросы с пониженным приоритетом в меню выбора выводить, всё же, после нажатия на CtrlH. Либо, как вариант, засеривать их, делать их в данный момент не исполнимыми. Т.е. информировать, таки, пользователя о том, что они имеются, с доступом, причём, к их редактированию по AltF4. По-моему, тогда всё будет вполне гармонично.

И если пользователь сочтёт необходимым, то оперативно поменяет приоритет и получит непосредственную возможность исполнить данный макрос из данного меню выбора.

И, кстати, м.б. тогда и разделительная черта будет уже излишней?

upd: P.S. Хотя вот лично мне такой вариант как есть прямо сейчас даже больше нравится, хоть он и менее логичен.

shmuel

2018-12-02 05:39

developer   bugnote:0016365

sToLps> Хотя вот лично мне такой вариант как есть прямо сейчас даже больше нравится, хоть он и менее логичен.

Вот его и оставим. Мне он не кажется менее логичным.
Низкоприоритетные макросы размещаются внизу, надпись на разделителе информирует об этом. Они не мешают пользователю выбрать один из высокоприоритетных макросов.

sToLps

2018-12-02 06:06

reporter   bugnote:0016366

shmuel> Вот его и оставим.
Вот и отлично! Большое спасибо за очередное улучшение меню выбора макроса!

При этом у меня пока что сохраняется вопрос почему так странно работает меню в ночнушке? М.б. он уже и не касается данного виша, тогда я готов обсудить его в другом месте, дайте, пожалуйста, только знать об этом.

Дело в следующем. Выше я писал: [quote=А когда я провёл то же опробование в свежескачанной ночной сборке Far30b5332.x86.20181201, то по команде вызова тестовых макросов вывелось меню только с макросами с пониженным приоритетом. И оно на CtrlH не реагировало. Возможно, в сборке не достаёт каких-то элементов, что ли?][/quote]

А сегодня я распаковал в отдельную папку Far30b5333.x86.20181202.7z, дополнил в неё default.farconfig и Far.exe.ini, а в \Profile\Macros\scripts\ положил два lua-файла с наборами макросов для тестирования. Один в области Shell, а другой в Editor. Оба файла в двух других разных сборках выдают правильные меню выбора. А здесь в области Shell меню выводится правильное, а в области Editor показывает только 3 макроса вместо 12. Причём те, что с пониженным приоритетом. И без разделительной черты над ними. Даже не представляю себе что нужно было бы посмотреть, чтобы определить в чём дело?

shmuel

2018-12-02 06:15

developer   bugnote:0016367

@sToLps, если ваши макросы не секретные, заархивируйте их и приложите здесь, а я повторю ваш эксперимент. Если не хотите выкладывать в открытый доступ - можете приложить мне в личном сообщении на форуме.

shmuel

2018-12-02 06:50

developer   bugnote:0016368

sToLps> в области Editor показывает только 3 макроса вместо 12. Причём те, что с пониженным приоритетом. И без разделительной черты над ними. Даже не представляю себе что нужно было бы посмотреть, чтобы определить в чём дело?

Такое легко может быть. Те 9 макросов, что не показываются, были отсеяны либо по флагам, либо по маске файлов, либо по condition(). Оставшиеся 3 показываются, разделительной черты быть не должно, поскольку в данный момент это макросы с наивысшим приоритетом (приоритет отсеявшихся макросов при этом не учитывается).

sToLps

2018-12-02 07:07

reporter   bugnote:0016369

Last edited: 2018-12-02 07:18

shmuel>а я повторю ваш эксперимент

Послал в личку. Причём тот аттач принимает файлы размером не более чем 50 Кбайт и не более чем по одному файлу за раз. Уф.

upd: а ещё он не принимает файлы с расширением типа .001

sToLps

2018-12-02 07:17

reporter   bugnote:0016370

shmuel> Такое легко может быть.

Почему же тогда в двух других сборках эти же самые макросы из этих же самых файлов в меню отражаются нормально, а в ночнушке — нет? Мне представляется, что, возможно, что-то не то с настройкой ночнушки. Но вот я повторил эксперимент без подставления в неё default.farconfig и Far.exe.ini и всё равно результат в ней тот же... "Всё страньше и страньше" — сказала Алиса".

shmuel

2018-12-02 07:25

developer   bugnote:0016371

@sToLps, я распаковал, глянул внутрь, увидел макрос John Doe по показу/скрытию макросов в этом самом меню. Дальше даже пробовать не буду - разбирайтесь с автором.

sToLps

2018-12-02 07:31

reporter   bugnote:0016372

shmuel Большое спасибо! Извините, пожалуйста, за переполох.

sToLps

2018-12-02 09:05

reporter   bugnote:0016373

shmuel

Позапускал ещё макросы разные из-под одного из LiveCD, в системе которого в других случаях бывают неожиданные результаты. И получил отличный результат (за исключением проблемного файла, что было ожидаемо). Так что с моей стороны выражаю полное удовлетворение. В очередной раз Вы сделали даже лучше, чем я изначально предполагал. Большое спасибо!

shmuel

2018-12-02 09:14

developer   bugnote:0016374

@sToLps, ничего такого особенного я не сделал, сначала не был уверен, что это вообще нужно делать, потом пришёл к выводу, что это, пусть небольшое, но улучшение.

Issue History

Date Modified Username Field Change
2018-11-28 16:42 sToLps New Issue
2018-11-29 07:50 JohnDoe Note Added: 0016344
2018-11-30 16:07 sToLps Note Added: 0016346
2018-11-30 21:22 shmuel File Added: utils.lua.7z
2018-11-30 21:22 shmuel Note Added: 0016347
2018-12-01 08:00 sToLps Note Added: 0016348
2018-12-01 08:57 JohnDoe Note Added: 0016349
2018-12-01 09:51 sToLps Note Added: 0016350
2018-12-01 09:53 sToLps Note Edited: 0016350
2018-12-01 11:51 JohnDoe Note Added: 0016351
2018-12-01 13:33 shmuel Note Added: 0016352
2018-12-01 13:33 shmuel Note Edited: 0016352
2018-12-01 14:18 sToLps Note Added: 0016353
2018-12-01 14:27 JohnDoe Note Added: 0016354
2018-12-01 14:36 sToLps Note Added: 0016355
2018-12-01 14:39 shmuel Note Added: 0016356
2018-12-01 14:58 JohnDoe Note Added: 0016357
2018-12-01 15:12 sToLps Note Added: 0016358
2018-12-01 15:22 sToLps Note Added: 0016359
2018-12-01 15:25 sToLps Note Edited: 0016359
2018-12-01 15:44 shmuel Note Added: 0016360
2018-12-01 15:44 shmuel Note Edited: 0016360
2018-12-01 15:48 shmuel Note Added: 0016361
2018-12-01 16:02 sToLps Note Added: 0016362
2018-12-01 16:08 sToLps Note Edited: 0016362
2018-12-01 20:18 shmuel Assigned To => shmuel
2018-12-01 20:18 shmuel Status new => feedback
2018-12-01 20:18 shmuel Note Added: 0016363
2018-12-02 02:59 sToLps Note Added: 0016364
2018-12-02 02:59 sToLps Status feedback => assigned
2018-12-02 03:30 sToLps Note Edited: 0016364
2018-12-02 05:39 shmuel Note Added: 0016365
2018-12-02 06:06 sToLps Note Added: 0016366
2018-12-02 06:15 shmuel Note Added: 0016367
2018-12-02 06:50 shmuel Note Added: 0016368
2018-12-02 07:07 sToLps Note Added: 0016369
2018-12-02 07:17 sToLps Note Added: 0016370
2018-12-02 07:18 sToLps Note Edited: 0016369
2018-12-02 07:25 shmuel Note Added: 0016371
2018-12-02 07:31 sToLps Note Added: 0016372
2018-12-02 09:05 sToLps Note Added: 0016373
2018-12-02 09:14 shmuel Status assigned => closed
2018-12-02 09:14 shmuel Resolution open => fixed
2018-12-02 09:14 shmuel Note Added: 0016374