Page 2 of 2
trucer — удаление пробелов с концов строк
Posted: Sun 11 Sep, 2016 20:39
by raven428
переписал
свой плагин на lua, ибо не нашёл на форуме ничего с такой же функциональностью и без зависимостей. плагин, в общем-то, по-прежнему вполне рабочий, но корёжит юникод. устанавливать как обычно - в
%FARPROFILE%\Macros\scripts
. с конфигурацией, в отличии от плагина, не заморачивался - всё в начале файла. функциональность такая же как у плагина (почти что копипастил), разве что концы строк не меняет.
конструктивная критика приветствуется. только прошу учесть, что на lua я сегодня программировал первый раз, если не считать конвертацию макросов в формат far3.
ссылка
trucer - замена одноимённого плагина
Posted: Mon 12 Sep, 2016 07:43
by John Doe
Latest post of the previous page:
Для информации.
Скрипты аналогичного назначения имеются в пакетах
SimSU и
Rh_Scripts
(Ни в одном из них не предусмотрен запуск при сохранении)
trucer - замена одноимённого плагина
Posted: Mon 12 Sep, 2016 09:07
by raven428
John Doe wrote: raven428 wrote: обработка файла в два миллиона строк занимает несколько секунд
Интересно сравнить скорость выполнения плагина и скрипта на таком файле.В любом случае простор для оптимизации есть.
если смотреть на глазок, то плагин быстрей на примерно на 30%.
John Doe wrote:raven428 wrote: в FarEncyclopedia.ru.chm нашёл только Trim
Его и имел ввиду, и да он действительно не подходит.
Но всё равно
mf.trim
тут не нужен, хотя бы потому что стандартный
string.match
работает ощутимо быстрее.
попробовал
отсюда на коленке
trim7
, разницы особо не заметил. надо с замерами тестировать, но пока не могу себе позволить выделить на это время.
John Doe wrote:raven428 wrote: os.time();
far.FarClock
воспользуюсь при случае, спасибо. пока рисование изменений раз в секунду вполне годится.
John Doe wrote: Для информации.
Скрипты аналогичного назначения имеются в пакетах
SimSU и
Rh_Scripts
я видел, да. но свой старый плагин переписал именно по этой причине:
John Doe wrote: (Ни в одном из них не предусмотрен запуск при сохранении)
и по кнопке
end
вроде никто пробелы не обрезает. кроме того, во втором пакете очень много зависимостей и отдельные скрипты у меня не получилось поставить к себе, чтобы они заработали.
trucer - замена одноимённого плагина
Posted: Mon 12 Sep, 2016 14:40
by John Doe
raven428 wrote: подскажите, пожалуйста, аналоги. в FarEncyclopedia.ru.chm нашёл только Trim, но у него нет параметров кроме обрабатываемой строки. функциональность плагина подразумевает отрезание пробелов только с правой стороны строки.
В апи есть
http://api.farmanager.com/ru/fsf/rtrim.html
Но luafar не предоставляет эту функцию.
P.S.
Вот по теме
http://forum.farmanager.com/viewtopic.php?f=15&t=8635
P.P.S.
Часть сообщений отделена:
http://forum.farmanager.com/viewtopic.p ... 77#p140777
trucer — замена одноимённого плагина
Posted: Tue 13 Sep, 2016 11:40
by John Doe
Code: Select all
action = function(eid, event, params)
sav_info = editor.GetInfo(eid);
if not(
(
(event == far.Flags.EE_READ) and trim_at_read or
(event == far.Flags.EE_SAVE) and trim_at_save
) and (sav_info.TotalLines < trim_lines_limit)
) then
return;
end;
--...
Большинство событий отсекаются уже по event, и вызывать для них небесплатный GetInfo как-то неоптимальненько
P.S.
А ещё было бы полезно иметь возможность обработать файл не по событию, а по команде (макросу или пункту в меню плагинов)
P.P.S.
John Doe wrote: Внешние скобки в if()then end не обязательны (впрочем и не мешают, дело вкуса)
То же насчёт точки с запятой: необходимости нет.
То же с шагом в for: есть смысл указывать только если ~=1
Производительность Lua
Posted: Tue 13 Sep, 2016 14:10
by HaRT
В порядке наброса: а ещё, поскольку тут обработка построчная, она должна хорошо параллелиться на все доступные ядра ЦП.