Latest post of the previous page:
Это ещё проще.
Подозреваю, регэксп вы и сами составите.
Latest post of the previous page:
Это ещё проще.
Ой, е-ёй! Вы полагаете, что то, что сами умеете, все остальные тоже это умеют? Так, вот, нет. К сожалению, но нет, не справлюсь я с такой задачей.
Про всех не скажу, но вам это просто необходимо.
В принципе — да, безусловно. Но для меня составление регексов это то же самое, что разгадка головоломок. Увлекательно, но напряжно и времязатратно. Но на сей раз мне свезло, и я взял почти готовый из своего недавнего макроса.
Такое замечание по поводу картинки: а не правильней ли выделять в качестве быстрой клавиши последнюю букву комбинации? И красивее, и по смыслу точнее.sToLp wrote: ↑Wed 05 Dec, 2018 20:00В принципе — да, безусловно. Но для меня составление регексов это то же самое, что разгадка головоломок. Увлекательно, но напряжно и времязатратно. Но на сей раз мне свезло, и я взял почти готовый из своего недавнего макроса.
Ещё раз благодарю Вас за скрипт автоматического вывода ключей запуска макросов в их позиции в меню выбора макроса!
Мне удалось приспособить его для решения поставленной задачи и, вроде бы, получается весьма даже :
autokeys.png
Смысл регэксп изменился, стоит и имя привести в соответствие.sToLp wrote: ↑Wed 05 Dec, 2018 20:00Code: Select all
local cas_re = regex.new" (.+)?$" --- local cas = cas_re:match(m.key)
local rkey = m.key:match"%S+$"
У вас реально присутствуют макросы, где явно задана строка "none"?
Нету, просто обдумывал нужна ли запись
if ... then ... end
, а потом забыл убрать.
Я его понимаю как "слова после первого пробела", т.е. в данном случае после первого ключа. И если вставить лишние ключи, в т.ч. невалидные, то они выводятся в меню. Полагаю это полезным.странный он у вас, не знаю даже как работает
Большое спасибо за подсказку с пояснением! Заменю.в данном случае фаровские функции не нужны кстати, задача совсем простая:local rkey = m.key:match"%S+$"
Да, желательно бы это сделать. НО:
Точно, пробел-то я и не заметил.
Возможно, но в этом случае не работает другое ваше условие: "А если там один, то его."
Пожалуйста. Простенько - примерно так:sToLp wrote: ↑Thu 06 Dec, 2018 10:14Да, желательно бы это сделать. НО:
Во-первых, нужен регекс, который вставлял бы перед знаковыми буквами в ключи правой колонки амперсанты "&".
Во-вторых, и это ещё более существенно и трудно осуществимо, нужен гораздо более сложный регекс для сабжевого макроса. Который распознавал бы ключи со вставленными в них амперсантами.
И эти проблемы, как Вы уже могли заметить, для меня непосильны. По крайней мере, в ближайшем обозримом времени.
Но, м.б., Вы могли бы в этом подсобить?
Code: Select all
local function MMacro(m)
-- local cas = m.key:match("^%S+ (.+)$")
local cas = type(m.key)=="string" and m.key:match("^%S+ (.+)$")
if cas then
m.description = ("%-"..width.."s %s&%s"):format(m.description:gsub("&",""),cas:sub(1,-2),cas:sub(-1))
end
return Macro(m)
end
key
не вызывало ошибку.Да, и это противоречие в выше приведённом примере в макросе вызова меню плагина решено повтором ключа. А можно было бы и одним ключом, но с пробелом перед ним — но это уже и вовсе вычурно было бы.
local rkey = m.key:match"%S+$"
. Ещё раз благодарю Вас за помощь!Этот регэксп захватывает только последнюю клавишу, поэтому вероятно надо скомбинировать.
Code: Select all
local rkey = m.key:match" (.+)$" or m.key:match"%S+$"
Очень хорошо! Большое спасибо!IgorZ wrote: ↑Thu 06 Dec, 2018 11:34Code: Select all
local function MMacro(m) local cas = type(m.key)=="string" and m.key:match("^%S+ (.+)$") if cas then m.description = ("%-"..width.."s %s&%s"):format(m.description:gsub("&",""),cas:sub(1,-2),cas:sub(-1)) end return Macro(m) end
А зачем? Ведь очевидно, что это тот ключ, которым вызвано меню. К тому же, получается пересечение с пунктом "внутренняя команда Far", что нехорошо.sToLp wrote: ↑Thu 06 Dec, 2018 11:57Очень хорошо! Большое спасибо!IgorZ wrote: ↑Thu 06 Dec, 2018 11:34Code: Select all
local function MMacro(m) local cas = type(m.key)=="string" and m.key:match("^%S+ (.+)$") if cas then m.description = ("%-"..width.."s %s&%s"):format(m.description:gsub("&",""),cas:sub(1,-2),cas:sub(-1)) end return Macro(m) end
И, если можно, то ещё бы при наличии лишь одного ключа в поле key выводить в меню этот ключ.
Спасибо большое! Испытал и этот вариант регекса и пришёл к выводу, что усложнять, пожалуй, и не стоит, раз уже есть решение точно соответствующее изначально поставленной задаче вывода на показ только последнего ключа. Но в загашник на случай потребности в отладке сборок макросов по набору ключей этот вариант себе отложил.John Doe wrote: ↑Thu 06 Dec, 2018 11:43 [предыдущий] регэксп захватывает только последнюю клавишу, поэтому вероятно надо скомбинировать.
Code: Select all
local rkey = m.key:match" (.+)$" or m.key:match"%S+$"
Да, а далее этим же самым ключом из меню выбора макроса вызывается меню плагина.
В данном конкретном случае это совсем особый вариант, относящийся к особой крупной теме. И этот пункт сделан вполне преднамеренно. Указанный в нём ключ выводится конкретно для подсказки, а не для запуска этой позиции в меню выбора. И он не случайно совпадает с базовым ключом. Тем более, что базовым ключом (в данном случае это AltShiftS) при его повторном нажатии сработает вызов меню плагина, а не данного пункта. Т.е. в данном конкретном случае можно просто не обращать внимания на наличие противоречия в ключах. Оно есть, но оно целенаправленно эксплуатируется по особому назначению.К тому же, получается пересечение с пунктом "внутренняя команда Far"