Aydar
Weekend
Приятно пообщаться с умными людьми (с) 😁🤷♂️
Евгений
Ребят, вот такой вопрос. Недавно приобрёл микроконтроллер со встроенным интерпретатором Lua. Всё, прошить удалось, это хорошо, но не даёт покоя один вопрос - каким-нибудь образом возможно получить подсказки при печати в текстовых редакторах / ide, хоть в том же ZeroBrain?
Евгений
У меня есть репа с исходниками прошивки и скомпиленными бинарниками. Кто-нибудь может подсказать, можно ли что-нибудь сделать для вышеуказанного? Быть может path какой-нибудь укзаать или ещё чего?
Oleg
Для луа вроде бы и так работает в ZeroBrain
Евгений
Просто, к примеру, если работаешь на питоне - там указываешь интерпретатор глобальный или интерпретатор локального окружения со всеми необходимыми библиотеками, по которым пробегается языковой сервер и генерирует тебе автокомплит.
Aqendo
Евгений
Евгений
забыл про это слово :)
Евгений
возможно такое с lua?
Aqendo
https://github.com/trixnz/vscode-lua
Наверное
Евгений
да с самим сервером-то проблем нет
Евгений
вопрос с его настройкой
Евгений
Евгений
есть вот такая структура каталогов
Евгений
я, честно говоря, даже не понимаю, в каком направлении копать
Евгений
есть, к примеру, папка lua modules, в которой лежит луашная часть проекта
Евгений
но есть же ещё и сишные либы
Евгений
для них, по-большому счёту тоже intellisense нужен
Null
Null
github/alphallc/lua-lsp
Null
НЯП (я, просто, сейчас далековато от компа) он таки цепляет методы и прочее из зареквайренных либ
Евгений
Евгений
вопросов меньше не становится :)
Евгений
вернее, они всё те же
Евгений
как настраивать?
Евгений
просто здесь куча папок, да, в одной из которых лежат папки с lua файлами, но помимо них же есть еще и сишные (в другой папке)
Евгений
и вроде как настройка lua обёртки
Евгений
Я определил местоположение сишных модулей и модулей lua.
Евгений
Знать бы, что мне в принципе надо
Евгений
Хотя, судя по-всему, луа не совсем про это :)
Евгений
Во всяком случае, в плане интеграции.
Null
как настраивать?
Никак не настраивать.
Если запустивший lua-lsp интерпретатор может зареквайрить то, что зареквайрено в текущем переданном лсп файле, то он реквайрится и оттуда подтягиваются методы и прочее
Null
Ну и да, lua не про то, чтобы знать за использующего что ему надо :)
Null
Null
ну и, вообще, так-то, никто не запрещает сделать luarocks'ом аналог virtualenv, поставив в вендор-директорию (условный аналог .venv) все зависимсти, и заодно воткнув туда "свои" сишные либы, и использовать этот "вендорный" путь (например, в переменные окружения его экспортнуть)
Null
но это занятие для любителя такого и знатока как то делается
Null
на пальцах объяснить подробнее чем я уже - трудновато
Александр
Т.е. вы можете просто распарсить из доков или кода символы и встроить в файл с тегами или раздать какому-нибудь lsp
Александр
Автоматизации достичь трудоёмко, ибо нет идеального пути, в виду того, что символы могут сокрываться в библиотеках.
Евгений
Евгений
честно - мне в нем статической типизации только не хватает
Евгений
но оно в нём, наверное и не надо
Евгений
не для того писался
Евгений
ибо для того, чтоб интегрироваться - нужно подстраиваться, а со стат. типизацией достаточно геморно должно быть
Александр
Александр
Но тут как и всегда - нужна ли стат типизация или нет решают задачи, а не условные предпочтения.
Null
Null
методы переменной
?!?
Alex
методы переменной
?!?
Да
есть такой инструмент МойОфис и в нем используется lua.
К примеру есть такой код
local tbl = document:getBlocks():getTable(0)
и мне бы хотелось узнать, какие методы доступны у tb1, как пример из документации есть метод tbl:getCellRange
Alex
Ну и в python можно написать dir(obj) и он тебе выведет что-нибудь
Александр
Александр
Плюс если это полноценная таблица, то просто пройди по ней pairs
Null
Ну и в python можно написать dir(obj) и он тебе выведет что-нибудь
для начала, стоит запомнить что разница между питоном и Lua в том, что питон пытается дать тебе как можно больше (и потому является жирным комбайном), а Lua пытается дать тебе как можно меньше (и поэтому имеет крайне лёгкий рантайм вплотть до того, что помещается в микроконтроллеры целиком, без кастрации, как это делается с питоном
Snusmumriken
Ну и в python можно написать dir(obj) и он тебе выведет что-нибудь
function list(obj)
print( tostring(obj) .. " content: {")
for k, v in pairs(obj) do
print(" " .. tostring(k) .. " " .. tostring(v))
end
print("}")
end
function list_class(obj)
local class = getmetatable(obj)
class = class and class.__index
if not class then
error("Object " .. tostring(obj) .. " have no class properties")
end
print( tostring(class) .. " content: {")
for k, v in pairs(class) do
print(" " .. tostring(k) .. " " .. tostring(v))
end
print("}")
end
Alex
Alex
Snusmumriken
Но вообще есть https://github.com/pkulchenko/serpent (сериализатор) и https://github.com/kikito/inspect.lua (красивая отладочная печать)
Null
ещё есть penlight
Null
но да, Inspect божественен в своей нативности и простоте :)
Alex
Я правильно понял, что мне ошибка говорит, что я дебил и тут нельзя ни чего обойти в цикле?
Snusmumriken
Это юзердата.
Null
Snusmumriken
Alex
Null
тебе там выше сказали сначала сделать type(tbl) чтобы понять таблица это или нет
Null
и это не таблица :)
Alex
рабочий ПК, буфер общий отлючен =(
Alex
Дёргай list_class
Извините, за настойчивость, я что-то не то переписал? Но он опять ругается
Alex
Alex
Кажется начинаю понимать, спасибо за помощь =)
Snusmumriken
Прекрасно, там ещё и функция на __index.
Кароч, нет, кажись не получится прогнать по объекту. Читай документацию, что можно а что нет.
Alex
Alex
У меня теперь проблема с io.popen, почему не хочет он работать в редакторе макросов МойОфис. При чем если запустить приложения lua , которое идет с МойОфис, то там работает. А нужно мне это, что бы файлы обходить и данные оттуда собирать в один
Igor