Ru-Board.club
← Вернуться в раздел «Программы»

» Far Manager

Автор: shmuz2
Дата сообщения: 30.04.2016 17:42
wseventeen
Держу, хотя пользуюсь только для сравнений с LF Search. Информацию Alexyz21 подтверждаю.
Автор: Angel_Ka
Дата сообщения: 01.05.2016 15:13
shmuz2
Alexyz21

В Far3.0.4655 x64 (на Win10entRu x64) при запуске любой опции Panel.CustomSortByName.lua стала выскакивать ошибка:

Цитата:
LuaMacro

...she_lua\64-базовыйСборный(Alexyz21)she.lua:254: invalid regular expression
Stack Traceback
===============
(1) Lua function '(anonymous)' at file 'W:\Far\Profile\Macros\scripts\she_lua\64-базовыйСборный(Alexyz21)she.lua:254' (best guess)
Local variables:
res = boolean: false
i = number: 0


OK


В Far3.0.4653 x64 (на Win10entRu x64) ошибки не было.

Добавлено:
В Far3.0.4655 x86 (на Win10entRu x64) ошибка не вылезает.
Автор: shmuz2
Дата сообщения: 01.05.2016 15:36
Angel_Ka
На данный момент я этим скриптом не пользуюсь, с его кодом не знаком. Попробуйте для начала решить проблему с автором.
Автор: Alexyz21
Дата сообщения: 01.05.2016 16:56
shmuz2
видимо что-то не нравится в этом коде:

Код: local i=0 for v in regex.gmatch(sRegexp,"\\{\\?:(.*?)\\}(?=\\{\\?:|$)") do i=i+1 sRgxTbl[i]=regex.new(v) end
Автор: shmuz2
Дата сообщения: 01.05.2016 17:09
Alexyz21

Цитата:
видимо что-то не нравится в этом коде:

Если так, то вы практически у цели. Вставьте в цикл вывод v на экран/файл/DbgView, и увидите, на чём спотыкается.
Автор: Alexyz21
Дата сообщения: 01.05.2016 17:23
Angel_Ka
Вставлять придётся вам - у меня x64 нет, но сначала лучше вставьте сюда 254-ю строку из ВАШЕГО скрипта.
Автор: Angel_Ka
Дата сообщения: 01.05.2016 17:25

Код: if not sRgxRet or #sRgxTbl==0 then sRegexp,sRgxTrue = regex.new(sRegexp),true else sRgxTrue=false end
Автор: Alexyz21
Дата сообщения: 01.05.2016 17:30
Ну тогда надо сначала удостверится правильно ли выдаётся номер строки-ошибки - вставьте пустую строку перед приведённой вами строкой, сохраните скрипт, перезапустите фар и посмотрите - съедет ли номер строки-ошибки, если да, то всё верно, ошибка в приведённой вами строке, если нет, то ошибка в предыдущей строке (проверяется аналогично).
Автор: Angel_Ka
Дата сообщения: 01.05.2016 17:35
Вставил. Ошибка съехала на 255 номер.
Автор: Alexyz21
Дата сообщения: 01.05.2016 17:39
Ок, вызывем скрипт, выбираем Regexp, копируем в клипбоард содержимое поля с регэкспом, очищаем поле, пробуем воспроизвести ошибку - если её нет, то скопированный регэксп в студию.
Автор: Angel_Ka
Дата сообщения: 01.05.2016 17:48

Код: -- /^(?:(\d{5}.*?[\.,;] )|(\d{5}к2)|(\d{5}\D+ГОСТ (?!Р))|(\d{5}\D+ГОСТ Р)|(\d{,4}\D)|(\d{5}\d+))/i{!:$6$5$1$3$2$4}
Автор: Alexyz21
Дата сообщения: 01.05.2016 18:00

Цитата:
При этом ошибка вылезает и при всех других опциях когда опция Regexp не выбрана.

Да, регэксп разбирается даже в том случае, когда он не задействован. Поскольку это в теле акции макроса, то на скорость это не влияет никаким боком, поэтому и не делал проверку чекбокса. Это сделать элементарно:

Код: if xRegexp then
sRegexp,sRgxRet = regex.match(sRegexp,"^(.*?)(?:\\{!:(.*?)\\}|)$")
for i=1,#sRgxTbl do sRgxTbl[i]=nil end
local i=0 for v in regex.gmatch(sRegexp,"\\{\\?:(.*?)\\}(?=\\{\\?:|$)") do i=i+1 sRgxTbl[i]=regex.new(v) end
if not sRgxRet or #sRgxTbl==0 then sRegexp,sRgxTrue = regex.new(sRegexp),true else sRgxTrue=false end
end
Автор: Angel_Ka
Дата сообщения: 01.05.2016 18:03
Я правильно понимаю, что приведённый Вами код нужно вставить на место нынешней 254 строки?
Автор: Alexyz21
Дата сообщения: 01.05.2016 18:07
Angel_Ka
обновил

Для поля регэкспа F4 тоже работает (у меня, по крайней мере). Регэспам в принципе тоже можно добавить описания... - но нужно ли?
Автор: Angel_Ka
Дата сообщения: 01.05.2016 18:16
Alexyz21
Теперь при ошибочном регексе ошибка вылезает только при активации опции Regexp.
Большое спасибо за помощь!

Добавлено:

Цитата:
Регэспам в принципе тоже можно добавить описания... - но нужно ли?

Для них описания нужнее всего — читать их не просто, а количество их довольно большое, в памяти не удержать.
Автор: Alexyz21
Дата сообщения: 01.05.2016 18:22
Открываю диалог, вижу:
Т.е. длинная строка сдвинута в начало, а не в конец.
Автор: Angel_Ka
Дата сообщения: 01.05.2016 18:30
Так диалог истории то я и не открывал, пользовался одним и тем же универсальным регексом на 6 позиций, и его окончание, видное в окошечке диалога макроса, весьма показательно: ОСТ Р)|(\d{,4}\D)|(\d{5}\d+))/i{!:$6$5$1$3$2$4}. Это дома, потому что.
Автор: Alexyz21
Дата сообщения: 01.05.2016 18:36
Предлагаете описания добавлять в самый конец? Но тогда они не будут видны в истории...
Автор: Angel_Ka
Дата сообщения: 01.05.2016 18:41

Цитата:
тогда они не будут видны в истории

Это мЕньшее неудобство.
Автор: Alexyz21
Дата сообщения: 01.05.2016 18:43
Имхо меньшее неудобство не видеть комментарий только для текущей длинной строки, но видеть комментарии для всех регэкспов, когда разворачиваешь историю - или нет? %)
Автор: Angel_Ka
Дата сообщения: 01.05.2016 18:46
Но если можно безболезненно добавить возможность маркировки, хотя бы краткой, в начало регесов, то это было бы всё же предпочтительнее.
Автор: Alexyz21
Дата сообщения: 01.05.2016 18:48
Матка, Боска - так я о чём???
Автор: Angel_Ka
Дата сообщения: 01.05.2016 18:56
Alexyz21

И у меня к Вам появилась ещё одна сопутствующая просьба, по возможности.

Дело в том, что при обработке наборов файлов в режиме бранча, выявилась потребность отсортировывать файлы с одинаковыми именами. Составители наборов повадились одни и те же файлы рассовывать по множеству папок (им так зачем-то удобно). А папок может быть до двух сотен, и до 6 степеней вложенности. И нам такие повторы как бы и не мешают, но их тоже нужно "зарегистрировать".

Утилиты, выявляющие дубли имеются. Но очень уж они неуклюжие.

Не могли бы Вы найти возможность сделать функцию или какой другой способ, позволяющий в бранч-панели отсортировать одноимённые файлы?
Автор: Alexyz21
Дата сообщения: 01.05.2016 19:24
Не понял - а разве сейчас на бранч-панели одноимённые не группируются вместе, независимо от папки-родителя?

Добавил комменты, но теперь регэкспы начинающиеся с -- нужно заключать в /--.../ - помним об этом!
Автор: shmuz2
Дата сообщения: 01.05.2016 19:33

Цитата:
а разве сейчас на бранч-панели одноимённые не группируются вместе, независимо от папки-родителя?

Речь, видимо, не о "группировке вместе", а о том, что все дубликаты должны быть выше/ниже в панели, чем все не-дубликаты. При нынешней системе кастомной сортировки это сделать невозможно, но идея интересная, надо будет подумать.
Автор: Alexyz21
Дата сообщения: 01.05.2016 19:38
Тогда скорее все имеющие дубликаты, а не просто дубликаты, иначе поди пойми, какой из них оригинал.
Автор: shmuz2
Дата сообщения: 01.05.2016 19:42
Под дубликатом я здесь подразумеваю любой файл, имеющий хотя бы один одноимённый. То-есть, если есть 2 одноимённых файла, то я называю каждый из них дубликатом.
Автор: Alexyz21
Дата сообщения: 01.05.2016 19:49
Это устоявшийся термин или лично ваш? - Я всю жизнь считал что дубликат это то, что не оригинал.
Автор: shmuz2
Дата сообщения: 01.05.2016 19:53
Я в прошлом сообщении пояснил, что имелось в виду в позапрошлом. Не хотите употреблять слово "дубликат", придумайте другое.
Автор: Alexyz21
Дата сообщения: 01.05.2016 19:57
Понял. А то я подумал, что термин дубликат в Программировании переопределили, а я и не в курсе.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: оффтоп


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.