View Issue Details

IDProjectCategoryView StatusLast Update
0003548Wishes.PluginsLuaMacro / Macro Browserpublic2019-07-29 15:22
ReporterJohnDoeAssigned Toshmuel 
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version3.0 
Target VersionFixed in Version 
Summary0003548: LuaFAR: функция юникодного вывода в консоль
DescriptionПредлагаю включить в библиотеку win новую функцию на основе writeconsole

win.writeconsole (str)

Возвращать может количество выведенных символов, или nil + сообщение об ошибке
Additional Informationhttps://forum.farmanager.com/viewtopic.php?p=147186#p147186
TagsNo tags attached.

Activities

shmuel

2017-11-06 23:24

developer   bugnote:0015791

А потом захотите ещё несколько из той же серии :)

Когда-то давно я написал библиотеку winconsole (лежит на гитхабе), но пользоваться так и не довелось. Если вы, в контексте Фара, с ней поиграетесь, то может быть будет более полная картина, что можно добавить в LuaFAR.

JohnDoe

2017-11-07 00:38

updater   bugnote:0015793

Last edited: 2017-11-07 00:39

View 2 revisions

Да какая там полная картина, я только о самом минимуме думаю, для вывода ведь нет ничего.
(Winconsole собрал себя несколько лет назад, спасибо. Знаю что там консольное апи почти полностью)

shmuel

2019-07-24 18:54

developer   bugnote:0016537

Last edited: 2019-07-24 18:55

View 2 revisions

1. Считаете ли вы целесообразным добавить в LuaFAR код, подобный вашей функции?

2. Если да, то не убрать ли оттуда вызовы panel.GetUserScreen() и panel.SetUserScreen(), с тем, чтобы скрипт мог сам решать какое количество операций вывода в консоль оборачивать этими вызовами?

shmuel

2019-07-24 21:22

developer   bugnote:0016538

LuaFAR build 693.

JohnDoe

2019-07-25 15:21

updater   bugnote:0016539

Last edited: 2019-07-25 15:25

View 3 revisions

shmuel wrote

1. Считаете ли вы целесообразным добавить в LuaFAR код, подобный вашей функции?


Было бы неплохо иметь простейшую функцию, заменяющую штатную в луа print.
Причём я бы так её и назвал.
Но не все оценят, потому что сейчас print == mf.print, а это совсем другое.

shmuel wrote

не убрать ли оттуда вызовы panel.GetUserScreen() и panel.SetUserScreen(),


Не убирать. Если нужен более тонкий контроль, то использовать напрямую win.WriteConsole.

manual wrote

When using this function in LuaFAR plugins [...]


Не уверен что понял эту часть: создаётся впечатление, что речь только о плагинах.
Может лучше что-то вроде: Note that to write correctly to UserScreen any output must be wrapped by panel.GetUserscreen/SetUserScreen calls

shmuel

2019-07-25 17:42

developer   bugnote:0016540

Last edited: 2019-07-25 17:48

View 2 revisions

1. За основу взята не print, а io.write - как более универсальная.
Можно написать ф-цию-обёртку, вставляющую табы - не просто, но и не супер-сложно.
(Я вместо print обычно использую far.Show).

2. Функции библиотеки win могут использоваться вне Фара, поэтому не включают в себя FAR API.
Но здесь написать обёртку супер-просто.

3. Сейчас изменю текст на "When using this function in LuaFAR plugins and macros"

JohnDoe

2019-07-25 18:02

updater   bugnote:0016541

Last edited: 2019-07-25 18:06

View 2 revisions

shmuel wrote

За основу взята не print, а io.write - как более универсальная.
Разумеется.
Но изначально речь шла о функции с форума, и она по подобию print.
Т.е. имеющаяся win.WriteConsole меня более чем устраивает, но добавить ещё и аналог print было бы неплохо.
Функция с форума кстати добавляет табы, но на форуме это одно - а из коробки - другое.

Что до far.Show, то она не всегда применима (например при отладке событий).

shmuel wrote

Сейчас изменю текст на "When using this function in LuaFAR plugins and macros"
Уловил, есть и третий вариант: вне фара.

shmuel

2019-07-25 18:47

developer   bugnote:0016542

Last edited: 2019-07-25 21:45

View 3 revisions

Может добавить такое?
function mf.printconsole(...)
  local narg = select("#", ...)
  panel.GetUserScreen()
  for i=1,narg do
    win.WriteConsole(select(i, ...), i<narg and "\t" or "")--and "\t" 
or "\n" ???
  end
  panel.SetUserScreen()
end


shmuel

2019-07-25 22:10

developer   bugnote:0016543

Last edited: 2019-07-25 22:11

View 2 revisions

LuaMacro build 694.

Issue History

Date Modified Username Field Change
2017-11-06 23:14 JohnDoe New Issue
2017-11-06 23:24 shmuel Note Added: 0015791
2017-11-07 00:38 JohnDoe Note Added: 0015793
2017-11-07 00:39 JohnDoe Note Edited: 0015793 View Revisions
2019-07-24 18:54 shmuel Note Added: 0016537
2019-07-24 18:55 shmuel Note Edited: 0016537 View Revisions
2019-07-24 21:22 shmuel Assigned To => shmuel
2019-07-24 21:22 shmuel Status new => feedback
2019-07-24 21:22 shmuel Note Added: 0016538
2019-07-25 15:21 JohnDoe Note Added: 0016539
2019-07-25 15:21 JohnDoe Status feedback => assigned
2019-07-25 15:25 JohnDoe Note Edited: 0016539 View Revisions
2019-07-25 15:25 JohnDoe Note Edited: 0016539 View Revisions
2019-07-25 17:42 shmuel Note Added: 0016540
2019-07-25 17:48 shmuel Note Edited: 0016540 View Revisions
2019-07-25 18:02 JohnDoe Note Added: 0016541
2019-07-25 18:06 JohnDoe Note Edited: 0016541 View Revisions
2019-07-25 18:47 shmuel Note Added: 0016542
2019-07-25 21:44 shmuel Note Edited: 0016542 View Revisions
2019-07-25 21:45 shmuel Note Edited: 0016542 View Revisions
2019-07-25 22:10 shmuel Status assigned => feedback
2019-07-25 22:10 shmuel Note Added: 0016543
2019-07-25 22:11 shmuel Note Edited: 0016543 View Revisions
2019-07-29 15:22 shmuel Status feedback => closed
2019-07-29 15:22 shmuel Resolution open => fixed