View Issue Details

IDProjectCategoryView StatusLast Update
0003204WishesPlugins API.Editorpublic2016-07-17 19:47
ReporterAleXH Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Summary0003204: Добавить событие EE_CHANGEWINDOWCONTEXT
DescriptionEE_CHANGEWINDOWCONTEXT должно вызываться только при изменении отображаемого текста в окне редактора, в отличие от EE_REDRAW, которое вызывается при любой перерисовке экрана (в частности, при движении курсора).

Это событие было бы оптимальнее использовать для раскраски текста в окне редактора, чем EE_REDRAW.

К тому же с EE_REDRAW есть странности (может баги?). Скрипт Editor.CyrSpace Highlighting.moon демонстрирует странное поведение EE_REDRAW - F3 (активируем раскраску) count: 1, F3 (деактивируем раскраску) count: 6. 2 из 6-и приходятся на включение и отключение отображения пробельных символов в редакторе, зачем ещё 4 - непонятно. На каждый сдвиг курсора REDRAW вызывается 3 раза (зачем?), но не всегда - так, если сдвинуть курсор 10 раз подряд, то счётчик перерисовок может показать не 36, как ожидается, а от 33 до 39 вызовов.

Странным выглядит и разброс затрачиваемого времени на перерисовку одного и того же окна - оно колеблется в слишком широких относительно друг друга пределах даже при залочке частоты шины и множителя ЦП.
TagsNo tags attached.
Build

Activities

shmuel

2016-03-30 07:58

developer   bugnote:0014411

У тикета будет больше шансов на рассмотрение, если вместо ссылки на скрипт Editor.CyrSpace Highlighting.moon вы подготовите специальный демонстрационный пример, желательно раз в пять короче вышеуказанного скрипта.

zg

2016-03-30 11:20

developer   bugnote:0014413

просто восхитительный подход. вместо того, чтобы разбираться, почему приходят лишние ee_redraw, давайте введём новое событие.

AleXH

2016-03-30 13:40

reporter   bugnote:0014415

То что они лишние, нам о том неведомо - может так задумано? :)

В любом случае для раскраски текста в окне редактора, события по перемещению курсора не всегда и нужны.

F=far.Flags
editors={}

count=0
Event
  group:"EditorEvent"
  condition:(id,event,param)->
    return editors[id]
  action:(id,event,param)->
    if event==F.EE_CLOSE
      editors[id]=nil
    if event==F.EE_REDRAW
      count=count+1

Macro
  description:"Test EE_REDRAW"
  area:"Editor"
  key:"F3"
  action:->
    id=editor.GetInfo(-1).EditorID
    if not editors[id]
      count=0
      editors[id]=
        start:0
        finish:0
      msgbox "count",count
    else
      editors[id]=nil
      msgbox "count",count

Выбросил несущественное - при включении count=0, при отключении count=5, сдвиг курсора count+=3

Issue History

Date Modified Username Field Change
2016-03-30 07:25 AleXH New Issue
2016-03-30 07:58 shmuel Note Added: 0014411
2016-03-30 11:20 zg Note Added: 0014413
2016-03-30 13:40 AleXH Note Added: 0014415