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

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

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

Post by faruser »

Хочу из панелей открыть файл и вставить строку.
Создаю файл 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: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Code: Select all

eid = editor.Editor
Кто сказал что функция возвращает Id?
faruser
Posts: 48
Joined: Thu 05 May, 2011 09:22
Location: Москва
Been thanked: 3 times

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

Post by faruser »

Вот чёрт! Спасибо. Настолько был уверен, что возвращается 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: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

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

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