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

» Far Manager

Автор: Alexyz21
Дата сообщения: 08.03.2016 10:48
shmuz
По моим макросам с Angel_Ka время не тратьте, я сам - там всё ещё в процессе.

FarEncyclopedia утверждает:
DM_ENABLE

Param1
ID элемента диалога.

Param2
Состояние элемента:
TRUE - Enable
FALSE - Disable
-1 - получить состояние

Return
Предыдущее состояние элемента:
TRUE - Enabled
FALSE - Disabled

Но на практике в hDlg:send(F.DM_ENABLE,Param1,Param2) в качестве Param2 ожидает число, а не boolean.

Angel_Ka
В Panel.CustomSort.lua идут доработки, добью, посмотрю и ваш вопрос.
Автор: Angel_Ka
Дата сообщения: 08.03.2016 11:32
shmuz
Alexyz21
Благодарю Вас! Принято. Очень рад, что процессы идут. Терпеливо ожидаю и воспринимаю их плоды.
Автор: shmuz
Дата сообщения: 08.03.2016 11:45
Alexyz21
1. В Энциклопедии Far описан C-интерфейс, а не Lua-интерфейс. FALSE и TRUE это целые числа, в C нет булевого типа.
2. В luafar_manual.chm в описании far.SendDlgMessage ясно указаны типы параметров для DM_ENABLE. Будьте добры ознакомиться.
Автор: Angel_Ka
Дата сообщения: 08.03.2016 12:00
Alexyz21
А нельзя ли сделать так, чтобы в русском Фаре диалоги макросов воспроизводились бы в русском варианте?
У меня диалог сортировки файлов по атрибутам выглядит вот так:



буквы символов атрибутов сохранены стандартные, а остальные подобраны неконфликтующие.

Код:
local Items = {
--[[01]] {F.DI_DOUBLEBOX, 3,1, 68,14, 0, 0,0, 0, "Сортировка файлов по атрибутам (Alexyz21)"},
--[[02]] {F.DI_TEXT, 5,2, 18,2, 0, 0,0, 0, "Коды/символы:"},
--[[03]] {F.DI_EDIT, 19,2, 35,2, 0, 0,0, 0, ""},
--[[04]] {F.DI_BUTTON, 37,2, 68,2, 0, 0,0, 0, "[ &L как у файла под курсором ]"},
--[[05]] {F.DI_CHECKBOX, 5,3, 30,3, 0, 0,0, 0, "&r только для чтения"},
--[[06]] {F.DI_CHECKBOX, 5,4, 30,4, 0, 0,0, 0, "&a архивный"},
--[[07]] {F.DI_CHECKBOX, 5,5, 30,5, 0, 0,0, 0, "&h скрытый"},
--[[08]] {F.DI_CHECKBOX, 5,6, 30,6, 0, 0,0, 0, "&s системный"},
--[[09]] {F.DI_CHECKBOX, 5,7, 30,7, 0, 0,0, 0, "&c сжатый"},
--[[10]] {F.DI_CHECKBOX, 5,8, 30,8, 0, 0,0, 0, "&e зашифрованный"},
--[[11]] {F.DI_CHECKBOX, 5,9, 30,9, 0, 0,0, 0, "&i не индексируемый"},
--[[12]] {F.DI_CHECKBOX, 5,10, 30,10, 0, 0,0, 0, "&D папка"},
--[[13]] {F.DI_CHECKBOX, 37,3, 68,3, 0, 0,0, 0, "&p разреженный"},
--[[14]] {F.DI_CHECKBOX, 37,4, 68,4, 0, 0,0, 0, "&y временный"},
--[[15]] {F.DI_CHECKBOX, 37,5, 68,5, 0, 0,0, 0, "&f автономный"},
--[[16]] {F.DI_CHECKBOX, 37,6, 68,6, 0, 0,0, 0, "&t точка повторного анализа"},
--[[17]] {F.DI_CHECKBOX, 37,7, 68,7, 0, 0,0, 0, "&v виртуальный"},
--[[18]] {F.DI_CHECKBOX, 37,8, 68,8, 0, 0,0, 0, "&g поток целостности"},
--[[29]] {F.DI_CHECKBOX, 37,9, 68,9, 0, 0,0, 0, "&b нет данных очистки"},
--[[20]] {F.DI_CHECKBOX, 37,10, 68,10, 0, 0,0, 0, "&X устройство"},
--[[21]] {F.DI_CHECKBOX, 19,11, 36,11, 0, 0,0, 0, "&Z строгая сортировка"},
--[[22]] {F.DI_TEXT, -1,12, 0,0, 0, 0,0, F.DIF_SEPARATOR,""},
--[[23]] {F.DI_BUTTON, 0,13, 0,0, 0, 0,0, F.DIF_DEFAULTBUTTON+F.DIF_CENTERGROUP,"&ГОТОВО"},
--[[24]] {F.DI_BUTTON, 0,13, 0,0, 0, 0,0, F.DIF_CENTERGROUP,"&отменить"}
}
Автор: VictorVG2
Дата сообщения: 08.03.2016 12:36
Angel_Ka

Если на Радикале разAlexyz21
Автор: Alexyz21
Дата сообщения: 28.03.2016 22:29
склероз борды
Автор: Benchmark
Дата сообщения: 29.03.2016 02:06

Цитата:
склероз борды

Вроде должно быть исправлено.
Автор: Alexyz21
Дата сообщения: 29.03.2016 17:52
Shmuel
Это правильно, что

Код: lua:
local s1,s2 = regex.match("qwerty","^(.*?)(\\d+?)?$")
msgbox(tostring(s2),s1)
Автор: shmuz1
Дата сообщения: 29.03.2016 18:13
Alexyz21
Это правильно. Документация LuaFAR об этом не пишет, но функции рег. выражений сделаны по образцу и подобию библиотеки Lrexlib, в документации которой об этом можно прочитать.
Автор: Alexyz21
Дата сообщения: 29.03.2016 22:01
ЧуднО, однако.

Panel.CustomSortByName.lua
Теперь при использовании Regexp сортировки можно возвратить результат из нескольких найденных групп (используется gsub). Например:
Код: \s(\S+?)\s+?(\S+?)\s+?(\d+?)\D{?:%3%2%1}
Автор: Alexyz21
Дата сообщения: 30.03.2016 09:59
Editor.CyrSpace Highlighting.moon [more]
Код: -- Автор zg, соавтор AleXH.
-- Страница скрипта: http://forum.ru-board.com/topic.cgi?forum=5&topic=48136&start=960#17
-- прототип: http://forum.farmanager.com/viewtopic.php?f=60&t=8674

F=far.Flags
editors={}
Colors={
regex.new "/(\\s+?)(\\S|$)/"
{Flags:bit64.bor F.FCF_FG_4BIT,F.FCF_BG_4BIT
ForegroundColor:0x9
BackgroundColor:0x1}
regex.new "/([а-яёА-ЯЁ]+?)([^а-яёА-ЯЁ]|$)/"
{Flags:bit64.bor F.FCF_FG_4BIT,F.FCF_BG_4BIT
ForegroundColor:0xe
BackgroundColor:0xc}
-- regex.new [[/([-+*:.,;!?~@#$%^&\\\/]+?)([-+*:.,;!?~@#$%^&\\\/]|$)/]]
-- {Flags:bit64.bor F.FCF_FG_4BIT,F.FCF_BG_4BIT
-- ForegroundColor:0xf
-- BackgroundColor:0x1}
}
colorguid=win.Uuid "F4B5E624-16F6-4243-9A3D-763097C72EAA"

GetEditorData=(id)->
data=editors[id]
if not data
editors[id]=
start:0
finish:0
data=editors[id]
data

RemoveColors=(id,data)->
for ii=data.start,data.finish
editor.DelColor id,ii,0,colorguid

ProcessColors=(id,update)->
data=GetEditorData id
RemoveColors id,data
update data

count,ttime0,ttime1=0,0,0
Event
group:"EditorEvent"
condition:(id,event,param)->
return editors[id]
action:(id,event,param)->
if event==F.EE_CLOSE
editors[id]=nil
if event==F.EE_REDRAW
ttime=far.FarClock!
count=count+1
if ttime-ttime1>8000 --block other redraw events
ei=editor.GetInfo!
ProcessColors ei.EditorID,(data)->
data.start=ei.TopScreenLine
data.finish=math.min ei.TopScreenLine+ei.WindowSizeY,ei.TotalLines
for ii=data.start,data.finish
RealLeftPos=editor.TabToReal(ei.EditorID,ii,ei.LeftPos)-1
gsw=editor.GetStringW(ei.EditorID,ii)
line=gsw.StringText
length=gsw.StringLength
if RealLeftPos<=length
RightBorder=RealLeftPos+ei.WindowSizeX
if RightBorder>length
editor.AddColor ei.EditorID,ii,length+1,length+2,0,Colors[2],190,colorguid
for i=1,#Colors/2
sEnd=RealLeftPos
while sEnd<RightBorder
sBegin,sEnd,_,s2=Colors[i*2-1]\findW line,sEnd+1
if sEnd
if s2~=""
sEnd=sEnd-1
sEnd=math.min sEnd,RightBorder
editor.AddColor ei.EditorID,ii,sBegin,sEnd,0,Colors[i*2],190,colorguid
else
break
ttime0=ttime0+far.FarClock!-ttime
ttime1=far.FarClock!

Event
group:"ExitFAR"
action:->
wincount=far.AdvControl F.ACTL_GETWINDOWCOUNT,0,0
for ii=1,wincount
info=far.AdvControl F.ACTL_GETWINDOWINFO,ii,0
if info and F.WTYPE_EDITOR==info.Type
ProcessColors info.Id,(data)->
data.start=0
data.finish=0

Macro
description:"Подсветка кириллицы и пробельных символов"
area:"Editor"
key:"F3"
action:->
id=editor.GetInfo(-1).EditorID
if not editors[id]
count,ttime0=0,0
editors[id]=
start:0
finish:0
-- editor.Redraw!
Editor.Set 20,1
msgbox "count: "..count,"time: "..ttime0
else
ProcessColors id,(data)->
data.start=1
data.finish=1
editors[id]=nil
-- editor.Redraw!
Editor.Set 20,0
msgbox "count: "..count,"time: "..ttime0
Автор: Victor_VG
Дата сообщения: 30.03.2016 16:24
AudioPlayer — простой аудио плеер, p7:

Q:

"Alexander84 » Sun 27 Mar, 2016 22:55

В истории изменений написано, что Ctrl+стрелки влево/вправо переключают треки, но, кажется, не работает. Есть такое?
"

А:

Плагин работает согласно документации и вероятная причина наблюдаемого явления перехват клавиш управления плагином скриптом, например Переключение дисков по Ctrl/Alt/Shift+<-/-> или внешней программой. В случае использования данного скрипта обновите его до версии 3.1.1 и настройте клавиши управления, для более старых версий 1.х и 2.х придётся править сам скрипт убрав в нём модификатор Ctrl. Я это делал с учётом наличия 84-х клавишных клавиатур (ноутбуки, многие промышленные ПК) у которых нет малой цифровой клавиатуры что при наличии не модифицированного скрипта делает невозможным изменение размеров панелей по CtrlRight/CtrlLeft.
Автор: shmuz1
Дата сообщения: 30.03.2016 20:53
Victor_VG, хотел ответить на ЛС, говорят "вам запрещено". Наверное, ростом не вышел.
Автор: Victor_VG
Дата сообщения: 30.03.2016 21:06
shmuz1

Да, первые 10 суток (?) ЛС отключён. Сам многих кто писал после второй аварии на бумажку списывал и ответил только после того batva восстановил аккаунт. Остальных пострадавших так же восстановят, но вероятно после завершения работы по ремонту RAID 1 на сервере - там отказали оба диска зеркала...
Автор: shmuz1
Дата сообщения: 31.03.2016 14:55
Victor_VG
ЛС не отключён, только отправка сообщений отключена. Читать входящие можно свободно.
Автор: Benchmark
Дата сообщения: 31.03.2016 15:53
shmuz1

Цитата:
хотел ответить на ЛС, говорят "вам запрещено". Наверное, ростом не вышел

Скоро будет вторая часть восстановления пропавших аккаунтов. shmuz в список на восстановление внесён. Ждём-с.
Автор: Victor_VG
Дата сообщения: 31.03.2016 17:07
Benchmark

Именно это и было в ПМ. Понятно, что люди типа nord047 так и останутся в бане, но он лично сам со всеми перессорился и пожинает плоды своего поведения.

Добавлено:
shmuz1

Да, я неточно выразился - насколько я помню вроде первые трое суток действует блокировка отправки писем и ЛС чтобы временщики не спамили людям в ПМ.
Автор: Angel_Ka
Дата сообщения: 31.03.2016 20:52
Alexyz21

Цитата:
Editor.CyrSpace Highlighting.moon
от 10:02 30-03-2016

В Win10entRu x64 Far 3.0 4607 x64 на прежнем тестовом файле Байт: 43 757 073:

Код: Вкл count: 1 time: 1101 count: 1 time: 616 count: 1 time: 986

Выкл count: 6 time: 4119 count: 8 time: 4760 count: 6 time: 4514
Автор: Alexyz21
Дата сообщения: 01.04.2016 15:34
Angel_Ka

Цитата:
не срабатывает

она будет работать только на соответствующих шаблону именах, приведена лишь как пример. Для своих файлов составляете свой шаблон с группами и сортируете, согласно выбранному вами порядку групп. Шаблон желательно привязывать к началу строки (имени). например:
Код: ^.*?(шаблон_группы_1).*?(шаблон_группы_2).*?(шаблон_группы_3).*?(шаблон_группы_4).*?(шаблон_группы_5).*?(шаблон_группы_6){?:%4%1%6%2%5%3}
Автор: Angel_Ka
Дата сообщения: 01.04.2016 21:23
Alexyz21

БОЛЬШОЕ СПАСИБО за ценную инструкцию!

Однако, вероятно, дело в отсутствии у меня необходимых навыков работы с регэкспами. Потому что, когда я составляю конструкцию из их набора, который Вы мне посоветовали, то данное регулярное выражение срабатывает, например:
^.*?([^a-zA-Z]).*?(\I).*?([^а-яёА-ЯЁ]){?:%1%3%2%} — работает.

Но когда я пытаюсь составить конструкцию из тех регэкспов, которые за последние дни скомбинировал для себя сам (и которые, сами по себе по одиночке работают), то такие конструкции, по непонятным пока для меня причинам, не работают.
Вот, например, беру из "собственного" набора 3 проверено работающих с тестом регэкспа:

\d+(?=\к2) — по числу-префиксу, сразу за которым стоят русская буква "к" и цифра "2".

\Q. \E|\,|\; — в именах файлов присутствуют точки, сразу за которыми следуют пробелы, или в именах есть запятые, или точки с запятыми.

/ГОСТ [^Р ]/i — по файлам с ГОСТ или гост (но не ГОСТ Р/гост р).

и составляю из них конструкцию, и запускаю её:
^.*?(\d+(?=\к2)).*?(\Q. \E|\,|\;).*?([/ГОСТ [^Р ]/i){?:%1%3%2%}
но получаю ошибку, смысла которой я не понимаю:


Код: LuaMacro
...CtShF3cборный(Alexyz21).lua:241: invalid regular expression
Stack Traceback
===============
(1) Lua function '(anonymous)' at file 'C:\Far\Profile\Macros\scripts\she_lua\CtShF3cборный(Alexyz21).lua:241' (best guess)
Local variables:
res = boolean: true
Автор: Alexyz21
Дата сообщения: 01.04.2016 22:43
с такими регэкспами и не удивительно, что ничего не работает.

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

Код: /^.*?(\d+?)к2.*?(шаблон_имени)[\.,;] .*?ГОСТ (?!Р)(шаблон_госта)/i{?:%1%3%2}
Автор: Angel_Ka
Дата сообщения: 02.04.2016 00:25
Alexyz21

СПАСИБО БОЛЬШОЕ за помощь! Особо благодарю Вас за подробные пояснения, коррекцию скомбинированных мною регулярок и за составленный пример!

Но, увы, результат у меня пока что тот же, что и прежде. То есть, хотя каждая из групп регэкспов в отдельности: число оканчивающееся на к2 — "(\d+?)к2", имя — "[\.,;] " и гост — "ГОСТ (?!Р)" вполне нормально работают, однако их конгломерат в целом, а я пытался применять, в частности, следующее выражение:
Код: /^.*?(\d+?)к2.*?(\d+?) .[\.,;] .*?(\d+?) ГОСТ (?!Р) ./i{?:%1%3%2%}
Автор: YuS_two
Дата сообщения: 02.04.2016 00:58
Angel_Ka

Цитата:
И в чём тут дело я совсем не понимаю.

Дело в том, что шаблоны регэкспов необходимо читать буквально и последовательно... но работают в итоге они целиком, т.е. чтобы сработал составленный шаблон, необходимо, чтобы в тексте присутствовали все совпадения, а не частичные...


Цитата:
По крайней мере они стоят того, чтобы на них потратить время.

Советую поизучать книгу Джеффри Фридла "Регулярные выражения"...
Автор: Angel_Ka
Дата сообщения: 02.04.2016 01:25
YuS_two

Благодарю Вас за любезные советы! Книгу Джеффри Фридла "Регулярные выражения" безотлагательно скачал и буду изучать.

Цитата:
необходимо, чтобы в тексте присутствовали все совпадения, а не частичные

А вот этого я не понял. По возможности, поясните, пожалуйста, поподробнее.
Автор: YuS_two
Дата сообщения: 02.04.2016 10:02
[more] [more] Angel_Ka

Цитата:
По возможности, поясните, пожалуйста, поподробнее.

Здесь не совсем по теме это будет, но маленькие примеры, думаю не повредят:

Пример текста:

Код: 123abc
1bc
abc
bc
Автор: Alexyz21
Дата сообщения: 02.04.2016 10:38
Angel_Ka
1.
Цитата:
/^.*?(\d+?)к2.*?(\d+?) .[\.,;] .*?(\d+?) ГОСТ (?!Р) ./i{?:%1%3%2%}


2. у вас с одинаковым числом-префиксом идут разные ГОСТы? Если нет, то непонятно, что вы вообще пытаетесь сделать. Если да, то имена также всегда предваряет число-префикс?

И, как правильно заметил YuS_two, регулярные выражения должны совпадать полностью, а не частично.

Shmuel
Вроде бы вас как-то раньше просили о добавлении в regex поддержки именованных переменных. Присоединяюсь к просившим - обилие нумерованных это безусловно здорово, но в некоторых ситуациях нужны именно именованные, независимые от порядка перечисления в регулярке. Например в
Код: regex.gsub(s,"(?{шаб1}...) (?{шаб3}...) (?{шаб2}...)|(?{шаб2}...) (?{шаб3}...) (?{шаб1}...)","${шаб1} ${шаб2} ${шаб3}")
Автор: shmuz1
Дата сообщения: 02.04.2016 10:52
Alexyz21

Цитата:
о добавлении в regex поддержки именованных переменных

На данный момент Far это не позволяет (хотя в оригинальной библиотеке К.Ступника оно вроде работало).
Поэтому, к примеру, плагин LF Search поддерживает эту фичу для библиотек PCRE и Oniguruma, но не поддерживает для Far Regex.
Автор: Angel_Ka
Дата сообщения: 02.04.2016 10:59
YuS_two

ОЧЕНЬ БЛАГОДАРЕН Вам за подробное и доходчивое разъяснение того, что такое "частичные совпадения" в комбинаторике регэкспов! Необыкновенно уместный обзор практических примеров простых шаблонов обеспечивает необходимую полноту картины в целом, а также целесообразен и сам по себе для понимания сути регулярных выражений.

И, кроме того, особая благодарность Вам за разбор приведённого мною шаблона! Для меня это особенно полезно! Есть над чем подумать.
Автор: Alexyz21
Дата сообщения: 02.04.2016 11:09
shmuz1
на мантисе виша не вижу - оформить?
Автор: Angel_Ka
Дата сообщения: 02.04.2016 11:15
Alexyz21

1. Большое спасибо за указание на опечатку! К сожалению, само по себе её устранение положительного результата пока не дало. Но ведь, если я правильно понимаю, временное отсутствие положительного результата из-за недостатков всего применённого мною выражения в целом. Поэтому продолжаю попытки составить его правильно, сейчас — особенно в свете подсказок YuS_two.

2.
Цитата:
имена также всегда предваряет число-префикс?
Да, в данном тесте это так. В начале имени каждого файла данной базы идёт пятизначное число-префикс, иногда к нему прилеплены особые пометки типа "к2", "к0", "кк" и т.п.



Добавлено:

Цитата:
у вас с одинаковым числом-префиксом идут разные ГОСТы?
Да, запросто, разные их редакции.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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