View Issue Details

IDProjectCategoryView StatusLast Update
0003548Wishes.PluginsLuaMacro / Macro Browserpublic2019-07-29 13:22
ReporterJohnDoe Assigned Toshmuel  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version3.0 
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 20:24

developer   bugnote:0015791

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

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

JohnDoe

2017-11-06 21:38

updater   bugnote:0015793

Last edited: 2017-11-06 21:39

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

shmuel

2019-07-24 16:54

developer   bugnote:0016537

Last edited: 2019-07-24 16:55

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

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

shmuel

2019-07-24 19:22

developer   bugnote:0016538

LuaFAR build 693.

JohnDoe

2019-07-25 13:21

updater   bugnote:0016539

Last edited: 2019-07-25 13:25

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

shmuel

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

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

shmuel

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

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

manual

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

shmuel

2019-07-25 15:42

developer   bugnote:0016540

Last edited: 2019-07-25 15:48

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 16:02

updater   bugnote:0016541

Last edited: 2019-07-25 16:06

За основу взята не print, а io.write - как более универсальная.

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

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

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

shmuel
Уловил, есть и третий вариант: вне фара.

shmuel

2019-07-25 16:47

developer   bugnote:0016542

Last edited: 2019-07-25 19:45

Может добавить такое?
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 20:10

developer   bugnote:0016543

Last edited: 2019-07-25 20:11

LuaMacro build 694.

Issue History

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