Drag-n-Drop — тяни-и-бросай (перетаскивание)

Здесь можно обсудить ваш любимый плагин.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by buniak_a_h »

Latest post of the previous page:

1. Ваш же вопрос на другом форуме. И там же ответ :-)
2. И вообще. Попробуйте убрать всё, что кончается на x86, а не на x64.
У меня работает (голый ФАР). Увы, при перетаскивании из GUI-приложения на панель ФАРа, запущенного из ConEmu, вместо копирования просто в командную строку вводится путь к исходному файлу.
Кстати, никто не знает, как "подружить" этот замечательный плагин с ФАРом, запущенным из-под ConEmu ?
Last edited by buniak_a_h on Fri 02 Nov, 2018 10:52, edited 1 time in total.
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by dmitrik »

buniak_a_h wrote: Fri 02 Nov, 2018 10:51 1. Ваш же вопрос на другом форуме. И там же ответ
Ну так получив ответ там и поняв, что проблема в плагине Drag-n-Drop, я пришел сюда, к автору плагина.
buniak_a_h wrote: Fri 02 Nov, 2018 10:51 2. И вообще. Попробуйте убрать всё, что кончается на x86, а не на x64.
Эм... У меня Far x86, я же выше написал.
Last edited by dmitrik on Fri 02 Nov, 2018 11:04, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by John Doe »

buniak_a_h wrote: Fri 02 Nov, 2018 10:51 Кстати, никто не знает, как "подружить" этот замечательный плагин с ФАРом, запущенным из-под ConEmu ?
Мне казалось что Conemu и сам обладает подобной функциональностью, из коробки.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by buniak_a_h »

dmitrik wrote: Fri 02 Nov, 2018 11:03 Эм... У меня Far x86, я же выше написал.
Сорри... Зрение ни к чёрту...
John Doe wrote: Fri 02 Nov, 2018 11:11 Мне казалось что Conemu и сам обладает подобной функциональностью, из коробки.
Да, так написано. Но без плагина ИЗ ФАРа в GUI-приложение перетащить не удалось, а в обратную сторону - вообще никак. Возможно, дело в настройках самого ConEmu, я уже много чего перепробовал (связанного с мышкой) - отчаялся. Даже написал макрос, чтоб после Drop-а на панель вызывать банальный move из временной папи в папку панели, используя ту строку с именем файла, что пишется при перетаскивании.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by HaRT »

dmitrik wrote: Fri 02 Nov, 2018 09:41 Судя по ошибкам, происходит разадресация нулевого указателя.
Сообщения об ошибках были бы информативнее и практичнее, если бы вы потрудились (1) как подсказывает повторяющийся в тексте ошибок фрагмент get the pdb, подложить соответствующий Far.pdb (скачать по соответствующей кнопке pdb со страницы загрузки Фара) рядом с Far.exe и (2) выложить текстовый снимок сообщений об ошибках, как указано в Far FAQ 1.3 и тут.
Фар есть инструмент, а не нянька. © 2009 DrKnS
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by dmitrik »

HaRT wrote: Fri 02 Nov, 2018 12:07 Сообщения об ошибках были бы информативнее и практичнее, если бы вы потрудились (1) как подсказывает повторяющийся в тексте ошибок фрагмент get the pdb, подложить соответствующий Far.pdb (скачать по соответствующей кнопке pdb со страницы загрузки Фара) рядом с Far.exe и (2) выложить текстовый снимок сообщений об ошибках, как указано в Far FAQ 1.3 и тут.
О, вот за этим я в тот тред с утра и пришел. Спасибо. :)

Картинки (раз уж у меня на данный момент есть только они) в обоих тредах спрятал под спойлер. Far.pdb положил куда полагается, как в очередной раз всё упадет, выложу уже более информативный и текстовый снимок сообщений об ошибках.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by HaRT »

dmitrik wrote: Fri 02 Nov, 2018 13:59 Far.pdb положил куда полагается
Удостоверьтесь, пожалуйста, что Far.pdb и Far.exe строго для одного номера сборки и одной битности, иначе ничего не выйдет.

Фар есть инструмент, а не нянька. © 2009 DrKnS
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by dmitrik »

HaRT wrote: Fri 02 Nov, 2018 14:08 Удостоверьтесь, пожалуйста, что Far.pdb и Far.exe строго для одного номера сборки и одной битности, иначе ничего не выйдет.
Да, еще раз перепроверил, всё точно соответствует.

Падение, собственно, не заставило себя долго ждать:


HaRT wrote: Fri 02 Nov, 2018 14:08
Да, всё понял. :)
Last edited by dmitrik on Fri 02 Nov, 2018 21:58, edited 1 time in total.
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by dmitrik »

И еще:



User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by DrKnS »

Far.exe!FileList::GetCurName (c:\src\far\filelist.cpp:3893)
Far.exe!FilePanels::GetTypeAndName (c:\src\far\filepanels.cpp:1037)
Far.exe!pluginapi::apiAdvControl (c:\src\far\plugapi.cpp:623)
plugin_x86.dll!<unknown> (get the pdb)
Far.exe!PeekInputRecord (c:\src\far\keyboard.cpp:1154)
Far.exe!CheckForEscSilent (c:\src\far\keyboard.cpp:1232)
Far.exe!FileList::ReadFileNames (c:\src\far\filelist.cpp:6700)
Вот это всё выглядит так, будто плагин хукает PeekConsoleInput и вызывается в тот момент, когда фар перечитывает панели.
В этот момент внутреннее состояние не инвариантно - списка файлов уже нет, а текущий индекс еще не обновлён и указывает куда-то в космос.

Конкретно в этом случае можно, наверное, перетасовать код внутри фара и падать не будет, но я не уверен, что стоит вообще пытаться поддерживать такие сценарии.
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by dmitrik »

DrKnS wrote: Fri 02 Nov, 2018 22:57 Вот это всё выглядит так, будто плагин хукает PeekConsoleInput и вызывается в тот момент, когда фар перечитывает панели.
Под окном с сообщением об ошибке видно, как содержимое панелей портится, да.
DrKnS wrote: Fri 02 Nov, 2018 22:57 Конкретно в этом случае можно, наверное, перетасовать код внутри фара и падать не будет, но я не уверен, что стоит вообще пытаться поддерживать такие сценарии.
Я понимаю. Я, собственно, больше надеюсь на помощь автора плагина.

Но всё-таки задам вопрос. Я понимаю, что Far — это не комбайн с вертикальным взлетом "всё в одном", а платформа для плагинов. Но всё-таки это файловый менеджер под Windows, а задача перетаскивания файлов из него в другие приложения — очевидно нужная для такого класса приложений. Может (просто интересуюсь :)) подумать о реализации такой функциональности в самом Far'е?
grechnik
Posts: 12
Joined: Wed 22 Feb, 2017 14:21
Been thanked: 5 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by grechnik »

DrKnS wrote: Fri 02 Nov, 2018 22:57
Far.exe!FileList::GetCurName (c:\src\far\filelist.cpp:3893)
Far.exe!FilePanels::GetTypeAndName (c:\src\far\filepanels.cpp:1037)
Far.exe!pluginapi::apiAdvControl (c:\src\far\plugapi.cpp:623)
plugin_x86.dll!<unknown> (get the pdb)
Far.exe!PeekInputRecord (c:\src\far\keyboard.cpp:1154)
Far.exe!CheckForEscSilent (c:\src\far\keyboard.cpp:1232)
Far.exe!FileList::ReadFileNames (c:\src\far\filelist.cpp:6700)
Вот это всё выглядит так, будто плагин хукает PeekConsoleInput и вызывается в тот момент, когда фар перечитывает панели.
В этот момент внутреннее состояние не инвариантно - списка файлов уже нет, а текущий индекс еще не обновлён и указывает куда-то в космос.

Конкретно в этом случае можно, наверное, перетасовать код внутри фара и падать не будет, но я не уверен, что стоит вообще пытаться поддерживать такие сценарии.
Да, хукает. https://github.com/karbazol/far-drag-n- ... cs.cpp#L76 .
А как вообще плагин может догадаться, что Far в неконсистентном состоянии? Пользователь вполне может начать/закончить что-нибудь тащить ровно в момент, когда Far обновляет состояние.
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by dmitrik »

grechnik wrote: Sun 04 Nov, 2018 12:29 А как вообще плагин может догадаться, что Far в неконсистентном состоянии? Пользователь вполне может начать/закончить что-нибудь тащить ровно в момент, когда Far обновляет состояние.
Что характерно, у меня эти падения всегда происходят не в момент перетаскивания. Более того, даже не в те моменты, когда я непосредственно работаю с данным экземпляром Far'а. Это происходит в фоне, т.е., в те моменты, когда фокус либо вообще не у окна Far'а, либо у окна другого его экземпляра, в котором всё продолжает быть ок.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by DrKnS »

grechnik wrote: Sun 04 Nov, 2018 12:29А как вообще плагин может догадаться, что Far в неконсистентном состоянии?
Хороший вопрос.
А как фар может догадаться, когда ему можно быть в неконсистентном состоянии, если ему хукать шопопало?
User avatar
alandr967
Posts: 24
Joined: Mon 30 Oct, 2017 14:21
Location: Odessa
Has thanked: 7 times
Been thanked: 1 time

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by alandr967 »

Перетащил файл в скайп и он пропал из директории а в скайпе не появился,где его искать?:/
grechnik
Posts: 12
Joined: Wed 22 Feb, 2017 14:21
Been thanked: 5 times

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Post by grechnik »

alandr967 wrote: Thu 31 Jan, 2019 14:27 Перетащил файл в скайп и он пропал из директории а в скайпе не появился,где его искать?:/
Похоже, отдельные программы считают, что плагин запрашивает перемещение файла вместо копирования. Если таскать правой кнопкой мыши и явно выбирать копирование, воспроизводится? Если таскать левой кнопкой из Explorer вместо Far, воспроизводится?
Post Reply

Return to “Обсуждение плагинов”