trucer — удаление пробелов с концов строк

Здесь обсуждается всё, что касается макросов.
User avatar
raven428
Posts: 42
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 8 times
Been thanked: 1 time

trucer — удаление пробелов с концов строк

Postby raven428 » Sun 11 Sep, 2016 20:39

переписал свой плагин на lua, ибо не нашёл на форуме ничего с такой же функциональностью и без зависимостей. плагин, в общем-то, по-прежнему вполне рабочий, но корёжит юникод. устанавливать как обычно - в %FARPROFILE%\Macros\scripts. с конфигурацией, в отличии от плагина, не заморачивался - всё в начале файла. функциональность такая же как у плагина (почти что копипастил), разве что концы строк не меняет.

конструктивная критика приветствуется. только прошу учесть, что на lua я сегодня программировал первый раз, если не считать конвертацию макросов в формат far3.

ссылка
Last edited by raven428 on Tue 13 Sep, 2016 17:04, edited 8 times in total.
too much raVen over paradise...

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

trucer - замена одноимённого плагина

Postby John Doe » Mon 12 Sep, 2016 07:43

Latest post of the previous page:

Для информации.
Скрипты аналогичного назначения имеются в пакетах SimSU и Rh_Scripts
(Ни в одном из них не предусмотрен запуск при сохранении)

User avatar
raven428
Posts: 42
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 8 times
Been thanked: 1 time

trucer - замена одноимённого плагина

Postby raven428 » Mon 12 Sep, 2016 09:07

John Doe wrote:Source of the post
raven428 wrote:Source of the post обработка файла в два миллиона строк занимает несколько секунд
Интересно сравнить скорость выполнения плагина и скрипта на таком файле.В любом случае простор для оптимизации есть.
если смотреть на глазок, то плагин быстрей на примерно на 30%.

John Doe wrote:Source of the post
raven428 wrote:Source of the post в FarEncyclopedia.ru.chm нашёл только Trim
Его и имел ввиду, и да он действительно не подходит.
Но всё равно mf.trim тут не нужен, хотя бы потому что стандартный string.match работает ощутимо быстрее.
попробовал отсюда на коленке trim7, разницы особо не заметил. надо с замерами тестировать, но пока не могу себе позволить выделить на это время.

John Doe wrote:Source of the post
raven428 wrote:Source of the post os.time();
far.FarClock
воспользуюсь при случае, спасибо. пока рисование изменений раз в секунду вполне годится.

John Doe wrote:Source of the post Для информации.
Скрипты аналогичного назначения имеются в пакетах SimSU и Rh_Scripts
я видел, да. но свой старый плагин переписал именно по этой причине:
John Doe wrote:Source of the post (Ни в одном из них не предусмотрен запуск при сохранении)
и по кнопке end вроде никто пробелы не обрезает. кроме того, во втором пакете очень много зависимостей и отдельные скрипты у меня не получилось поставить к себе, чтобы они заработали.
too much raVen over paradise...

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

trucer - замена одноимённого плагина

Postby John Doe » Mon 12 Sep, 2016 14:40

raven428 wrote:Source of the post подскажите, пожалуйста, аналоги. в FarEncyclopedia.ru.chm нашёл только Trim, но у него нет параметров кроме обрабатываемой строки. функциональность плагина подразумевает отрезание пробелов только с правой стороны строки.
В апи есть http://api.farmanager.com/ru/fsf/rtrim.html
Но luafar не предоставляет эту функцию.

P.S.
Вот по теме Лишние функции macro api

P.P.S.
Часть сообщений отделена: John Doe @ Производительность Lua
Last edited by John Doe on Mon 12 Sep, 2016 15:06, edited 1 time in total.

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

trucer — замена одноимённого плагина

Postby John Doe » Tue 13 Sep, 2016 11:40

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:Source of the post Внешние скобки в if()then end не обязательны (впрочем и не мешают, дело вкуса)
То же насчёт точки с запятой: необходимости нет.
То же с шагом в for: есть смысл указывать только если ~=1
Last edited by John Doe on Tue 13 Sep, 2016 11:50, edited 1 time in total.

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

Производительность Lua

Postby HaRT » Tue 13 Sep, 2016 14:10

В порядке наброса: а ещё, поскольку тут обработка построчная, она должна хорошо параллелиться на все доступные ядра ЦП.
Фар есть инструмент, а не нянька. © 2009 DrKnS


Return to “Обсуждение макросов”

Who is online

Users browsing this forum: No registered users and 4 guests