Записная книжка

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Записная книжка

Post by Dennis_Moore »

Макрос на замену старому плагину Notebook. По Alt+Shift+F12 открывает из любой области файл %FARLOCALPROFILE%\Notebook.txt.



В дополнение будет полезен макрос для вставки разделителя по Ctrl+Alt+Backspace:

Last edited by Dennis_Moore on Fri 23 Jun, 2017 13:54, edited 8 times in total.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Записная книжка

Post by HaRT »

Dennis_Moore wrote: Thu 22 Jun, 2017 16:49макрос для вставки разделителя
Keys("Enter Enter Home 73*= Enter Enter")
Last edited by HaRT on Thu 22 Jun, 2017 17:17, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Записная книжка

Post by Dennis_Moore »

HaRT wrote: Thu 22 Jun, 2017 17:15
Dennis_Moore wrote: Thu 22 Jun, 2017 16:49макрос для вставки разделителя
Keys("Enter Enter Home 73*= Enter Enter")
Ваш вариант хорош, возьму на заметку. Глянул строковые ф-ии lua, вставку строки можно было сделать так:

Code: Select all

print(string.rep("=", 73))
Кнопка End вначале нужна для вставки разделителя даже находясь в середине строки.
Исправил первое сообщение на ваш вариант.
Last edited by Dennis_Moore on Thu 22 Jun, 2017 17:40, edited 2 times in total.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Записная книжка

Post by Shmuel »

Для данного размера разделителя (73) все средства хороши. Но Keys - относительно медленная функция, например Keys("7300*=") у меня занимает более секунды. Поэтому предпочтительнее rep, причём разделитель формировать не в макросе, а вне его, как upvalue.
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Записная книжка

Post by Dennis_Moore »

Учтено замечание Shmuel
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Записная книжка

Post by Shmuel »

Не совсем учтено - сепаратор у вас формируется внутри макроса.

Code: Select all

local sep = string.rep("=", 73)
Macro {
....
}
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Записная книжка

Post by Dennis_Moore »

Shmuel wrote: Thu 22 Jun, 2017 18:58 Не совсем учтено - сепаратор у вас формируется внутри макроса.
Изменил. А почему лучше вне макроса ?

Upd.: Погуглил слово upvalue
Last edited by Dennis_Moore on Thu 22 Jun, 2017 20:36, edited 2 times in total.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Записная книжка

Post by Shmuel »

Dennis_Moore wrote: Thu 22 Jun, 2017 20:30 А почему лучше вне макроса ?
В данном случае - всё равно (экономия на спичках). А в общем случае - макрос будет выполняться быстрее, так как он будет брать уже готовый сепаратор, а не создавать его при каждом исполнении.
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

Записная книжка

Post by skipik »

Victor_VG немного поправил скрипт и попросил меня выложить его здесь:
User avatar
Dennis_Moore
Posts: 295
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 6 times
Been thanked: 17 times

Записная книжка

Post by Dennis_Moore »

Я на ru-board немного прокомментировал изменения:

Victor_VG

Спасибо за интерес к моему скромному макросу
оригинал выдаёт ошибку в строке editor.Editor(notebook_path, title, nil, nil, nil, flags, nil, nil, codepage)
Это фаровский форум съел один nil когда я нажал там Ctrl+Backspace, забыл поправить (исправил в теме)
не вызывается макрос Separor из-за неверного хоткея
хоткей правильный, именно BackSlash (кнопка на которой нарисованы \ и |)
filemask="Notebook.txt";
Это зря, лично я вызываю макрос не только в этом файле и не только в *.txt.
local sep = "\n\n"..string.rep("=", 73).."\n\n";
Были еще End (для возможности вставки разделителя находясь в середине строки) и Home (у меня включена настройка редактора Auto indent)

Вообще я знаю о других макросах вставки разделителей и TrueTemplate, но для меня вся соль в Keys() обрамляющих вставку разделителя
Last edited by Dennis_Moore on Fri 23 Jun, 2017 14:11, edited 1 time in total.
Post Reply

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