Latest post of the previous page:
Так это баг в фаре.Code: Select all
Editor.InsStr(nil,Editor.Lines)
Latest post of the previous page:
Так это баг в фаре.Code: Select all
Editor.InsStr(nil,Editor.Lines)
У фара может фича и есть (не пользуюсь, но и ломать не предлагаю).
Ситуация, когда редактор работает по-разному с файлом до и после сохранения-переоткрытия и отображает разную информацию о количестве строк, не является нормальной. По моему скромному разумению, это как раз то, что принято называть баг.
Вероятнее всего, т.к. нигде не сказано, что позиция должна восстанавливаться.
Хм, действительно теряется позиция при отмене действия. У ряда операций, кста, такая же ситуция. Например удаление строки комбинацией Ctrl+Y .ccaid wrote:но интенсивное тестирование различных вариантов макроса дает результаты: обнаружено, что после дублирования строки и отмены теряется позиция курсора в строке. видимо что-то случилось с editor.UndoRedo (или всегда так было). это относится к обоим макросам на плагинном апи.
В вашем макросе до операций со строками есть editor.SetPosition.
Code: Select all
Macro {
description="Duplicate current line";
area="Editor"; key="CtrlD";
action=function()
local ei = editor.GetInfo()
local id = ei.EditorID
local str = editor.GetString(id, 0, 3)
editor.UndoRedo(id,"EUR_BEGIN")
Keys"Space BS End" -- trick needed to restore pos after undo
editor.InsertString(id)
editor.InsertText(id,str)
editor.SetPosition(id,{CurPos=ei.CurPos})
editor.UndoRedo(id,"EUR_END")
end;
}