fl_scripts — набор скриптов для LuaFAR for Editor и LuaMacro

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

fl_scripts — набор скриптов для LuaFAR for Editor и LuaMacro

Post by Aidar »

FAR Lua scripts — набор скриптов для LuaFAR for Editor и LuaMacro

Внимание:
В связи с появлением макросов-аналогов скриптов набора fl_scripts мной больше не поддерживается.

Основные возможности:
  • Общие:
    • Список экранов.
    • Калькулятор (поддерживает пользовательские функции).
      Развитие: viewtopic.php?f=60&t=10574
  • Редактор:
    • Smartkeys.
    • Поиск секций.
    • Вставка шаблонов для новых файлов.
    • Копирование верхнего/нижнего символа.
    • Навигация (поиск ассоциированных файлов).
    • Буфер обмена с произвольным количеством ячеек.
    • Расширенное выделение, Переход по выделению, Смещение выделения.
    • (Рас)Комментирование (с учётом типа файла, строчное и блочное).
  • Редактор:
    • Фильтр панели (развитие: viewtopic.php?f=15&t=9990).
    • Работа с алиасами.
    • Быстрый переход по выделенным файлам.
  • Команды:
  • Калькулятор (lfe:calc).
  • Фильтр панели (lfe:filter).
  • Меню файловой системы для текущей папки (lfe:dir).
  • Примеры скриптов:
    • Кей-логгер.
    • Меню файловой системы.
    • Меню для адресной книги Opera.
Требуется:
LuaFAR for Editor или LuaMacro + UM Adapter, LuaFAR context.

Тестовая версия: http://raidar.github.com/Programs/FarSc ... fl_scripts
Ссылки:
Описание, GitHub, tags, zipball, master.zip.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Latest post of the previous page:

--- searchable menu: очень понравилось, но попробую его ещё улучшить.
Давай. На самом деле всё будет улучшаться по мере использования. Так, пока самое необходимое работает.
Кстати, а там ограничение в 31 BreakKey для меню принципиальное или нет?
--- калькулятор: мне кажется, нужно сделать, чтобы операции копирования и вставки не закрывали диалог.
Сначала так и было. Могу вернуть (:.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote: Кстати, а там ограничение в 31 BreakKey для меню принципиальное или нет?
Не принципиальное. Уберу его. А что, кому-то может понадобиться больше?

Да, пожалуйста, восстанови у себя старую версию dialog.lua. "If it ain't broke, don't fix it".
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Не принципиальное. Уберу его. А что, кому-то может понадобиться больше?
Букв 26. А если захотеть сделать различие регистра и использование луа-регэкспов то может не хватить.

Ну вот:
searchmenu.lua еще обобщен.
+ регекспы луа (пока только %буква и *). Если строка является регекспом и содержит ошибку, в меню остается один неактивный элемент <empty>.
+ вместо букв можно указывать функции. Удобно для del и backspace.

nav.lua
+ автопереход, если в меню один элемент.

PS. На счет EditorGetSelection() наверное ты прав. Я вот думаю завести итератор для блоков, потипу:

Code: Select all

for str in farselection() do end
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

очередной эксперимент.

template.lua шаблоны. Использует lfs.dll.
--- Если файл пустой определяет тип файла и ищет шаблоны в папке templates/тип/. По нахождению выводит меню.
--- В шаблонах можно использовать код луа (см примеры). Луамакрос полностью интерпретирует строки, которые находятся в начале файла и начинаются с
"комментарий"@@ (для C++ это //@@, для latex это %@@ и т. д.) Остальные строки вставляет как есть, заменяя блоки @@код@@ на интерпретацию кода.

block_iterator.lua позволяет перебирать строки в выделении.

nav.lua
теперь предлагает создавать ассоциированный файл (выбирается из списка).

searchablemenu.lua
Обновления Shmuel'а.
---
+ все файлы перемещены в farhome/lua
+ в отдельные папки выделены конфиги, шаблоны, полезные программы.
+ чистка.
Last edited by maxdrfl on Fri 19 Dec, 2008 10:04, edited 1 time in total.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Резко стало не хватать времени. Поэтому выкладываю исправленные скрипты.

Добавлено:
* Узнал про функцию EditorRedraw(), поэтому скрипты изменяющие текст в редакторе теперь работают гораздо быстрее (визуально): blockindent, comment и т. д.
* template.lua упрощен и оптимизирован.
* searchmenu.lua теперь знает про цифры и регулярные выражения lua.
* nav.lua при попытке открытия связанного файла предлагает также создать его (предлагает все возможные варианты по путям и по расширениям).
+ smartkeys.lua --- реализация smarthome и smarttab. Внимание, smarttab прыгает на ближайшую позицию где есть как минимум два пробельных символа.
+ select.lua --- по F3(например) начинает выделение блока. По повторному F3 или Shift-F3 выделяет обычный или вертикальный блок. В процессе блок не отрисовывается. Только после повторного нажатия.
+ copysymbol.lua --- вставляет символ, находящийся либо над, либо под текущим положением курсора. (идея взята из редактора vim --- CtrlY)
*_usermenu.lua --- меню для lua4fe + привязка к клавишам. SmartTab привязан к AltTab.
* местами появились комментарии в стиле luadoc.
Last edited by maxdrfl on Thu 25 Dec, 2008 10:31, edited 1 time in total.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Два новых скрипта к lua4far.

section.lua --- Поиск разделов. Аналогичен реализациям из colorer и s&r.
От colorer/sections отличается нормальной работой с koi8-r. От s&r возможностью поиска по меню.
Использует регэкспы lua, соответственно нет конструкций типа (sdf|sdf|bbf) или (sdf)+. Зато можно задать столько паттернов, сколько угодно.
см. section_config.lua

shell/selection_jump.lua --- переход на следующий/предыдущий, первый/последний выделенный элемент панели.

template.lua отучен от жестко заданного пути к шаблонам. Он их теперь ищет в папке плагина/scripts/templates/.

Всё это добро следует поместить в папку плагина. Должно работать (:
Last edited by maxdrfl on Fri 26 Dec, 2008 10:04, edited 1 time in total.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl
Поставил твою сборку, и обнаружился любопытный эффект, вот его описание:

Plugin Settings: "Return to Main menu" активизировано.

1. открываем _usermenu.lua в редакторе
2. F11 -> LuaFAR for Editor -> Navigation -> Navigate
3. открывается в редакторе файл scripts/template.lua
4. нажимаем Ctrl+Tab, попадаем в панели (в левом верхнем углу: [0+2]), но - почему-то видим в панелях меню плагина, которое было открыто в редакторе.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

повторяется. Интересный эффект. Посмотрю что не так.

Интересно, что в template.lua такого не происходит.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:повторяется. Интересный эффект. Посмотрю что не так.
Да нет, это вроде не твоё. Это либо мне надо смотреть, либо Фар-тиму.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Да нет, это вроде не твоё. Это либо мне надо смотреть, либо Фар-тиму.
Угу. Вроде не моё.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl
Погонял твою сборку немного. Кое-что обнаружилось:
1. smarttab: хоткей alt+tab под Windows не может быть назначен
2. indent: ошибка при попытке исполнить, если нет выделенного блока. Я бы предложил в этом случае "индентить" текущую строку
3. selstream/column: не работают, если включена опция плагина "always reload on require". На данный момент это можно решить, отказавшись от модуля "memory", используя вместо него какую-нибудь переменную в _G или far.
4. selstream: Не работает, если (y2==y1 and x2<x1).
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Shmuel, спасибо.
Shmuel wrote:1. smarttab: хоткей alt+tab под Windows не может быть назначен
Ну это не мои проблемы (:. Хоть на пробел вешай.
_usermenu выкладывается для примера.
Shmuel wrote:2. indent: ошибка при попытке исполнить, если нет выделенного блока. Я бы предложил в этом случае "индентить" текущую строку
Никогда так не использовал (: Сделаю.
Shmuel wrote:3. selstream/column: не работают, если включена опция плагина "always reload on require". На данный момент это можно решить, отказавшись от модуля "memory", используя вместо него какую-нибудь переменную в _G или far.
Я почему-то не подумал, что можно _G использовать. Будет.
Shmuel wrote:4. selstream: Не работает, если (y2==y1 and x2<x1).
Действительно, поправлю.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Поправки.

--- selstream теперь работает при l1==l2 и p1>p2.
--- block_iterator, если ему передать true как аргумент и если нет выделений итерирует только по текущей строке. indent теперь не выдает ошибку.
--- memory теперь пишется в _G.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote: --- memory теперь пишется в _G.
Этот вариант не работает, если установлена опция "use strict mode". Чтобы работал и с этой опцией и без неё, надо:

Code: Select all

rawset(_G,'my_memory', rawget(_G,'my_memory') or {})
Понимаю, что это скучно так писать и плохо читаемо. Значит - можно не пользоваться опцией strict mode (либо я придумаю что-то более элегантное к след. версии).

sections: очень понравилось, но можно усовершенствовать.
maxdrfl
Posts: 486
Joined: Mon 04 Apr, 2005 14:36
Location: Иркутск

Re: LuaFAR for Editor

Post by maxdrfl »

Shmuel wrote:Код: Выделить всёrawset(_G,'my_memory', rawget(_G,'my_memory') or {})Понимаю, что это скучно так писать и плохо читаемо. Значит - можно не пользоваться опцией strict mode (либо я придумаю что-то более элегантное к след. версии).
Я пока оставлю как есть. Когда надумаешь, менять поведение или нет, я поправлю если надо будет.
Shmuel wrote:sections: очень понравилось, но можно усовершенствовать.
Планирую добавить несколько наборов на каждый тип файла. Меню: контекстное и вообще со всеми вариантами.
Маски исключения.
Форматирование строки меню из подстановок.
Может быть добавлю обычные регэкспы, хотя вряд ли.
Если есть какие предложения --- пиши напрямую, а не загадками (: .

Кстати, по этому поводу вопрос. Поддержка клавиш со знаками препинания, кавычками и т.д. будет?
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: LuaFAR for Editor

Post by Shmuel »

maxdrfl wrote:Если есть какие предложения --- пиши напрямую, а не загадками (: .
Да нет, я не пытаюсь быть загадочным. Просто это достаточно обширная тема для разговора, а мне в данный момент не хотелось бы его начинать. Предложения вероятно будут (позже), а возможно и сам поработаю над этим модулем.
maxdrfl wrote:Кстати, по этому поводу вопрос. Поддержка клавиш со знаками препинания, кавычками и т.д. будет?
Однозначного ответа прямо сейчас нет, но наши желания совпадают :) Просто это сейчас не самый приоритетный пункт программы. Самый приоритетный - дать возможность утилитам пользователя отслеживать события Фара, то-есть, приблизить их к полноценным "отдельным" плагинам.
Post Reply

Return to “Полезные макросы и скрипты”