непрошенные кавычки

Здесь можно сообщить о найденных багах в Far.
ccaid
Posts: 805
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

непрошенные кавычки

Post by ccaid » Sat 20 Feb, 2016 11:22

ориентировочно в билдах 4521/4523, изменено поведение функций APanel.UNCPath, PPanel.UNCPath (а может и ещё каких).
если в пути есть пробел, то путь обкавычивается. раньше такого не было.
поведение ломает макросы и ничем не оправдано. в макросах кавычки не нужны, а перед выходом "вовне", ничто не мешает добавить кавычки по потребности.

для проверки и исследований можно использовать в комстроке:
lua:msgbox(APanel.UNCPath,PPanel.UNCPath)
Фар делают добрые люди

User avatar
cmd.exe
Posts: 319
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

непрошенные кавычки

Post by cmd.exe » Sat 20 Feb, 2016 11:55

Данное поведение мне нравится. Вот настройку данного поведения-бы добавить неплохо.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

ccaid
Posts: 805
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

непрошенные кавычки

Post by ccaid » Sat 20 Feb, 2016 12:52

cmd.exe wrote: Данное поведение мне нравится.
мне нужен путь к текущему файлу, и я пишу:
lua:msgbox(APanel.UNCPath..'\\'..Apanel.Current,'')
получаю, что-то типа
"C:\Program Files"\desktop.ini
чем именно нравится кавычка внутри пути?
напоминаю, речь идёт о макросах, а команду я приводил для иллюстрации и быстрой проверки.
Фар делают добрые люди

2useven10
Posts: 2983
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 80 times

непрошенные кавычки

Post by 2useven10 » Sat 20 Feb, 2016 13:06

4556

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

непрошенные кавычки

Post by Shmuel » Sat 20 Feb, 2016 13:10

ccaid wrote: напоминаю, речь идёт о макросах, а команду я приводил для иллюстрации и быстрой проверки.
По сути с вами согласен, а для быстрой проверки с комстроки лучше использовать =, при этом аргументов может быть и больше двух, и не надо скобок:
lua:=APanel.UNCPath,PPanel.UNCPath

2useven10
Posts: 2983
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 80 times

непрошенные кавычки

Post by 2useven10 » Sat 20 Feb, 2016 13:15

Способ получения Panel.UNCPath очень нетривиален.

2useven10
Posts: 2983
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 80 times

непрошенные кавычки

Post by 2useven10 » Sat 20 Feb, 2016 13:19

Кстати, 'C:' в корне диска это правильно ?

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

непрошенные кавычки

Post by Shmuel » Sat 20 Feb, 2016 13:44

Это ещё с Far 1.7 так выдаёт. Лучше не трогать.
Правильнее было бы, наверное, всегда заканчивать на \, и макросы бы упростились. Но не поломаются ли существующие макросы от появления двойного бэкслэша в середине?

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

непрошенные кавычки

Post by HaRT » Sat 20 Feb, 2016 14:17

2useven10 wrote: 'C:' в корне диска это правильно
Скорее нет, чем да, ведь “C:” традиционно означает „текущая директория на диске C“, а корень — “C:\”.
Shmuel wrote: Не поломаются ли существующие макросы от появления двойного бэкслэша в середине?
А вот это вопрос. Под никсами слэши, разделяющие компоненты пути, можно дублировать невозбранно, а вот виндовая консоль подобного не понимает. Скорее всего, WinAPI тоже не.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

непрошенные кавычки

Post by Shmuel » Sat 20 Feb, 2016 14:33

HaRT wrote: Скорее всего, WinAPI тоже не.
Мой (ограниченный) опыт говорит об обратном. Только что проверил удвоение и упятерение бэкслешей на win.GetFileInfo, которая использует FindFirstFileW - работает.

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

непрошенные кавычки

Post by HaRT » Sat 20 Feb, 2016 14:39

Shmuel wrote: проверил удвоение
О, как интересно-то! Оказывается, консоли небезразлично, который разделитель удвоен. Если удваивать сразу после диска — , а если где-то дальше — .
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

непрошенные кавычки

Post by HaRT » Sat 20 Feb, 2016 14:43

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

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

непрошенные кавычки

Post by Shmuel » Sat 20 Feb, 2016 14:43

HaRT wrote: Если удваивать сразу после диска — ломается
win.GetFileInfo не ломается.

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

непрошенные кавычки

Post by HaRT » Sat 20 Feb, 2016 14:45

Shmuel wrote: win.GetFileInfo не ломается
Это хорошо. Тогда я за то, чтобы для корня диска пути возвращались с бэкслэшем. В конце концов, выкинуть их повторы — элементарно.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

непрошенные кавычки

Post by Shmuel » Sat 20 Feb, 2016 14:46

HaRT wrote: А как лучше подобное провернуть из других областей (редактора/просмотрщика, диалога и т.п.)?
Можно, используя postmacro.lua, но там надо Show(arg1, arg2, .....).

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

непрошенные кавычки

Post by DrKnS » Sat 20 Feb, 2016 14:53

HaRT wrote: Под никсами слэши, разделяющие компоненты пути, можно дублировать невозбранно, а вот виндовая консоль подобного не понимает.
Windows API по умолчанию понимает любые слеши в любом количестве и любой последовательности.
Если попросить не умничать ("\\?\"), то будет понимать только обратные и только одиночные.
У cmd.exe тяжелое наследие в виде обратной совместимости, не стоит по нему судить.

Post Reply

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