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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 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_10.7z
Версия 1.1.10
(13.89 KiB) Downloaded 41 times
Last edited by buniak_a_h on Wed 16 Sep, 2020 20:43, edited 12 times in total.
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

Latest post of the previous page:

buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

Вышла версия 1.1.5. Подробности здесь
User avatar
HaRT
Moderator
Posts: 9936
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 141 times
Been thanked: 280 times

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

Post by HaRT »

buniak_a_h wrote: Thu 06 Aug, 2020 20:14 - (, . (точка) — как Enter, но к слову приписывается скобка или точка;
Предлагаю, чтобы так происходило при вводе любого пробельного или пунктуационного символа — это позволит не нажимать Enter в подавляющем большинстве случаев.
buniak_a_h wrote: Thu 06 Aug, 2020 20:14Если выбранное поле — имя функции, а выбор произведён не с точкой / скобкой, то после имени функции дописываются скобки (), и курсор позиционируется между ними.
А вот это сомнительная функциональность. Функции в Луа являются «объектами первого класса», и их нередко надо передавать в качестве параметра, не вызывая. А тут получается, что при дополнении имени ф-ии сразу подставляется вызов. Предлагаю, чтобы вторая скобка дописывалась как раз только при выборе посредством первой.
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Tue 25 Aug, 2020 11:22
buniak_a_h wrote: Thu 06 Aug, 2020 20:14 - (, . (точка) — как Enter, но к слову приписывается скобка или точка;
Предлагаю, чтобы так происходило при вводе любого пробельного или пунктуационного символа — это позволит не нажимать Enter в подавляющем большинстве случаев.
Насчёт "подавляющего большинства" - мне этих двух хватило. Но замечание принимается, т.к. фильтрация имеет смысл только для идентификаторов. Т.е. для [%w_]. Ок, сделаю.
HaRT wrote: Tue 25 Aug, 2020 11:22
buniak_a_h wrote: Thu 06 Aug, 2020 20:14Если выбранное поле — имя функции, а выбор произведён не с точкой / скобкой, то после имени функции дописываются скобки (), и курсор позиционируется между ними.
А вот это сомнительная функциональность. Функции в Луа являются «объектами первого класса», и их нередко надо передавать в качестве параметра, не вызывая. А тут получается, что при дополнении имени ф-ии сразу подставляется вызов. Предлагаю, чтобы вторая скобка дописывалась как раз только при выборе посредством первой.
Да, я уже наткнулся на это неудобство. Исправлю, не вопрос.
User avatar
HaRT
Moderator
Posts: 9936
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 141 times
Been thanked: 280 times

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

Post by HaRT »

buniak_a_h wrote: Tue 25 Aug, 2020 11:41 Ок, сделаю. […] Исправлю, не вопрос.
Спасибо. И аналогично, если дополнение вызвано по открывающей квадратной или фигурной скобке, предлагаю вставлять закрывающую и ставить каретку на неё.
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

Вышла версия 1.1.6 . Учтены пожелания HaRT
Last edited by buniak_a_h on Fri 28 Aug, 2020 13:57, edited 2 times in total.
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

Версия 1.1.7
Реализована визуализация фильтра. Увы, штатных средств для одинарной рамки листбокса нету, пришлось вручную симулировать.
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

Вышла версия 1.1.8.
Что нового:
1. Если ВСЕ строки скрыты (отфильтрованы по соответствию началу слова), то они
изначально показываются серыми.
2. Исправлена потенциальная ошибка (пока не проявлялся). Ошибка заключалась в том,
что страница создавалась только при наличии хотя бы одной строки в списке,
а анализ того, какая страница открыта (например, при выборе слова по Enter),
происходил в абсолютных номерах
3. Для списка доступных переменных реализован переход на строку, в которой
переменная была объявлена (горячая клавиша Alt+G).
4. Т.к. у меня стало особенно актуальным сразу открывать список доступных переменных,
для этого случая добавлен хоткей: CtrlAlt/ .
5. Исправлена ошибка поиска доступных переменных в случае, когда курсор стоит
внутри списка параметров функции.
6. Рефакторинг
Last edited by buniak_a_h on Tue 01 Sep, 2020 00:04, edited 2 times in total.
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Wed 19 Aug, 2020 20:06 И ещё вопрос: будет ли скрипт работать в .moon-файлах? Если пока нет, то примите пожелание, чтобы научился.
1. В некоторой степени уже умеет
2. Сейчас доделаю включение в список переменных формальных параметров процедуры (пока- случай, когда они все помещаются в одну строку). Это будет версия 1.1.9
3. Хотелось бы какой-нить навороченный moon-скрипт. А то у меня их вообще только 3, и самый сложный - hexed.moon. Если есть и если есть время - (а) пришлите, пож.; (б) попробуйте. Особо - список видимых переменных.
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

Для moonописцев:
Вышла версия 1.1.9.
Для moon-файлов в список переменных теперь входят аргументы функции (если они записаны в одну строчку)
Если есть среди читателей moonописцы, к Вам просьба прислать (можно бы в личку) сложный (разнообразный по форме записи) скрипт на moonscript-е
Под «разнообразным» я понимаю различные варианты записи операторов (например, со словом local и без, объявление нескольких переменных в одном присваивании/операторе local; список аргументов в одну/несколько строк и т.п.).
User avatar
HaRT
Moderator
Posts: 9936
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 141 times
Been thanked: 280 times

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

Post by HaRT »

buniak_a_h wrote: Tue 01 Sep, 2020 22:52 у меня их вообще только 3, и самый сложный - hexed.moon
Есть ещё LuaEditorSettingsCore — он подлиннЕе (но не знаю, насколько разнообразнее).
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

HaRT, спасибо. Короткое тестирование на этом файле очень неплохо показалось. На удивление. Даже параметр с дефолтным значением (mms=false,spaces=true) скрипт обработал правильно, хотя я про такое не знал и не предусматривал …
buniak_a_h
Posts: 3205
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 169 times
Been thanked: 468 times
Contact:

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

Post by buniak_a_h »

Вышла версия 1.1.10. Кроме самого скрипта исправлены мелкие и глупые ошибки в приложенных модулях.
────────────────────────────────────────────────
1. Исправлена ошибка чтения списка ключевых слов для moonscript-а
2. Несколько мелких ошибок в приложенных модулях
Post Reply

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