Пользовательское меню - потеря переменной и другие глюки

Здесь можно сообщить о найденных багах в Far.
Post Reply
dest
Posts: 31
Joined: Mon 29 Jun, 2015 01:30
Has thanked: 8 times

Пользовательское меню - потеря переменной и другие глюки

Post by dest » Wed 26 Dec, 2018 14:53

Создаём в пользовательском меню новый пункт, вписываем код:

Code: Select all

echo Files to compress: !&
cd !\
echo Files to compress: !&
Выделяем пару любых файлов, вызываем F2, запускаем созданный пункт меню...

1.
Первая строка покажет выделенные файлы.
Вторая строка перейдёт в текущий путь.
Третья строка покажет... текущий выделенный файл/директорию (".." если мы в поддиректории).

2.
Стандартные клавиши управления редактированием ведут себя неадекватно (Shift-Up/Down, Shift-Home/End). При попытке выделить какую-либо строку с помощью Shift-Home/End, затем переходом курсором на другую строку "выделение" не убирается, но при попытке скопировать в буфер - его там не будет.

3.
Не нахожу возможности передать каждому файлу в списке помеченных файлов !& директорию. Если внешняя программа требует полный путь, то вариантов всего два - перейти в текущую директорию с помеченными файлами (cd !\) и затем передать список файлов (после перехода не передать...), либо передать все файлы с указанием директории. Но, увы. Дальше перебирать варианты и комбинации, при которых заработает - не могу, out of time, извиняйте

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

Пользовательское меню - потеря переменной и другие глюки

Post by Shmuel » Wed 26 Dec, 2018 21:07

1.
Вместо cd !\ можно lua: win.SetCurrentDir(far.GetCurrentDirectory()), тогда не будет сбрасываться выделение.

User avatar
John Doe
Бюрократ
Posts: 12112
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 29 times
Been thanked: 155 times

Пользовательское меню - потеря переменной и другие глюки

Post by John Doe » Thu 27 Dec, 2018 10:19

1,3.

Code: Select all

set files=!&
echo Files to compress: %files%
cd !\
echo Files to compress: %files%
2.
Это набор отдельных строк, а не единый редактор.
Исторически сложилось. Переделать было бы неплохо, да.

3.
dest wrote:
Wed 26 Dec, 2018 14:53
перейти в текущую директорию с помеченными файлами (cd !\)
Не очень понимаю что это даёт.
Разве изначально мы не в текущей?
Last edited by John Doe on Thu 27 Dec, 2018 10:22, edited 1 time in total.

dest
Posts: 31
Joined: Mon 29 Jun, 2015 01:30
Has thanked: 8 times

Пользовательское меню - потеря переменной и другие глюки

Post by dest » Thu 27 Dec, 2018 10:42

John Doe wrote:
Thu 27 Dec, 2018 10:19
Не очень понимаю что это даёт.
Разве изначально мы не в текущей?
Это была попытка указать последующей вызываемой программе текущую рабочую директорию, чтобы проверить, будет ли она работать.
Увы, похоже не будет (хотел из меню вызывать FileOptimizer.exe/FileOptimizer64.exe - ему требуется передавать полные пути к каждому файлу в списке, иначе все переданные выделенные файлы skip-аются). Вот такая особенность... И это не единичная программа, так себя ведущая. Так что однозначно нужна опция передавать с выделенными файлами и их пути.
Last edited by dest on Thu 27 Dec, 2018 10:45, edited 1 time in total.

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

Пользовательское меню - потеря переменной и другие глюки

Post by Shmuel » Thu 27 Dec, 2018 10:45

John Doe wrote:
Thu 27 Dec, 2018 10:19
dest wrote:
Wed 26 Dec, 2018 14:53
перейти в текущую директорию с помеченными файлами (cd !\)
Не очень понимаю что это даёт.
Разве изначально мы не в текущей?
Для комстроки, возможно. Для макросов, в общем случае, нет.

Code: Select all

Macro {
  area="Shell"; key="F1";
  action=function() io.open("myfile","w"):close(); end; 
}

User avatar
John Doe
Бюрократ
Posts: 12112
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 29 times
Been thanked: 155 times

Пользовательское меню - потеря переменной и другие глюки

Post by John Doe » Thu 27 Dec, 2018 16:33

dest wrote:
Thu 27 Dec, 2018 10:42
Так что однозначно нужна опция передавать с выделенными файлами и их пути.
На мантисе есть связанные пожелания:
https://bugs.farmanager.com/view.php?id=99
https://bugs.farmanager.com/view.php?id=3681

Что до вашей задачи, то обратите внимание на следующий метасимвол:

Code: Select all

!@!      Имя файла, содержащего имена помеченных файлов

dest
Posts: 31
Joined: Mon 29 Jun, 2015 01:30
Has thanked: 8 times

Пользовательское меню - потеря переменной и другие глюки

Post by dest » Thu 27 Dec, 2018 22:48

John Doe wrote:
Thu 27 Dec, 2018 16:33
Что до вашей задачи, то обратите внимание на следующий метасимвол:
Пытался в самом начале - кроме получения имени временного файла ничего добиться не удалось. Передать содержимое файла не удалось. Лучший способ решить задачу - передавать все имена файлов с директориями через дополнительный метасимвол, не изобретая [сложных] механизмов разборки файла из множества строк в одну и передачи в виде параметра, это реально неудобно, и для кого-либо может быть крайне нетривиальной задачей, при том что прочитать хелп и вставить просто новый метасимвол с поддержкой путеи к каждому помеченному файлу, решил бы это элементарно.

UPD: меня нет на мантисе, и я был бы благодарен, если бы у тебя нашлось время и желание, обновить там пожелания с учётом мной написанного. Спасибо.
Last edited by dest on Thu 27 Dec, 2018 23:00, edited 1 time in total.

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

Пользовательское меню - потеря переменной и другие глюки

Post by buniak_a_h » Fri 28 Dec, 2018 04:52

John Doe wrote:
Thu 27 Dec, 2018 16:33
Что до вашей задачи, то обратите внимание на следующий метасимвол:
Тут, кстати, в 3-м ФАРе (по сравнению с 1.75) появился нюанс: при вызове команд (например, вызов копирования отмеченных файлов при помощи KillCopy) этот временный файл удаляется раньше, чем стартует программа копирования. В результате "искаробочный" макрос для копирования KillCopy не работает. Пришлось делать bat-файл, делающий копию этого файла и вызывающий KillCopy с указанием копии... Это касается вызова не из МЕНЮ, а из "применить команду ко всем отмеченным" (Ctrl-G). Но проблема может вылезти и в случае МЕНЮ - макросимвол же тот же!
Last edited by buniak_a_h on Fri 28 Dec, 2018 04:55, edited 1 time in total.

Post Reply

Return to “Глюки и баги”