Latest post of the previous page:
И ещё вопрос: при наличии ANSI-плагинов поддержка длинных путей не производится или становится менее полноценной?CurrentDirectory и плагины
- HaRT
- Moderator
- Posts: 10806
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 220 times
- Been thanked: 357 times
Текущая директория Фара
Винда блокирует текущую директорию процесса и никому не даёт её удалить.Shmuel wrote:Что мы теряем при этом?
Фар есть инструмент, а не нянька. © 2009 DrKnS
-
- Posts: 6815
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 526 times
Текущая директория Фара
Ну мы в Фаре тоже не можем из активной панели удалить её папку традиционными фаровскими средствами.
По-видимому, установка Фаром текущей директории процесса не решает задачу на 100%, так как плагины могут её изменить. Так что мне придётся успокоиться. Спасибо за ответы!
- John Doe
- Бюрократ
- Posts: 13801
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 72 times
- Been thanked: 425 times
- Contact:
CurrentDirectory и плагины
Обнаружил, что в некоторых случаях FCTL_GETPANELDIRECTORY GetCurrentDirectory возвращает папку пассивной панели.
Баг?
P.S.
c:\Apps\Far3\Far.exe -ro -s empty /pC:\Apps\Far3\Plugins\LuaMacro
Макрос единственный
Code: Select all
Macro {
area="Shell"; key="F2";
condition=function()
assert(far.GetCurrentDirectory()==panel.GetPanelDirectory(nil,1).Name,far.GetCurrentDirectory())
end;
action=function() end;
}
Надо открыть в редакторе файл, переключаться между редактором/панелями, и гулять по папкам.
Last edited by John Doe on Sat 23 Sep, 2017 12:37, edited 2 times in total.
- John Doe
- Бюрократ
- Posts: 13801
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 72 times
- Been thanked: 425 times
- Contact:
CurrentDirectory и плагины
Уточнение: проявляется после сохранения файла (F2)
Вероятно, такой макрос будет удобнее:
Вероятно, такой макрос будет удобнее:
Code: Select all
Macro {
area="Editor"; key="CtrlTab";
action=function()
Keys"AKey"
if Area.Shell then
if far.GetCurrentDirectory()~=panel.GetPanelDirectory(nil,1).Name then
far.Show(far.GetCurrentDirectory())
end
end
end;
}
- zg
- zero-gravity
- Posts: 6015
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
CurrentDirectory и плагины
в вашем случае он возвращает папку, куда был записан файл. почему вы решили, что это баг?
- John Doe
- Бюрократ
- Posts: 13801
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 72 times
- Been thanked: 425 times
- Contact:
CurrentDirectory и плагины
Опечатка, речь о GetCurrentDirectory.
Я не знаю баг ли это, но если нет, то хотелось бы разобраться, как тогда правильно понимать и для чего на практике использовать это значение.
Я не знаю баг ли это, но если нет, то хотелось бы разобраться, как тогда правильно понимать и для чего на практике использовать это значение.
- zg
- zero-gravity
- Posts: 6015
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
CurrentDirectory и плагины
я понял, что про GetCurrentDirectory, в общем баг есть, но он лишь косвенно связан GetCurrentDirectory. баг присутствует в самой первой ревизии открытых исходников. уже тогда там были вопросы.
пример. есть папки c:\1, c:\2, c:\3 и файл c:\2\test.txt
находясь в c:\1 запускаем команду edit:c:\2\test.txt
переходим в папку c:\3
переключаемся в открытый файл.
важно:жмём f2, т.е. сохраняем файл под исходным именем.
жмём shift-f2, вводим test2.txt.
где сохранился файл? правильно — в c:\1\test2.txt
на первый взгляд, все вызовы FarChDir в fileedit.cpp — лишние. единственное, что приходит в голову — какие-то доисторические плагины, которые при сохранении закладывались на текущую папку, а farcmd тогда не было. с другой стороны — история ж вроде была.
пример. есть папки c:\1, c:\2, c:\3 и файл c:\2\test.txt
находясь в c:\1 запускаем команду edit:c:\2\test.txt
переходим в папку c:\3
переключаемся в открытый файл.
важно:жмём f2, т.е. сохраняем файл под исходным именем.
жмём shift-f2, вводим test2.txt.
где сохранился файл? правильно — в c:\1\test2.txt
на первый взгляд, все вызовы FarChDir в fileedit.cpp — лишние. единственное, что приходит в голову — какие-то доисторические плагины, которые при сохранении закладывались на текущую папку, а farcmd тогда не было. с другой стороны — история ж вроде была.