View Issue Details

IDProjectCategoryView StatusLast Update
0003061Wishes_Commonpublic2016-04-20 08:36
ReporterJohnDoe Assigned Tovskirdin  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Product Version3.0 
Summary0003061: FSF.CopyToClipboard + FCT_COLUMN: вертикальные блоки, совместимые со сторонними приложениями
DescriptionСейчас вертикальные блоки в буфере обмена реализованы в виде специального формата "FAR_VerticalBlock_Unicode", содержимое которого дублирует "CF_UNICODETEXT", и распознаётся только Far Manager.

Предлагаю вместо этого поддержать общепринятые форматы:
"Borland IDE Block Type"
"MSDEVColumnSelect"

Собственный формат в этом случае будет не нужен.
Additional Informationhttp://api.farmanager.com/ru/fsf/copytoclipboard.html

http://forum.farmanager.com/viewtopic.php?p=131082#p131082
TagsNo tags attached.
Build4627

Relationships

related to 0003142 closed2useven10 Far Manager Сломана вставка текста из борландовской IDE 

Activities

JohnDoe

2015-08-14 17:36

updater   bugnote:0013766

Категория выбрана неверно, т.к. пожелание относится не только к API.
Прошу исправить на "_Common", и соответственно заменить заголовок на "вертикальные блоки, совместимые со сторонними приложениями"

vskirdin

2015-10-14 20:08

administrator   bugnote:0013968

"MSDEVColumnSelect" - какая структура данных в клипборд отсаживается?
Данные бинарные. Как дополнение к CF_UNICODETEXT?

2useven10

2015-10-14 22:21

developer   bugnote:0013969

Насколько я помню, там пустой блок.
У борланда 1 байт с выставленным 0x02.
ScintillaWin.cxx гуглится, там всё достаточно просто.

vskirdin

2015-10-15 07:48

administrator   bugnote:0013970

Про борланд ничего не могу сказать, но у MSDEV... явно не 1 байт.

0000000000: 96 A7 9E FD 13 3B 70 43 │ A6 79 56 10 6B B2 88 FB
0000000010: 00 01 00 00 00 FF FF FF │ FF 01 00 00 00 00 00 00
0000000020: 00 04 01 00 00 00 0E 53 │ 79 73 74 65 6D 2E 42 6F
0000000030: 6F 6C 65 61 6E 01 00 00 │ 00 07 6D 5F 76 61 6C 75
0000000040: 65 00 01 01 0B │

2useven10

2015-10-15 12:16

developer   bugnote:0013972

Что туда студия пишет X3.
Но вполне может быть, что в фар будет достаточно просто проверять наличие этого формата и записывать пустой блок этого формата.

vskirdin

2015-10-15 12:59

administrator   bugnote:0013973

Если для операции "оттуда в Far", то в принципе применимо - достаточно проверить наличие MSDEVColumnSelect (или борманд), а данные брать из CF_UNICODETEXT и вставлять как будто это FAR_VerticalBlock_Unicode.
Но как я понял из описания - должно работать в оба направления.

2useven10

2015-10-15 13:16

developer   bugnote:0013974

Проверил вставку в студию блока с пустым MSDEVColumnSelect.
Отличий от вставки вертикального блока помеченного в самой студии не заметил.

vskirdin

2015-10-15 13:25

administrator   bugnote:0013975

Last edited: 2015-10-15 14:01

Разжуй.
UPD: правильно я понимаю, что для того, чтобы И борманд заработал, достаточно все же не нулевой блок, а, скажем, блок размером в 1 байт (который содержит 0x02)?

2useven10

2015-10-15 14:08

developer   bugnote:0013976

В тесте положил в клипборд CF_UNICODETEXT и пустой блок MSDEVColumnSelect:
SetClipboardData((CLIPFORMAT)RegisterClipboardFormat(L"MSDEVColumnSelect"),0);
В студии Ctrl-V --- вставляется вертикальный блок.

2useven10

2015-10-15 14:09

developer   bugnote:0013977

UPD: да

vskirdin

2015-10-15 14:23

administrator   bugnote:0013978

Так, по ходу надо добавлять оба блока или достаточно "MSDEVColumnSelect" размером в 1 байт и = 0x02?

2useven10

2015-10-15 14:40

developer   bugnote:0013979

Два. У них разные типы. Регистрируешь 2 типа.
"MSDEVColumnSelect" выставляешь пустым а "Borland IDE Block Type", с одним байтом 0x02.

vskirdin

2015-10-15 14:49

administrator   bugnote:0013980

build 4436.
Тип "Borland IDE Block Type" испытать не на чем.
С "MSDEVColumnSelect" вроде проблем не выявлено.

DrKnS

2015-10-15 17:40

administrator   bugnote:0013984

> Предлагаю вместо этого поддержать общепринятые форматы:
"Borland IDE Block Type"
"MSDEVColumnSelect"

Пара вопросов:
- а где написано, что форматы некоторых проприетарных IDE являются общепринятыми?
- Нельзя ли класть опционально? У меня, например, "Borland IDE" нет, а лишние блоки жрут память и время.
- Нельзя ли вообще класть плагином?

vskirdin

2015-10-16 10:31

administrator   bugnote:0013985

ХЗ.
Память - ну я бы не сказал, что много - они только идентификаторы, основная инфа в CF_UNICODETEXT. По ходу аналогично надо сделать и для "FAR_VerticalBlock_Unicode" (хмм... хотя в Far 2 такой тип уже был)

Плагином? АПИ для копипаста?

JohnDoe

2015-10-16 11:12

updater   bugnote:0013987

> В клипборде:
> "FAR_VerticalBlock_Unicode" "родной" фаровский блок
А нафига он теперь?

>а лишние блоки жрут память и время.
Ощутимо?

vskirdin

2015-10-16 11:20

administrator   bugnote:0013988

> А нафига он теперь?
Отвечу цитатой: "а где написано, что форматы некоторых проприетарных IDE являются общепринятыми?"

JohnDoe

2015-10-16 11:27

updater   bugnote:0013989

При чём тут общепринятые или нет?
Для внутренних функций достаточно одного единственного формата, и пофиг как его назвать, хоть и MSDEVColumnSelect.

JohnDoe

2015-10-16 11:39

updater   bugnote:0013990

> а где написано, что форматы некоторых проприетарных IDE являются общепринятыми?
Нигде. Давайте будем исходить не из "общепринятости", а исключительно из практических соображений.

1. Использование собственного проприетарного формата ничем не лучше.
2. Поддержка сторонних даёт возможность прозрачно использовать вертикальные блоки между этими приложениями.
3. Плагином можно было бы, но пока формата 2 а не 20 - не очень оправданно.

vskirdin

2015-10-16 11:52

administrator   bugnote:0013991

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

По п.2 - после 4436 так же можно прозрачно использовать вертикальные блоки между этими приложениями.

Так в чем вопрос?

JohnDoe

2015-10-16 12:10

updater   bugnote:0013992

Обсуждаемые 2 формата были предложены, т.к. используются в более чем одном приложении.
А вопрос в том, что при их наличии держать ещё один "собственный", имхо, излишне.

DrKnS

2015-10-16 18:10

administrator   bugnote:0013993

> Память - ну я бы не сказал, что много - они только идентификаторы

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

>> "FAR_VerticalBlock_Unicode" "родной" фаровский блок
> А нафига он теперь?

В 1.75/2 вставлять, если ими ещё кто-то пользуется.

JohnDoe

2015-10-16 20:07

updater   bugnote:0013994

>В 1.75/2 вставлять, если ими ещё кто-то пользуется.
Трогательно )

2useven10

2015-12-28 15:33

developer   bugnote:0014180

Сейчас вертикальный блок дублируется в CF_UNICODETEXT и FAR_VerticalBlock_Unicode.
Так и задумано, или так получилось?

DrKnS

2015-12-28 16:48

administrator   bugnote:0014181

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

DrKnS

2016-01-01 13:15

administrator   bugnote:0014185

А точнее, чтобы можно было вставлять в 1.75/2, т.к. они ожидают в FAR_VerticalBlock_Unicode данные, а не только маркер.

Впрочем, думаю, мы без этой совместимости проживём.

shmuel

2016-04-19 21:14

developer   bugnote:0014469

Вынужден переоткрыть, так как обнаружилось, что данное изменение сломало вставку поточного блока из редактора Borland C++ 5 в редактор Far.

Поставим в редакторе Borland курсор на начало строки и нажмём ShiftEnd CtrlC. Затем в редакторе Far поставим курсор в начало пустой строки и нажмём CtrlV.

1. В билдах 4434 и ранее после вставки курсор был в конце строки. При нажатии Enter блок не расширялся на следующую строку. То-есть поведение было такое же, как если мы и копируем, и вставляем внутри редактора Far.

2. В билдах 4436 и позднее после вставки курсор находится в начале строки. И если мы нажмём End Enter, выделение появится и в следующей строке, причём блок - вертикальный.

Вывод: данное изменение принимает борландовский поточный блок за вертикальный.

2useven10

2016-04-19 23:52

developer   bugnote:0014472

4627

Issue History

Date Modified Username Field Change
2015-08-14 17:29 JohnDoe New Issue
2015-08-14 17:36 JohnDoe Note Added: 0013766
2015-10-14 16:09 vskirdin Category Plugins API => _Common
2015-10-14 20:08 vskirdin Note Added: 0013968
2015-10-14 22:21 2useven10 Note Added: 0013969
2015-10-15 07:48 vskirdin Note Added: 0013970
2015-10-15 12:16 2useven10 Note Added: 0013972
2015-10-15 12:59 vskirdin Note Added: 0013973
2015-10-15 13:16 2useven10 Note Added: 0013974
2015-10-15 13:25 vskirdin Note Added: 0013975
2015-10-15 13:54 vskirdin Note Edited: 0013975
2015-10-15 14:01 vskirdin Note Edited: 0013975
2015-10-15 14:08 2useven10 Note Added: 0013976
2015-10-15 14:09 2useven10 Note Added: 0013977
2015-10-15 14:23 vskirdin Note Added: 0013978
2015-10-15 14:40 2useven10 Note Added: 0013979
2015-10-15 14:49 vskirdin Note Added: 0013980
2015-10-15 14:49 vskirdin Assigned To => vskirdin
2015-10-15 14:49 vskirdin Status new => feedback
2015-10-15 17:40 DrKnS Note Added: 0013984
2015-10-16 10:31 vskirdin Note Added: 0013985
2015-10-16 11:12 JohnDoe Note Added: 0013987
2015-10-16 11:12 JohnDoe Status feedback => assigned
2015-10-16 11:20 vskirdin Note Added: 0013988
2015-10-16 11:27 JohnDoe Note Added: 0013989
2015-10-16 11:39 JohnDoe Note Added: 0013990
2015-10-16 11:52 vskirdin Note Added: 0013991
2015-10-16 12:10 JohnDoe Note Added: 0013992
2015-10-16 18:10 DrKnS Note Added: 0013993
2015-10-16 20:07 JohnDoe Note Added: 0013994
2015-12-22 06:58 shmuel Relationship added related to 0003142
2015-12-28 15:33 2useven10 Note Added: 0014180
2015-12-28 16:48 DrKnS Note Added: 0014181
2016-01-01 13:15 DrKnS Note Added: 0014185
2016-03-23 12:06 2useven10 Build => 4492
2016-03-23 12:06 2useven10 Status assigned => closed
2016-03-23 12:06 2useven10 Resolution open => fixed
2016-04-19 21:14 shmuel Note Added: 0014469
2016-04-19 21:14 shmuel Status closed => feedback
2016-04-19 21:14 shmuel Resolution fixed => reopened
2016-04-19 23:52 2useven10 Note Added: 0014472
2016-04-20 06:38 shmuel Status feedback => resolved
2016-04-20 08:36 2useven10 Build 4492 => 4627
2016-04-20 08:36 2useven10 Status resolved => closed
2016-04-20 08:36 2useven10 Resolution reopened => fixed