Макрос для литерации абзацев

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Макрос для литерации абзацев

Post by sToLp »

По ходу дела понадобилось горячие клавиши множества пользовательских меню переобозначить буквами от a до z.
И поскольку ни в нативной замене в редакторе по CtrlF7, ни в плагинах EdtFind, RESearch и LuaFAR Search функции литерации я не нашёл, то решил оперативно сварганить макрос.
Посредством его заменяю предварительно расставленные двузначные числа от 10 до 35 на поставленные им в соответствие буквы английского алфавита.

Данный работает, но он не удовлетворяет меня не только "эстетически". И не только тем, что требует предварительной подработки (нумерации) материала. Но главным образом тем, что не умеет работать с выделенной областью (когда надо литерировать подменю, например).

С надеждой на то, что опытных макрописателей тема заинтересует. И будет написан макрос, который делает литерацию — обозначение с помощью букв (литер) порядкового места заданных абзацев. Желательно как с произвольно указанного места, так и в выделенной области.

Исправлено написание слова Subtract.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Нужен макрос для литерации абзацев

Post by Shmuel »

sToLp wrote: И поскольку ни в нативной замене в редакторе по CtrlF7, ни в плагинах EdtFind, RESearch и LuaFAR Search функции литерации я не нашёл

Code: Select all

╔════════════════════════ LF Search: Replace ════════════════════════╗
║ Search for:   ^(\d\d):                                       ↓[ \ ]║
║                                                                    ║
║ Replace with: return string.char(T[1]+87)..":"               ↓[ / ]║
║   [x] Function mode  [ ] Delete empty line [ ] Confirm replacement ║
╟────────────────────────────────────────────────────────────────────╢
║ [ ] Case sensitive   [x] Reg. expression     Regexp library:       ║
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Нужен макрос для литерации абзацев

Post by sToLp »

Shmuel

Здорово! Большое спасибо за подсказку! Сам бы ни за что не догадался.

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

Code: Select all

36 на {, 37 - |, 38 - }, 39 - ~, 40 - , 41 - � и далее до конца (до 57) все номера заменены на �
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Нужен макрос для литерации абзацев

Post by Shmuel »

a=tonumber(T[1]); return a<36 and string.char(a+87)..":"
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Нужен макрос для литерации абзацев

Post by sToLp »

Shmuel
Благодарю Вас за помощь! Приемлемый макрос составил.

Вроде работает как надо! Буду ещё испытывать.

Добавлено: исправлено написание слова Subtract.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Нужен макрос для литерации абзацев

Post by Shmuel »

1. В макросе можно обойтись и без плагина:
2. Вы пишете слово Subtract неправильно.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Нужен макрос для литерации абзацев

Post by sToLp »

Shmuel wrote:1. В макросе можно обойтись и без плагина:
Потрясающе! Так и предполагал, что Вы можете нечто такое! Очень то, что сейчас надо! Большое спасибо!

По возможности, покажите, пожалуйста, а как можно литеровать абзацы без их предварительной нумерации? А просто по очищенным позициям, начинающимся на простое вертикальное двоеточие ":". Уже больше для интереса, а не только для практики.
2. Вы пишете слово Subtract неправильно.
Это надо же. Благодарю Вас, что указали! Ведь обязательно когда ни будь всплыло бы. Вот и понадейся на автоматические проверяльщики.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Нужен макрос для литерации абзацев

Post by Shmuel »

sToLp wrote: а как можно литеровать абзацы без их предварительной нумерации? А просто по очищенным позициям, начинающимся на простое вертикальное двоеточие ":"
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Нужен макрос для литерации абзацев

Post by sToLp »

Shmuel
И ещё раз большое спасибо!
Первоначально заданная тема лично для меня прояснена полностью и всесторонне.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Нужен макрос для литерации абзацев

Post by sToLp »

Shmuel
Благодаря показанной Вами функции regex.gsub() составил удобные макросы для переразметки хоткеев в пользовательских меню. Без использования плагинов и даже диалогов. , пусть кто захочет тоже воспользуется ими тоже.

Вы видите, что в двух случаях вместо string.char() применена string.sub(). Мне показалось это более наглядным.
А также из-за того, что не нашёл способа через string.char() вызывать русские буквы. Да и в string.sub() с ними пришлось повозиться, пока подобрал подходящие параметры. Но, может быть, Вы покажете более оптимальные способы.

И ещё раз благодарю Вас за помощь!
Attachments
ctAlRCEFL_reorderingHotkeysUsersMenu(iShmuel)edi_umenu.lua.7z
(1.23 KiB) Downloaded 63 times
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Нужен макрос для литерации абзацев

Post by Shmuel »

sToLp wrote: Но, может быть, Вы покажете более оптимальные способы.
Посмотрел, вроде сделано нормально, и если работает, то оптимизировать незачем.
User avatar
Wave
Posts: 1887
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Нужен макрос для литерации абзацев

Post by Wave »

Я правильно понял, что это открываешь файл меню, выделяешь пункты, и макрос меняет хоткеи вызовов на F1-F12-1-0-a-z ?
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Нужен макрос для литерации абзацев

Post by sToLp »

Wave wrote:Я правильно понял, что это открываешь файл меню, выделяешь пункты, и макрос меняет хоткеи вызовов на F1-F12-1-0-a-z ?
Да. Но только не один макрос а четыре по раздельно:

Первый макрос — чистит метки.
Второй — очищенные метки заполняет по порядку сначала цифрами от 1 до 9, а далее буквами от a до z.
Третий — очищенные же метки заполняет обозначениями функциональных клавиш от F1 до F24.
Четвёртый макрос может заполнить очищенные метки русскими буквами от A до Я (но это так, для поупражняться больше).

Кстати, по CtrlAltR можно запустить меню выбора макросов и потом уже оттуда выбирать нужный:
ctAlR.png
ctAlR.png (70.83 KiB) Viewed 4962 times
И, между прочим, есть способ запускать макросы из этого меню прямо по их шорткатам.
Post Reply

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