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

Здесь можно сообщить о найденных багах в Far.
User avatar
John Doe
Бюрократ
Posts: 11264
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 84 times

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

Post by John Doe » Tue 22 Aug, 2017 07:45

Latest post of the previous page:

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

User avatar
DrKnS
Posts: 4621
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 122 times
Contact:

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

Post by DrKnS » Tue 22 Aug, 2017 08:13

Повторил, спасибо. Вечером посмотрю.

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

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

Post by Shmuel » Tue 22 Aug, 2017 08:51

Немного исследовал данный вопрос (не до конца, однако).
Поведение изменилось, начиная от 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, то эффекта нет.

User avatar
Aidar
Posts: 533
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 6 times
Contact:

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

Post by Aidar » Tue 22 Aug, 2017 16:13

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

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

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

Post by John Doe » Tue 22 Aug, 2017 17:33

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

Code: Select all

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

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

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

Post by Shmuel » Tue 22 Aug, 2017 17:36

John Doe, я писал про EditorID (аргумент функции), а не про ei.EditorID.

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

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

Post by John Doe » Tue 22 Aug, 2017 18:05

Теперь дошло.
EditorID не равно ei.EditorID как будто событие приходит в окно редактора, которое уже стало фоновым.

Update
Собственно так и есть, и было до 4843, т.е. связано с сабжевым багом не напрямую.
Нормально ли это или нет — другой вопрос. Если да, значит во многих скриптах и плагинах потенциально есть баги.
Last edited by John Doe on Tue 22 Aug, 2017 18:49, edited 1 time in total.

User avatar
DrKnS
Posts: 4621
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 122 times
Contact:

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

Post by DrKnS » Tue 22 Aug, 2017 20:45

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

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

User avatar
zg
zero-gravity
Posts: 5266
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 44 times
Contact:

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

Post by zg » Tue 22 Aug, 2017 20:56

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

User avatar
DrKnS
Posts: 4621
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 122 times
Contact:

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

Post by DrKnS » Tue 22 Aug, 2017 20:59

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

User avatar
zg
zero-gravity
Posts: 5266
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 44 times
Contact:

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

Post by zg » Tue 22 Aug, 2017 21:02

это так и задумано, build 2439 был 5.5 лет назад.

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

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

Post by John Doe » Tue 22 Aug, 2017 21:13

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

User avatar
DrKnS
Posts: 4621
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 122 times
Contact:

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

Post by DrKnS » Tue 22 Aug, 2017 21:16

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

User avatar
zg
zero-gravity
Posts: 5266
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 44 times
Contact:

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

Post by zg » Tue 22 Aug, 2017 21:22

ProcessEditorInputW приходит гарантировано в текущий редактор, так что не всегда кака. но где-то написать надо, да.

Post Reply

Return to “Глюки и баги”