Page 3 of 3

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 07:45
by John Doe

Latest post of the previous page:

Для воспроизведения требуется RH Scripts или Visualiser (вероятно проще).
Запускаем фар с новым профилем и единственным плагином.
Открываем в редакторе любой файл, перемещаем курсор в середину какой-нибудь строки, и закрываем редактор (чтобы позиция запомнилась).
Далее открываем любой другой файл в редакторе, и не закрывая его снова открываем первый (можно из истории, а можно переключиться в панели и открыть оттуда).
В результате курсор будет восстановлен в правильной позиции (CurPos), но сам экран (LeftPos) окажется смещён в позицию курсора.

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 08:13
by DrKnS
Повторил, спасибо. Вечером посмотрю.

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 08:51
by Shmuel
Немного исследовал данный вопрос (не до конца, однако).
Поведение изменилось, начиная от 4843, в связи с инициализацией Editor::XX2 нулём. До 4843 он вообще не инициализировался.
Если его инициализировать величиной 0x4000, это решает проблему, по крайней мере для сдвигов меньших этой величины.

Воспроизвести эффект можно установив простой скрипт (т.е. он "заменяет" Visualizer или Rh_Scripts).

Code: Select all

local F = far.Flags
Event {
  group="EditorEvent";
  action=function(EditorID, Event, Param)
    if Event == F.EE_REDRAW then
      local ei = editor.GetInfo(nil)
      if ei then
        local esp = {}
        esp.CurLine = ei.CurLine
        ---esp.CurTabPos = ei.CurTabPos
        ---esp.LeftPos = ei.LeftPos
        editor.SetPosition(nil, esp)
      end
    end
  end;
}
Если в editor.SetPosition вместо nil передавать EditorID, то эффекта нет.

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 16:13
by Aidar
John Doe wrote:
Tue 22 Aug, 2017 07:45
...Для воспроизведения требуется RH Scripts...
Спасибо, воспроизводится.
Только нужен не Rh_Scripts, а lfa_config: место ошибки в lfa_config

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 17:33
by John Doe
Shmuel wrote:
Tue 22 Aug, 2017 08:51
Если в editor.SetPosition вместо nil передавать EditorID, то эффекта нет.

Code: Select all

editor.SetPosition(ei.EditorID, ei)
У меня передача EditorID ничего не меняет

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 17:36
by Shmuel
John Doe, я писал про EditorID (аргумент функции), а не про ei.EditorID.

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 18:05
by John Doe
Теперь дошло.
EditorID не равно ei.EditorID как будто событие приходит в окно редактора, которое уже стало фоновым.

Update
Собственно так и есть, и было до 4843, т.е. связано с сабжевым багом не напрямую.
Нормально ли это или нет — другой вопрос. Если да, значит во многих скриптах и плагинах потенциально есть баги.

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 20:45
by DrKnS
DrKnS wrote:
Tue 22 Aug, 2017 08:13
Вечером посмотрю.
Посмотрел.
Выглядит так, что при открытии нового редактора оконный менеджер перерисовывает все существующие окна, что порождает editor event в предыдущем редакторе, visualiser и прочие начинают делать свои тёмные дела, обращаясь, внимание, к текущему редактору, а с точки зрения менеджера текущим является уже новый, но новый ещё ни разу не отображался и не выставлял размеры для своих строк, у них всё ещё X1 == X2 == 0, отсюда и LeftPos == CurPos.
А до 4843 в XX2 да, был мусор, строка получалась какого-то дичайшего размера, в неё типа всё влезало, LeftPos по месту не подгонялся, иными словами, работало, потому что число ошибок было чётным.

Инициализация XX2 числом побольше, увы, не выход. С моей точки зрения править надо менеджер (в тред кастуется @zg ).

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 20:56
by zg
DrKnS wrote:
Tue 22 Aug, 2017 20:45
С моей точки зрения править надо менеджер (в тред кастуется @zg).
что именно предлагается править?

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 20:59
by DrKnS
zg wrote:
Tue 22 Aug, 2017 20:56
что именно предлагается править?
Видимо, вот это.

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 21:02
by zg
это так и задумано, build 2439 был 5.5 лет назад.

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 21:13
by John Doe
DrKnS wrote:
Tue 22 Aug, 2017 20:45
visualiser и прочие начинают делать свои тёмные дела, обращаясь, внимание, к текущему редактору
В данном случае это просто баг visualizer, который надо править именно в нём.
zg wrote:
Tue 22 Aug, 2017 20:56
что именно предлагается править?
Функция ECTL_SETPOSITION тем не менее действительно работает неправильно (вероятно не только она).
Возможно лучше будет чтобы она вообще ничего не делала, а вернулась с ошибкой в этот момент.

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 21:16
by DrKnS
zg wrote:
Tue 22 Aug, 2017 21:02
это так и задумано, build 2439 был 5.5 лет назад.
Логично.
Тогда может быть тут написать жирными красными буквами, что EditorID = -1 - это кака, используйте то, что в EditorInfo / ProcessEditorEventInfo пришло, т. к. "текущий редактор" - это, в общем случае, что попало?

файл открывается со сдвигом влево

Posted: Tue 22 Aug, 2017 21:22
by zg
ProcessEditorInputW приходит гарантировано в текущий редактор, так что не всегда кака. но где-то написать надо, да.