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

Здесь можно обсудить ваш любимый плагин.
buniak_a_h
Posts: 582
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 57 times
Been thanked: 13 times
Contact:

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

Post by buniak_a_h » Fri 02 Nov, 2018 10:51

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: 30
Joined: Mon 30 Nov, 2009 21:58

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

Post by dmitrik » Fri 02 Nov, 2018 11:03

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: 11970
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 26 times
Been thanked: 133 times

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

Post by John Doe » Fri 02 Nov, 2018 11:11

buniak_a_h wrote:
Fri 02 Nov, 2018 10:51
Кстати, никто не знает, как "подружить" этот замечательный плагин с ФАРом, запущенным из-под ConEmu ?
Мне казалось что Conemu и сам обладает подобной функциональностью, из коробки.

buniak_a_h
Posts: 582
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 57 times
Been thanked: 13 times
Contact:

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

Post by buniak_a_h » Fri 02 Nov, 2018 11:28

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: 8507
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 136 times

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

Post by HaRT » Fri 02 Nov, 2018 12:07

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: 30
Joined: Mon 30 Nov, 2009 21:58

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

Post by dmitrik » Fri 02 Nov, 2018 13:59

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: 8507
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 74 times
Been thanked: 136 times

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

Post by HaRT » Fri 02 Nov, 2018 14:08

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

Фар есть инструмент, а не нянька. © 2009 DrKnS

dmitrik
Posts: 30
Joined: Mon 30 Nov, 2009 21:58

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

Post by dmitrik » Fri 02 Nov, 2018 21:55

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: 30
Joined: Mon 30 Nov, 2009 21:58

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

Post by dmitrik » Fri 02 Nov, 2018 22:34

И еще:




User avatar
DrKnS
Posts: 5002
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 166 times

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

Post by DrKnS » 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 и вызывается в тот момент, когда фар перечитывает панели.
В этот момент внутреннее состояние не инвариантно - списка файлов уже нет, а текущий индекс еще не обновлён и указывает куда-то в космос.

Конкретно в этом случае можно, наверное, перетасовать код внутри фара и падать не будет, но я не уверен, что стоит вообще пытаться поддерживать такие сценарии.

dmitrik
Posts: 30
Joined: Mon 30 Nov, 2009 21:58

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

Post by dmitrik » Sun 04 Nov, 2018 11:16

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

Но всё-таки задам вопрос. Я понимаю, что Far — это не комбайн с вертикальным взлетом "всё в одном", а платформа для плагинов. Но всё-таки это файловый менеджер под Windows, а задача перетаскивания файлов из него в другие приложения — очевидно нужная для такого класса приложений. Может (просто интересуюсь :)) подумать о реализации такой функциональности в самом Far'е?

grechnik
Posts: 11
Joined: Wed 22 Feb, 2017 14:21
Been thanked: 5 times

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

Post by grechnik » Sun 04 Nov, 2018 12:29

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: 30
Joined: Mon 30 Nov, 2009 21:58

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

Post by dmitrik » Tue 06 Nov, 2018 12:53

grechnik wrote:
Sun 04 Nov, 2018 12:29
А как вообще плагин может догадаться, что Far в неконсистентном состоянии? Пользователь вполне может начать/закончить что-нибудь тащить ровно в момент, когда Far обновляет состояние.
Что характерно, у меня эти падения всегда происходят не в момент перетаскивания. Более того, даже не в те моменты, когда я непосредственно работаю с данным экземпляром Far'а. Это происходит в фоне, т.е., в те моменты, когда фокус либо вообще не у окна Far'а, либо у окна другого его экземпляра, в котором всё продолжает быть ок.

User avatar
DrKnS
Posts: 5002
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 166 times

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

Post by DrKnS » Tue 06 Nov, 2018 13:30

grechnik wrote:
Sun 04 Nov, 2018 12:29
А как вообще плагин может догадаться, что Far в неконсистентном состоянии?
Хороший вопрос.
А как фар может догадаться, когда ему можно быть в неконсистентном состоянии, если ему хукать шопопало?

Post Reply

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