View Issue Details

IDProjectCategoryView StatusLast Update
0003839PluginsLuaMacro / Macro Browserpublic2021-01-16 15:55
Reporterdm.jurko Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Product Version3.0 
Summary0003839: Editor.InsStr не умеет вставлять первую строку
DescriptionЭто соотв. описанию:
https://api.farmanager.com/ru/macro/macrocmd/prop_func/editor.html
"N=editor.insstr([S[,Line]]) -- Вставить значение S после строки с номером Line. Если S не указан, то вставляется пустая строка. Если Line не указан или меньше 1, то вставляется в текущую строку".

Но очень неудобно. Приходится особо заменять .InsStr для первой строки на .SetStr. Притом .SetStr имеет иные побочные действия. Например, так (копировать первую строку, которую потом заменять на вставляемую):
if n <= 1 then Editor.InsStr(Editor.GetStr(1), 1) Editor.SetStr(s, 1)
else Editor.InsStr(s, n1 - 1) end
Вместо простого
Editor.InsStr(s, n1 - 1)
.
Предлагаю вставлять не ПОСЛЕ СТРОКИ, а в строку с номером Line.
Additional Informationhttps://forum.farmanager.com/viewtopic.php?f=57&t=11074
Tagseditor, LuaFAR

Activities

JohnDoe

2021-01-16 10:30

updater   bugnote:0016991

> Предлагаю вставлять не ПОСЛЕ СТРОКИ, а в строку с номером Line.

Т.е. поломать существующие скрипты?

dm.jurko

2021-01-16 12:36

reporter   bugnote:0016995

Last edited: 2021-01-16 12:38

View 2 revisions

То есть это неудобная функция. Давайте её выбросим, чтобы пользователи не тратили время на отладку системы с несуразностями. В этом суть моего предложения: не можете сделать хорошо, не делайте. Я предлагаю исключить функцию Editor.InsStr.

И спасибо вам за труд. Я не сумел найти тему.

JohnDoe

2021-01-16 13:25

updater   bugnote:0016997

> Я не сумел найти тему.

Начните с шапки этой темы https://forum.farmanager.com/viewtopic.php?f=3&t=7302 (и по ссылкам).

Вот ещё для контекста моя попытка реформировать функции из таблицы mf: https://forum.farmanager.com/viewtopic.php?f=15&t=8635

dm.jurko

2021-01-16 15:55

reporter   bugnote:0016999

Спасибо. Сейчас вникну.

Пока здесь: чтобы не мешать тем, кто вдруг пользуется Editor.InsStr, можно сделать Editor.InsLine(S, line), которая вставляет строку S с номером line. Может быть удобнее поменять параметры S и line местами, чтобы длинный литерал не мешал видеть line?

Вроде:
Editor.InsLine(10, 'Привет! Долгие лета')

Issue History

Date Modified Username Field Change
2021-01-15 13:14 dm.jurko New Issue
2021-01-15 13:14 dm.jurko Tag Attached: editor
2021-01-15 13:14 dm.jurko Tag Attached: LuaFAR
2021-01-16 10:29 JohnDoe Additional Information Updated View Revisions
2021-01-16 10:30 JohnDoe Note Added: 0016991
2021-01-16 12:36 dm.jurko Note Added: 0016995
2021-01-16 12:38 dm.jurko Note Edited: 0016995 View Revisions
2021-01-16 13:25 JohnDoe Note Added: 0016997
2021-01-16 15:55 dm.jurko Note Added: 0016999