View Issue Details

IDProjectCategoryView StatusLast Update
0001981WishesPlugins API.Editorpublic2013-02-03 00:33
ReporterNightRoman Assigned Tozg  
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionfixed 
Product Version3.0 
Summary0001981: Добавить EE_ADDLINE и EE_DELETELINE
DescriptionЮз-кейс - плагин PowerShellFar во время редактирования PowerShell скрипта мог бы по этим событиям корректировать позиции уставленных в данном скрипте точек останова отладчика (или удалять их, если удалены именно строки с брекпойнтами). В общем же случае для плагинов - нужна возможность отслеживать свои "закладки" в редакторе.

По нажатию клавиш отслеживать как-то криво получается. Много клавиш надо отслеживать - это раз (да и все равно не ясно как быть со вставкой из буфера, например). Текст может меняться и не клавишами, а плагинами - это два (и это не редкость в моем случае, например, переформатирование скрипта и т.п.).

Кажется, что внутри Фара что-то подобное есть, закладки редактора же обновляются по мере редактирования текста. Брекпойнты в юз-кейсе - аналог закладок, их тоже надо обновлять аналогично закладкам.

Предлагается добавить события EE_ADDLINE и EE_DELETELINE и вызывать их предположительно тогда же, когда Фар обновляет свои закладки редактора. Параметры событий: индекс первой вставляемой/удаляемой строки и количество строк, охваченных этой операцией.

Forum
http://forum.farmanager.com/viewtopic.php?f=8&t=6858
TagsNo tags attached.
Build0

Activities

max rusov

2012-01-12 11:28

reporter   bugnote:0008387

Может лучше так: одно событие EE_CHANGELINES, с параметрами

1. Номер первой строки.
2. Количество строк до операции.
3. Количество строк после операции.

Резон: операция замена блока из N строк на блок из M строк.

NightRoman

2012-01-12 11:40

reporter   bugnote:0008388

Да, это, наверное, лучше. Но внутри это, возможно, будет проще реализовать в 2 шага-события удалить Х1 строк, вставить Х2 строк.

Иными словами - и так, и так можно достичь желаемого результата. Как удобнее разработчикам, так пусть и будет.

NightRoman

2012-01-12 11:43

reporter   bugnote:0008389

Но EE_CHANGELINES подход может быть весь эффективнее, да. Так что если все равно, то лучше этим путем пойти, конечно.

NightRoman

2012-01-13 11:14

reporter   bugnote:0008411

На форуме от HaRT впрочем и другой подход прозвучал. Ориентироваться именно на подход с полноценными закладками (как в Фаре, т.е. с позицией с строке и с учетом сдвижек в строке).

Тогда событие должно быть типа EE_CHANGE и описывать регион до и после ("от и до" до и после).

RegionType (rectangular or stream) +
LineTopBefore, ColumnLeftBefore, LineBottomBefore, ColumnRightBefore +
LineTopAfter, ColumnLeftAfter, LineBottomAfter, ColumnRightAfter
(впрочем, Left Top возможно всегда один и тот же)

Такое событие позволит плагинам все сдвижки своих "закладок" учесть. Но если это слишком сложно и потому вообще не будет сделано, но лучше остановиться хотя бы на простом варианте со строками.

NightRoman

2012-02-07 13:00

reporter   bugnote:0008548

Думаю, можно закрывать, ибо 3.0.2442 все реализует практически, как предлагалось. А я уже реализовал обновление брекпойнтов, как и собирался с этой фичей, то есть все в целом прекрасно работает. Тормозов я не вижу (было некоторое опасение).

Есть шероховатости с тем, что Фар иногда посылает неожиданные номера строк в событие EE_CHANGE, ну что ж, селяви... это можно потом отдельной темой открыть, пока и так сойдет.

Спасибо zg за полезную фичу.

Issue History

Date Modified Username Field Change
2012-01-12 11:21 NightRoman New Issue
2012-01-12 11:28 max rusov Note Added: 0008387
2012-01-12 11:40 NightRoman Note Added: 0008388
2012-01-12 11:43 NightRoman Note Added: 0008389
2012-01-13 11:14 NightRoman Note Added: 0008411
2012-02-07 13:00 NightRoman Note Added: 0008548
2012-02-07 13:00 NightRoman Status new => resolved
2012-04-26 07:56 vskirdin Build => 0
2012-04-26 07:56 vskirdin Status resolved => closed
2012-04-26 07:56 vskirdin Assigned To => zg
2012-04-26 07:56 vskirdin Resolution open => fixed
2013-02-03 00:33 alexy Severity minor => feature