Shift-F6 в панели плагина

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
Shmuel
Posts: 5598
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

Shift-F6 в панели плагина

Post by Shmuel » Sat 28 Jul, 2018 20:57

Случайно нажал Shift-F6 в панели плагина Polygon (при этом в панели отображалась таблица с большим количеством записей).
Увидел, что Фар перечитывает панель, аналогично Ctrl-R.
В коде плагина это кнопкосочетание не используется. Макросы и прочие плагины отключены.
В справке Фара ничего об этом не нашёл. Старые билды Фар (вплоть до 4430) ведут себя так же.
???

User avatar
DrKnS
Posts: 5041
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 177 times

Shift-F6 в панели плагина

Post by DrKnS » Sun 05 Aug, 2018 16:31

Shmuel wrote:
Sat 28 Jul, 2018 20:57
???
Так было еще у Рошала - панель обновляется независимо от того, что вернул плагин.
Починить можно (не проверял).

Shmuel
Posts: 5598
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

Shift-F6 в панели плагина

Post by Shmuel » Sun 05 Aug, 2018 17:33

DrKnS wrote:
Sun 05 Aug, 2018 16:31
панель обновляется независимо от того, что вернул плагин.
Это точно, недавно заметил на F8 - плагин возвращает false из DeleteFilesW, но Фар перечитывает панель. Тут, конечно, API плагинов у нас недоработан, потому что не разделяются варианты (1) полной неудачи, (2) частичной неудачи - удалились не все помеченные файлы и (3) отмены операции пользователем.
DrKnS wrote:
Sun 05 Aug, 2018 16:31
Починить можно ... (не проверял).
Я уже побаиваюсь инициировать что-либо :)
Пока для F8 выход (для ShiftF6 тоже подойдёт) - перехватываю нажатие клавиши, вывожу запрос, в случае отмены пользователем говорю Фару, что клавиша обработана, и таким образом дело не доходит до DeleteFilesW.

User avatar
DrKnS
Posts: 5041
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 177 times

Shift-F6 в панели плагина

Post by DrKnS » Sun 05 Aug, 2018 18:25

Shmuel wrote:
Sun 05 Aug, 2018 17:33
не разделяются варианты (1) полной неудачи, (2) частичной неудачи - удалились не все помеченные файлы и (3) отмены операции пользователем
А разве отмену пользователем нельзя считать частичной неудачей? Посткондишн как бы тот же - "удалились не все помеченные файлы".

Shmuel
Posts: 5598
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

Shift-F6 в панели плагина

Post by Shmuel » Sun 05 Aug, 2018 18:48

Отмена, на мой взгляд, это полная неудача - то есть не удалился ни один файл. В случае полной неудачи перечитывание панели - лишнее. Перечитывать панель следует при (1) удаче и (2) частичной неудаче.

User avatar
DrKnS
Posts: 5041
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 177 times

Shift-F6 в панели плагина

Post by DrKnS » Sun 05 Aug, 2018 22:45

Shmuel wrote:
Sun 05 Aug, 2018 18:48
Отмена, на мой взгляд, это полная неудача - то есть не удалился ни один файл
А, это ситуация "плагин показал диалог [точно удалять? Да/Нет], пользователь сказал нет"? Тогда да.
Я имел в виду несколько иное - "пользователь согласился, но уже в процессе передумал и нажал Esc".

Shmuel
Posts: 5598
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 186 times

Shift-F6 в панели плагина

Post by Shmuel » Mon 06 Aug, 2018 09:58

DrKnS wrote:
Sun 05 Aug, 2018 16:31
панель обновляется независимо от того, что вернул плагин
В случае с Shift-F6 плагин не может ничего вернуть, поскольку не экспортирует функцию GetFilesW. В этом случае все обновления панели по F5, Shift-F5, F6, Shift-F6 однозначно лишние.

User avatar
DrKnS
Posts: 5041
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 5 times
Been thanked: 177 times

Shift-F6 в панели плагина

Post by DrKnS » Mon 06 Aug, 2018 13:16

Shmuel wrote:
Mon 06 Aug, 2018 09:58
В случае с Shift-F6 плагин не может ничего вернуть, поскольку не экспортирует функцию GetFilesW
В этом случае -1 возвращает заглушка внутри Far, да.

Post Reply

Return to “Разработка плагинов”