View Issue Details

IDProjectCategoryView StatusLast Update
0003297Far ManagerPlugins APIpublic2017-10-31 23:05
ReporterNightRoman Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionno change required 
Product Version3.0 
Summary0003297: Отличие вывода плагином на консоль из меню от ком.строки
DescriptionСуть работы плагина: дважды делаем GetUserScreen, пишем строку, SetUserScreen.

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

CommandLine {
  prefixes="test-user-screen";
  action=function(prefix, text)
    panel.GetUserScreen()
    io.write"Hello from command line\r\n"
    panel.SetUserScreen()
    panel.GetUserScreen()
    io.write"Hello from command line\r\n"
    panel.SetUserScreen()
  end;
}

MenuItem {
  menu="Plugins"; area="Shell"; text="test-user-screen";
  guid="A435D567-AD64-4DD1-8C61-28CB90358817";
  action=function(OpenFrom, Item)
    panel.GetUserScreen()
    io.write"Hello from plugins menu\r\n"
    panel.SetUserScreen()
    panel.GetUserScreen()
    io.write"Hello from plugins menu\r\n"
    panel.SetUserScreen()
  end;
}
TagsNo tags attached.
Build0

Activities

NightRoman

2016-09-14 05:55

reporter   bugnote:0014764

Другой пример отличия

CommandLine {
  prefixes="test-user-screen2";
  action=function(prefix, text)
    panel.GetUserScreen()
    io.write"Begin"
    panel.SetUserScreen()
    panel.GetUserScreen()
    io.write"End"
    panel.SetUserScreen()
  end;
}

MenuItem {
  menu="Plugins"; area="Shell"; text="test-user-screen2";
  guid="117d33a1-8e9c-454c-82ab-d89b088958df";
  action=function(OpenFrom, Item)
    panel.GetUserScreen()
    io.write"Begin"
    panel.SetUserScreen()
    panel.GetUserScreen()
    io.write"End"
    panel.SetUserScreen()
  end;
}

При тесте из ком строки печатается одна строка "Endin" (второй вывод затер первый).

При тесте из меню печатаются две строки "Begin" и "End".

В отличие от первого теста, здесь второй результат более практически полезен.

JohnDoe

2016-09-14 07:27

updater   bugnote:0014765

Last edited: 2017-10-30 13:04

(тема на форуме: https://forum.farmanager.com/viewtopic.php?f=8&t=10466)
Как же совместить ваши пожелания?

Мне видится одно из 2х:

a) сохранять позицию курсора, чтобы в прошлом примере получилось BeginEnd

б) анализировать вывод между get/set, и переводить строку только если фактически был вывод, не переводящий строку.
Может быть достаточно анализировать позицию курсора (переводить строку если курсор не в начале).

NightRoman

2016-09-14 09:55

reporter   bugnote:0014767

Заключение мое о втором тесте неверно. В обоих случаях, конечно, не то, что ожидается, не BeginEnd. О "совмещении пожеланий" речи нет.

Пожелание такое, конечно:
- в первом тесте в обоих случаях выводятся 2 строки без пустой строки между ними
- во втором тесте в обоих случаях выводится BeginEnd

JohnDoe

2017-10-13 07:26

updater   bugnote:0015653

Last edited: 2017-10-13 08:25

В актуальных версиях фара (5064) отличий между тестами уже нет.
1. Пустая строка есть.
2. Begin и End в отдельных строках.

На этом предлагаю тикет закрыть.
Запостил другой: 0003525

Issue History

Date Modified Username Field Change
2016-09-10 15:53 NightRoman New Issue
2016-09-14 05:55 NightRoman Note Added: 0014764
2016-09-14 07:27 JohnDoe Note Added: 0014765
2016-09-14 09:55 NightRoman Note Added: 0014767
2017-10-13 07:26 JohnDoe Note Added: 0015653
2017-10-13 08:25 JohnDoe Note Edited: 0015653
2017-10-30 13:04 JohnDoe Note Edited: 0014765
2017-10-31 23:05 DrKnS Status new => closed
2017-10-31 23:05 DrKnS Resolution open => no change required
2017-10-31 23:05 DrKnS Build => 0