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

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

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

Post by Dennis_Moore » Thu 22 Jun, 2017 16:49

Макрос на замену старому плагину 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: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Thu 22 Jun, 2017 17:15

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: 230
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 10 times

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

Post by Dennis_Moore » Thu 22 Jun, 2017 17:31

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: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Thu 22 Jun, 2017 18:06

Для данного размера разделителя (73) все средства хороши. Но Keys - относительно медленная функция, например Keys("7300*=") у меня занимает более секунды. Поэтому предпочтительнее rep, причём разделитель формировать не в макросе, а вне его, как upvalue.

User avatar
Dennis_Moore
Posts: 230
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 10 times

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

Post by Dennis_Moore » Thu 22 Jun, 2017 18:35

Учтено замечание Shmuel

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Thu 22 Jun, 2017 18:58

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

Code: Select all

local sep = string.rep("=", 73)
Macro {
....
}

User avatar
Dennis_Moore
Posts: 230
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 10 times

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

Post by Dennis_Moore » Thu 22 Jun, 2017 20:30

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: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Thu 22 Jun, 2017 20:42

Dennis_Moore wrote:
Thu 22 Jun, 2017 20:30
А почему лучше вне макроса ?
В данном случае - всё равно (экономия на спичках). А в общем случае - макрос будет выполняться быстрее, так как он будет брать уже готовый сепаратор, а не создавать его при каждом исполнении.

skipik
Posts: 55
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 3 times
Been thanked: 2 times

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

Post by skipik » Fri 23 Jun, 2017 13:39

Victor_VG немного поправил скрипт и попросил меня выложить его здесь:

User avatar
Dennis_Moore
Posts: 230
Joined: Tue 03 Mar, 2015 19:54
Location: Kiev
Has thanked: 5 times
Been thanked: 10 times

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

Post by Dennis_Moore » Fri 23 Jun, 2017 14:10

Я на 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 “Обсуждение макросов”