LuaComplete Tabbed — завершение слов в скриптах на Lua и MoonScript

Здесь обсуждается всё, что касается макросов.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete Tabbed — завершение слов в скриптах на Lua и MoonScript

Post by buniak_a_h »

Данный скрипт сделан в помощь разработчикам скриптов со слабой памятью (ну или слишком ленивых, чтоб запоминать). Тема отделена от другой аналогичной в связи с коренной переработкой интерфейса.

Скрипт ищет слева от курсора имена полей таблицы, все флаги far.Flags, ключевые слова языка и доступные переменные. Всё найденное выводится в виде списков на 4 вкладках.

Например:
В тексте набрано APanel.C↑urPos (стрелкой указано место курсора). При вызове скрипта выведется список полей таблицы APanel, начинающихся с "C":

Code: Select all

┌──────────── Поля таблицы APanel ─────────────┐
│n ColumnCount                                 │
│n CurPos                                      │
│s Current                                     │
│                                              │
Остальные поля таблицы скрыты, но их можно "проявить" (Ctrl+H).
На первой вкладке выводится список полей таблицы (если удалось её распознать).
На второй — список флагов (содержимое таблиц far.Flags, far.Colors и far.Guids).
На третьей — список ключевых слов языка (Lua или Moon).
На четвёртой — имена доступных локальных переменных.

Изначально скрипт пытается определить слово и позиционироваться на нём (в примере выше будет открыта первая вкладка, и указатель установится на второй строке — CurPos).
Имена локальных переменных изначально отсортированы в алфавитном порядке; в дальнейшем их можно пересортировать в порядке появления объявления. На вкладке с переменными под списком указан номер строки, в которой найдено объявление этой переменной, и выводится строка (см. скриншот ниже).



Скачать:
pc_LuaCmpl.1_1_11.7z
Версия 1.1.11
(14.33 KiB) Downloaded 103 times
Last edited by buniak_a_h on Fri 01 Jul, 2022 08:27, edited 13 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by buniak_a_h »

Latest post of the previous page:

HaRT wrote: Thu 20 Aug, 2020 00:45 для единообразия хочется, чтобы CtrlPgDn/CtrlPgUp тоже переходили…
"Единообразие" - понятие, как оказалось, очень относительное… :ha: Я ж не сам придумал - во многих софтах такое переключение вкладок. Например, в IDE от Borland-а, в Яндекс-браузере. Видимо, надо делать настройку. Или заложить несколько хоткеев; есть ещё софт, в котором переход сделан по Ctrl+стрелки (сразу не припомню, но удобно было).
HaRT wrote: Thu 20 Aug, 2020 00:45 он транслируется в Луа
Да я прочитал, что это, фактически, препроцессор.
----
Вроде, как обрабатывать with - я придумал. А вот как найти имя переменной … Искать оператор присваивания? Там допустимо присваивание нескольких в одном? А если присваиване не требуется - как объявить переменную? Присвоить nil?
Если сможете, дайте какое-нить руководство по языку в формате chm (по LUA я нашёл, а по moon не искал и пока не хотелось - не мой язык!)
HaRT wrote: Thu 20 Aug, 2020 00:45 откуда проще взять ключевые слова (у меня есть кое-какие намётки)
Я, вроде, тоже нашёл: package.loaded.moonscript.compile.Block.__base, package.loaded.moonscript.compile.statement, package.loaded.moonscript.parse.literals. Впрочем, это - мои домыслы.
На самом деле полезность (ля меня) этого скрипта давно доказана и без списка переменных и ключевых слов языка. Поля таблицы и флаги far.Flags - вполне полезно!…
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

LuaComplete — завершение слов макроса на LUA

Post by HaRT »

buniak_a_h wrote: Thu 20 Aug, 2020 03:36 заложить несколько хоткеев
Я как раз об этом.
buniak_a_h wrote: Thu 20 Aug, 2020 03:36 дайте какое-нить руководство по языку в формате chm
Могу предложить только HTML: https://moonscript.org/reference/ — там весь язык на этой странице. И там же ссылка “Compiler API”, а по ней, в частности to_lua, чтобы было не нужно самому заниматься разбором кода на moon.
HaRT wrote: Thu 20 Aug, 2020 00:45 (у меня есть кое-какие намётки)
Вот тут: “What is LPeg” — по ссылке “MoonScript’s grammar” приведена полная грамматика, т.ч. и ключевые слова там неизбежно все собраны — похоже, в виде key"word".
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by John Doe »

buniak_a_h wrote: Thu 20 Aug, 2020 03:36 А вот как найти имя переменной … Искать оператор присваивания?
Транслировать текст редактора в lua (есть встроенная возможность), и далее работать уже с ним.
Luacheck например поступает именно так.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by buniak_a_h »

John Doe wrote: Thu 20 Aug, 2020 14:54 Транслировать текст редактора в lua
Вопрос: а синтаксически абсолютно неприемлемый (с дикими ошибками: например, незакрытыми блоками, скобками) скрипт транслироваться будет? Ведь скрипт предназначен для использования в процессе написания LUA-скрипта; т.е. в тот момент, когда он ещё не закончен…
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by John Doe »

С некорректным вероятно не сработает, да.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

LuaComplete — завершение слов макроса на LUA

Post by HaRT »

buniak_a_h wrote: Thu 20 Aug, 2020 16:15 синтаксически абсолютно неприемлемый (с дикими ошибками: например, незакрытыми блоками, скобками) скрипт транслироваться будет?
Не исключено, что до какой-то степени сможет разобрать. Можно же попробовать и решить, стоит ли с этим связываться, а не сразу отказываться.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by John Doe »

HaRT wrote: Thu 20 Aug, 2020 16:50 Не исключено, что до какой-то степени сможет разобрать.
Зачем гадать, смотрите сами: https://moonscript.org/compiler/
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by buniak_a_h »

Вышла новая версия (1.1.2) скрипта Lua Complete with PageControl. В ней исправлены несколько недочётов, учтены некоторые пожелания.
Список изменений:
  1. Улучшено первичное позиционирование (включая стартовую страницу)
  2. Изменён внешний вид соответственно пожеланиям HaRT:
    (а) будет гармоничнее, если внутренняя рамка будет одинарная
    (б) Хорошо бы значками показывать тип полей
  3. Добавлены кнопкосочетания для листания (там же):
    «Желательно также CtrlPgDn/CtrlPgUp — как при редактировании свойств соединения у плагина NetBox»
    В скрипт заложены три варианта хоткеев: Ctrl+Tab / Ctrl+Shift+Tab; Ctrl+PgDn / Ctrl+PgUp; Ctrl→ / Ctrl← .
  4. Реализована интеграция со скриптом Active-Help (viewtopic.php?p=145176)
    Это позволяет получать интерактивную подсказку о выбранном пункте списка. Клавиша Ctrl+F1
Кроме того, скрипт оформлен по правилам ScriptsBrowser-а.
pc_LuaCmpl.1_1_2.7z
(10.14 KiB) Downloaded 98 times
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by buniak_a_h »

Версия 1.1.3: первая попытка "подружить" moon со скриптом. Работа касалась только составления списка доступных переменных и списка ключевых слов. Поля таблиц и флаги не затронуты.
Преобразование в LUA делать не стал, т.к. составление списка переменных для LUA и так использовало эвристические алгоритмы, а работа с moon в этом плане кажется ещё проще. Чем изучать преобразование без документации методом научного тыка, мне проще было наваять нечто своё. Это - ответ на замечание:
HaRT wrote: Thu 20 Aug, 2020 00:45 чем меньше своего наколеночного тут придётся ваять, тем надёжнее
pc_LuaCmpl.1_1_3.7z
(10.68 KiB) Downloaded 95 times
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

PC_LuaCmpl - подсказки слов в формате PageControl-а

Post by buniak_a_h »

Данный скрипт сделан в помощь разработчикам скриптов со слабой памятью (ну или слишком ленивых, чтоб запоминать). Тема перенесена из другой.
Скрипт ищет имена полей таблицы слева от курсора, все флаги far.Flags, ключевые слова языка и доступные переменные. Всё найденное выводится в виде списков на 4 вкладках.


pc_LuaCmpl.1_1_4.7z
Версия 1.1.4 (Сразу!)
(11.15 KiB) Downloaded 88 times
Last edited by buniak_a_h on Sun 23 Aug, 2020 12:41, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by buniak_a_h »

Вышла версия 1.1.4 .
1. Исправлена ошибка, из-за которой ключевые слова, влияющие на определение доступности переменной (function, if и т.п.) учитывались даже в том случае, когда они были в строковом литерале.
2. Имена доступных функций и их аргументы теперь тоже стали помещаться в список доступных переменных
Версия доступна здесь
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete — завершение слов макроса на LUA

Post by buniak_a_h »

Last edited by HaRT on Sun 23 Aug, 2020 22:21, edited 1 time in total.
Reason: [spoiler]
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

LuaComplete Tabbed — завершение слов в макроса на Lua и MoonScript

Post by HaRT »

Last edited by HaRT on Sun 23 Aug, 2020 22:21, edited 1 time in total.
Reason: [spoiler]
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete Tabbed — завершение слов в макроса на Lua и MoonScript

Post by buniak_a_h »

Last edited by HaRT on Sun 23 Aug, 2020 22:20, edited 1 time in total.
Reason: [spoiler]
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

LuaComplete Tabbed — завершение слов в макроса на Lua и MoonScript

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

LuaComplete Tabbed — завершение слов в скриптах на Lua и MoonScript

Post by buniak_a_h »

Post Reply

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