Открыть редактор и вставить строку

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
faruser
Posts: 41
Joined: Thu 05 May, 2011 09:22
Location: Москва

Открыть редактор и вставить строку

Post by faruser » Tue 26 Sep, 2017 19:44

Хочу из панелей открыть файл и вставить строку.
Создаю файл x.lua:

Code: Select all

eid = editor.Editor("foo", nil, 0,0,-1,-1, far.Flags.EF_NONMODAL+far.Flags.EF_IMMEDIATERETURN)
i = editor.InsertText(eid, "*****\n")
if i then
  far.Message("Success")
else
  far.Message("Fail")
end
Вызываю:

Code: Select all

> lua:@x.lua
Ожидаю: редактор со строкой ***** и сообщением "Success" поверх него.
Вижу: сообщение "Fail" поверх пустого редактора.

Пробовал варианты:
  • InsertText менял на editor.SetString (eid, 0, "*****") и editor.SetString (eid, 1, "*****")
  • editor.Redraw(eid) перед if (и после if ... end)
  • вызывал через luas:
  • файл "foo" может отсутствовать или присутствовать
  • флаги указывал как bit64.bor(far.Flags.EF_NONMODAL, far.Flags.EF_IMMEDIATERETURN) и { EF_NONMODAL=1, EF_IMMEDIATERETURN=1 } (от безысходности :unknown: )
Результат такой же.

ЧЯДНТ?

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

Открыть редактор и вставить строку

Post by John Doe » Tue 26 Sep, 2017 19:49

Code: Select all

eid = editor.Editor
Кто сказал что функция возвращает Id?

faruser
Posts: 41
Joined: Thu 05 May, 2011 09:22
Location: Москва

Открыть редактор и вставить строку

Post by faruser » Wed 27 Sep, 2017 17:20

Вот чёрт! Спасибо. Настолько был уверен, что возвращается eid, что даже не стал проверять это в энциклопедии :facepalm:

Code: Select all

editor.Editor("foo", nil, 0,0,-1,-1, far.Flags.EF_NONMODAL+far.Flags.EF_IMMEDIATERETURN)
eid = editor.GetInfo().EditorID
editor.InsertText(eid, "*****\n")
Так работает.

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

Открыть редактор и вставить строку

Post by John Doe » Wed 27 Sep, 2017 17:30

eid может быть и nil, можно обойтись без getinfo.
Но надо убедиться, что редактор открылся.

Post Reply

Return to “Нужна помощь”