возможность из Lua писать в консольный буфер FARа

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

возможность из Lua писать в консольный буфер FARа

Post by John Doe » Thu 06 Nov, 2014 12:55

Latest post of the previous page:

Воот.
Был плагин. И в код его вы вероятно не заглядывали.
Ответ я уже дал выше: viewtopic.php?p=125203#p125203

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

возможность из Lua писать в консольный буфер FARа

Post by AleXH » Thu 06 Nov, 2014 12:56

О! Понял :) Спасибо, проверил - арбайтен :)

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

возможность из Lua писать в консольный буфер FARа

Post by John Doe » Thu 19 Feb, 2015 12:16

Shmuel wrote: Раз пошла такая пьянка, вот модификация, которая позволяет (у меня по крайней мере) выводить и русский текст, если на входе UTF-8. "Чисто юникодные" символы, естественно, таким путём не выведешь.

Code: Select all

function printToFARConsole(...)
  local OemCp = win.GetOEMCP()
  panel.GetUserScreen()
  for k=1, select("#",...) do
    local s = select(k,...)
    s = win.WideCharToMultiByte(win.Utf8ToUtf16(s),OemCp)
    io.write(s)
  end
  io.write("\n")
  panel.SetUserScreen()
end
С использованием win.Utf8ToOEM получается так:

Code: Select all

function printToFARConsole(...)
  panel.GetUserScreen()
  for k=1, select("#",...) do
    io.write(win.Utf8ToOEM(select(k,...)))
  end
  io.write("\n")
  panel.SetUserScreen()
end

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

возможность из Lua писать в консольный буфер FARа

Post by John Doe » Sat 30 Sep, 2017 08:56

gotar wrote:
Tue 26 Aug, 2014 17:26
Многие ли пользуются функцией print? Предлагаю сделать поведение функции print более похожим на print в обычном lua, т.е. print мог бы выводить информацию на Descktop (ConsoleOutput) [...]
Вот функция, по поведению максимально приближённая к стандартной Lua

Code: Select all

local function _tostr(arg)
  return win.Utf8ToOem(tostring(arg))
end
local function printToFARConsole(...)
  local n = select("#",...)
  panel.GetUserScreen()
  if n>0 then
    io.write(_tostr(...))
    for i=2,n do
      io.write("\t",_tostr(select(i,...)))
    end
  end
  --io.write("\n")
  panel.SetUserScreen()
end
--io.write("\n") закомментирован, потому что panel.SetUserScreen() сам по себе вставляет пустую строку (что нежелательно, и будет предметом очередного тикета на мантисе)

Post Reply

Return to “Обсуждение макросов”