Возвращаемые значения panel.GetCmdLineSelection

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
Post Reply
LAT
Posts: 283
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 14 times
Been thanked: 25 times

Возвращаемые значения panel.GetCmdLineSelection

Post by LAT »

При отсутствии выделения в командной строке код

Code: Select all

local Start, End = panel.GetCmdLineSelection(nil)
всегда (по крайней мере, в моих экспериментах) возвращает Start = 1 и End = 0. Выглядит как-то нелогично: если нет выделения, то в честь чего Start = 1? При попытках использовать в скриптах - еще и неудобно: нужно обязательно анализировать End на предмет значения 0. Имхо, если нет выделения, уместно возвращать Start = End = 0.
ЗЫ. Все это мелкие неудобства, и обходятся, но может, стоит поменять поведение?
ЗЗЫ. [неверное, лишнее] FAR 3.0.5545 x86, Win10 1903.

Shmuel
Posts: 6035
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 27 times
Been thanked: 294 times

Возвращаемые значения panel.GetCmdLineSelection

Post by Shmuel »

LAT wrote:
Wed 15 Jan, 2020 20:32
возвращает Start = 1 и End = 0. Выглядит как-то нелогично: если нет выделения, то в честь чего Start = 1?
Это выглядит нелогично только при недостаточном опыте в Lua. Start=1 и End=0 обозначают пустой стринг ("") в начале комстроки. А Start=1 в честь того, что в Lua отсчёт с 1.
Насчёт неудобства для скриптов - скорее всего от того, что вы пытаетесь что-то делать на Lua как это делается на каком-то другом языке.

LAT
Posts: 283
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 14 times
Been thanked: 25 times

Возвращаемые значения panel.GetCmdLineSelection

Post by LAT »

Shmuel wrote:
Wed 15 Jan, 2020 20:50
LAT wrote:
Wed 15 Jan, 2020 20:32
возвращает Start = 1 и End = 0. Выглядит как-то нелогично: если нет выделения, то в честь чего Start = 1?
Это выглядит нелогично только при недостаточном опыте в Lua. Start=1 и End=0 обозначают пустой стринг ("") в начале комстроки. А Start=1 в честь того, что в Lua отсчёт с 1.Насчёт неудобства для скриптов - скорее всего от того, что вы пытаетесь что-то делать на Lua как это делается на каком-то другом языке.
Думаю, операторы ветвления (if, else, case или elseif - или как они у кого там называются) существуют в подавляющем большинстве языков программирования (в моем алгоритме фактически ничего больше нету). [Мелкая] проблема больше связана с появляющейся "ассиметричностью" Start и End: если значения End достаточно, чтобы понять, что выделения нет, то вот со Start-ом как-то хуже. Но это не критично. Если это не недопродуманность, а стабильная фича, то можно жить и с этим :).

Shmuel
Posts: 6035
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 27 times
Been thanked: 294 times

Возвращаемые значения panel.GetCmdLineSelection

Post by Shmuel »

Это стабильная фича языка. Условие наличия выделения: End >= Start.

LAT
Posts: 283
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 14 times
Been thanked: 25 times

Возвращаемые значения panel.GetCmdLineSelection

Post by LAT »

Shmuel wrote:
Wed 15 Jan, 2020 21:10
Это стабильная фича языка. Условие наличия выделения: End >= Start.
Ясно, спасибо.

Post Reply

Return to “Предложения и идеи”