CurrentDirectory и плагины

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
den po
Posts: 61
Joined: Tue 30 Aug, 2005 07:53
Location: Чувашия, г.Чебоксары
Has thanked: 3 times
Contact:

CurrentDirectory и плагины

Post by den po »

drkns 27.09.2009 01:05:56 +0200 - build 1145
2. Свершилось то, о чём так долго говорили большевики - far не использует SetCurrentDirectory при навигации по папкам.
...
Ещё не поздно исправиться и начать использовать FCTL_GETCURRENTDIRECTORY.
что-то не соображу, как добраться до файла при копировании его из панели архивного плагина в панель моего?
JUST_DAn_PO
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: CurrentDirectory и плагины

Post by John Doe »

Пока никто не доработал архиваторные плагины - точно никак.
А с мултиарком - это невозможно в принципе, поскольку целевая директория должна быть текущей, что в данном случае невозможно.
Разве что распаковывать во временную директорию, а потом автоматически копировать средствами фара...

Впрочем это лишнее, пусть хотя бы сообщает что мол распаковка невозможна
https://t.me/FarManager — Telegram чат
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: CurrentDirectory и плагины

Post by DrKnS »

den po wrote:что-то не соображу, как добраться до файла при копировании его из панели архивного плагина в панель моего?
Давай с подробностями: как раньше добирался, как теперь пытаешься и что останавливает.
User avatar
den po
Posts: 61
Joined: Tue 30 Aug, 2005 07:53
Location: Чувашия, г.Чебоксары
Has thanked: 3 times
Contact:

Re: CurrentDirectory и плагины

Post by den po »

DrKnS wrote:
den po wrote:что-то не соображу, как добраться до файла при копировании его из панели архивного плагина в панель моего?
Давай с подробностями: как раньше добирался, как теперь пытаешься и что останавливает.
дык эта, раньше из текущего каталога файлы забирал, и было ок.
а потом в коде фара появились изменения, о чём гласит цитата в первом сообщении. и стало не ок.

разжую на всякий. раньше при копировании из одного плагина в другой файлы помещались (распаковывались) во временную папку, откуда целевой плагин легко файлы забирал, потому что папка эта была текущей. а теперь узнать, откуда брать файлы, не представляется возможным. FCTL_... выдаёт пустую строку, текущая папка - папка плагина, и где лежат файлы, совершенно неясно.
JUST_DAn_PO
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: CurrentDirectory и плагины

Post by DrKnS »

User avatar
den po
Posts: 61
Joined: Tue 30 Aug, 2005 07:53
Location: Чувашия, г.Чебоксары
Has thanked: 3 times
Contact:

Re: CurrentDirectory и плагины

Post by den po »

оно. и FCTL_GETCURRENTDIRECTORY ни к чему. это в будущих ревизиях будет?

или это намёк, мол возьми да сделай?
JUST_DAn_PO
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Текущая директория Фара

Post by Shmuel »

Просьба прояснить ситуацию, т.к. давно ощущаю недопонимание в данной области.
Для конкретности, отбросим плагиновые панели, рассматриваем только панели Фара.
ANSI-плагинов не установлено ни одного.

Вопросы:
1. panel.GetPanelDirectory(nil,1).Name (FCTL_GETPANELDIRECTORY) и far.GetCurrentDirectory() (FSF.GetCurrentDirectory) у меня при гулянии по разным папкам возвращают одно и то же (папку активной панели). Так должно быть?

2. Команда dir выдаёт содержимое активной панели. Так должно быть?

3. Функции Viewer() и Editor() не могут открыть файл в активной панели, если не указать им полного пути. Так должно быть?

4. Так какая же директория является текущей в Фаре и с помощью какого API её получить?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Текущая директория Фара

Post by DrKnS »

1. Да.
2. Да.
3. Нет. Подробности и примеры приветствуются (у меня работает).
4. FSF.GetCurrentDirectory.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Текущая директория Фара

Post by Shmuel »

DrKnS wrote: 3. Нет. Подробности и примеры приветствуются (у меня работает).
Да, это работает, я предоставил непроверенную информацию.
А не работает вот что: lua:=win.GetFileAttr("file.ext").
- с полным путём - работает
- если загружен хотя бы 1 ANSI-плагин - работает и без полного пути
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Текущая директория Фара

Post by DrKnS »

Да, так тоже должно быть.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Текущая директория Фара

Post by Shmuel »

DrKnS wrote: Да, так тоже должно быть.
Почему?
io.open тоже не работает.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Текущая директория Фара

Post by Shmuel »

Это показывает историю вопроса, да. Но не объясняет, почему так должно быть. То-есть я не вижу связи, почему поддержка длинных путей должна убить возможность вызывать функции Windows API, задавая пути относительно текущей директории (если она действительно текущая, а не прикидывается ею). Возможно, недопонимаю что-то, поэтому и завёл тему.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Текущая директория Фара

Post by DrKnS »

По второй ссылке написано же:
Far устанавливает "текущий каталог" процесса исключительно в целях совместимости со старыми плагинами, и никто не гарантирует, что он всегда будет соответствовать каталогу, открытому в текущей панели.
Старые плагины отсутствуют, каталог не соответствует.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Текущая директория Фара

Post by Shmuel »

DrKnS wrote: По второй ссылке написано же:
ОК, спасибо.
Post Reply

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