Snusmumriken
Лично я просто интерфейсы не мутил, разве что скриптовал кнопки в wa для обмазки перед инстом, проверяющую баффы и юзающую поты-камни-еду-накладки-масла-яды и прочую ерунду. И маркеры, подсвечивающие не тот ковенант-кондуиты в текущем спеке, и прочую фигню чтобы не обкакиваться на пустом месте при мультиспеке. Но там нет непосредственной работы с гуями.
Денис
Упс, предыдущее сообщение грохнул, зависимости надо почистить
Денис
Приветы, подскажите, а как на луа разделить через пробел строку, НО!! например: сегодня хороший, теплый день. Куча всяких сообщений Должно выйти такое: a='сегодня' b='хороший,' c='теплый день. Куча всяких сообщений' то есть по пробелу делим только первые N слов, а остаток в какую-то переменную запихать конечно в лоб можно решить через циклы, типа первый второй N-ый шаг пропихать по переменным а все остальное пихаем в переменную какую-то, но вдруг есть покрасивее подход
Может уже не актуально, но для аналов, такскать, истории, мож кому еще пригодится function string.split(str, delimiter, mode) str = tostring(str) delimiter = tostring(delimiter) delimiter = delimiter or "%s" if mode == nil then mode = true end local t, spos = {}, 1 while string.find(str, delimiter, spos, mode) ~= nil do local startFindPos, endFindPos = str:find(delimiter, spos, mode) table.insert(t, str:sub(spos, startFindPos-1)) spos = endFindPos+1 end table.insert(t, str:sub(spos)) return t end
Денис
Еще, как раз, когда мы тут обсуждали фабрики итераторов, тренировался и написал фабрику такого рода function string.fields(str, delimiter, mode) str = tostring(str) if mode == nil then mode = true end delimiter = delimiter or ({[true]=" ",[false]="%s"})[(mode == true)] local t, spos = {}, 1 while string.find(str, delimiter, spos, mode) ~= nil do local startFindPos, endFindPos = str:find(delimiter, spos, mode) table.insert(t, str:sub(spos, startFindPos-1)) spos = endFindPos+1 end table.insert(t, str:sub(spos)) return next, t end — Example: for block, field in ("The quick brown fox jumps over the lazy dog"):fields() do print("Block index:", block, "Field:", field) end
Денис
Но это плохой вариант фабрики, надо все-таки статически хранить таблицу, а не пересоздавать
Денис
Хотя, чойта он плохой? Там таблица возвращается же!
Денис
Месяц не покодил фабрики и уже сам забывать начинаю, даже на код глядя 😃
Ruslan
Благодарю того админа, который в закрепе разместил полезные ссылки, а в частности "Learn Lua in 15 Minutes"
Snusmumriken
Ну оно вполне заходит как "краткий справочник" по базе. Но от чтения книжки Роберто не защищает.
Ruslan
в чем вы пишете на lua? саблайм текст с плагином или вскод или какойнибудь настроенный Scite? или может ZeroBrane Studio?
Vyacheslav
emacs
Aydar
в чем вы пишете на lua? саблайм текст с плагином или вскод или какойнибудь настроенный Scite? или может ZeroBrane Studio?
Если это вопрос что взять то наверное ZeroBrane Studio (он вроде как заточен под lua) но я использую nvim (так как мне нужна только подсветка синтаксиса)
Ruslan
все кто написал *vim, emacs вы линуксоиды? я под винду если что спрашиваю уже скачал ZeroBrane Studio размер в 7мб удивил
Vyacheslav
ну не под виндой же страдать
В разное время: vim, emacs, vscode Да, Linux
Ruslan
из заточенных под lua - только ZeroBrane Studio или есть на базе Scite(Scintilla) ?
TextAdept есть на Scintilla.
Snusmumriken
notepad++ Восемь лет, полёт нормальный.
TextAdept есть на Scintilla.
Ещё Lite, Howl из скриптуемых на Lua.
Oleg
notepad++ Восемь лет, полёт нормальный.
Как отлаживаешься? И как же линукс?
Snusmumriken
Для линукса пишу в notepad++, потому что wls )) Отладка — логи.
Snusmumriken
Что ужасного в логах?
Oleg
Я шучу. Сам так делаю как с С++ перешел на скриптовые языки.
Snusmumriken
Я в основном пишу стрёмные процессы вроде "куча циклов в циклах в ивентах в циклах в обработке циклов". Там проблематично делать точки останова чтобы посмотреть стейт. Эффективнее прогонять запросы и логи читать.
Ruslan
TextAdept есть на Scintilla.
https://orbitalquark.github.io/scintillua/ оно?
https://orbitalquark.github.io/scintillua/ оно?
https://orbitalquark.github.io/textadept/
Ruslan
https://orbitalquark.github.io/textadept/
действиельно, похоже что он просто я по быстрому глянул about, не увидел упоминания и решил что это чтото иное
Александр
lite - https://github.com/rxi/lite
Ruslan
lite - https://github.com/rxi/lite
его скачал, как понял там всё через комманд промт, ок а где run? как запустить скрипт и увидеть выхлоп в консоль от print
Александр
его скачал, как понял там всё через комманд промт, ок а где run? как запустить скрипт и увидеть выхлоп в консоль от print
можешь скачать расширения или даже ответвления, хотя я больше напомнить о нём. А я запускаю либо из консоли, либо из ZBS, т.к. для луа к сожалению нет полноценных сред разработки за рамками суперблокнотов
Aydar
из заточенных под lua - только ZeroBrane Studio или есть на базе Scite(Scintilla) ?
На Scintilla редакторы есть но не сказать что они прямо заточены для Lua, Geany например, там точно run можно настроить
Igor
а, ну под хедлесс линем ещё использую nano редко, когда нужно править какие-то небольшие приколы
Igor
но чаще просто разворачиваю на том же самом хедлесс лине vscode-server и подключаюсь к нему со своего компа
Ruslan
ZBS подскажите какой хоткей для автокомплита? (ctrl+space не воракет) а гугл подсовывает мне как свой добавить кастомный я хочу к примеру ввести f и увидеть всё что начинается на f
R
IDEA. Но не по любви, конечно, просто мне приходится писать сразу на десятке языков.
Aydar
ZBS подскажите какой хоткей для автокомплита? (ctrl+space не воракет) а гугл подсовывает мне как свой добавить кастомный я хочу к примеру ввести f и увидеть всё что начинается на f
Хоткея не нашел но если верить гуглу автокомплит должен срабатывать если введено 2 символа https://studio.zerobrane.com/doc-general-preferences Раздел "Auto-complete and tooltip"
Aydar
я какраз там и сижу поставил acandtip.startat = 1 но всеравно с 2 мне именно хоткей нужен, пока ищу как
Если из меню заходить то Edit | Preferences | Settings: User после изменения перезапустить
Aydar
10 раз уже перезапущено
https://studio.zerobrane.com/doc-editor-keyboard-shortcuts вот хоткеи но автокомплита не вижу
Ruslan
нашел local map = { [ID.AUTOCOMPLETE] = "Ctrl-Space", } for id, key in pairs(map) do keymap[id] = key end вот тут \cfg\eclipse-keys.lua
Ruslan
ZBS. так и задумано?
Aydar
ZBS. так и задумано?
Не знаю, а что это? Может просто пробелы отображает? Похоже на фичу, поищи где отключить
Ruslan
* желтое - это я подсветил, чтобы было ясно о чем спрашиваю
Snusmumriken
Александр
ZBS подскажите какой хоткей для автокомплита? (ctrl+space не воракет) а гугл подсовывает мне как свой добавить кастомный я хочу к примеру ввести f и увидеть всё что начинается на f
от двух символов выскакивает список, когда получаешь/выбираешь нужное - ввод, по крайней мере у меня так по умолчанию было
Ruslan
от двух символов выскакивает список, когда получаешь/выбираешь нужное - ввод, по крайней мере у меня так по умолчанию было
когда список тухнет то его не вызвать по умолчанию (т.к. не задан хоткей) только стирать букву и опять набирать с хоткеем разобрался, а с лимитом в 2 буквы - нет
Александр
если не ошибаюсь after нужно перегрузить.
Ruslan
короче разобрался поставил acandtip.startat = 99 все отлично работает в паре с хоткеем если просто вводить то срабатывает со второго символа если ввести 1 то хоткеем нормально вызывается но к примеру на f - function не подскажет только с двух букв тогда как все остальное - ок
Ruslan
если не ошибаюсь after нужно перегрузить.
это видимо в констексте search поискав там все 2ки - не нашел нужного значит оно гдето жестко прописано за src/config.lua благодарю, буду знать где смотреть все опции
Александр
а там либо startat, либо strategy
Ruslan
а там либо startat, либо strategy
игрался я с этими параметрами startat ведет себя не так как ожидаешь я поставил 99 и вроде норм т.е. от 2 и выше (если 3-4-5 то автокомплит тухнет при определённом наборе количества букв)
Ruslan
сейчас пытаюсь найти бинд данной операции мульти-курсора для начала понять какой у нее ID дефолт shift+alt+... но не вижу ее в файле keymap
Ruslan
похоже это жестко прописано в editor.lua еще обратил внимание что при поиске по тексту - не показывает какое по счету это вхождение (1 из 3...2 из 3... 3 из 3)
Ruslan
как получить доступ к контексту editor? из луа консоли
Ruslan
если я хочу поэкспериментировать с функциями встроенными в IDE
Ruslan
например editor:SetSelection()
Aydar
например editor:SetSelection()
local ide = ide local editor = ide:GetEditor() Судя по сорцам, как-то так.
Ruslan
local ide = ide local editor = ide:GetEditor() Судя по сорцам, как-то так.
то что доктор прописал, благодарю! работает
Ruslan
Какими еще формами можно записать данное синтаксическое выражение? function Obj:test() end например: function Obj.test() end эквивалент: Obj = { test = function() end }
Александр
Какими еще формами можно записать данное синтаксическое выражение? function Obj:test() end например: function Obj.test() end эквивалент: Obj = { test = function() end }
все три не являются эквивалентами. 1, 2 - не создают таблицу, а в 1 внутри прячется переменная
Александр
касательно записи можно поиграть с представлением в духе Obj.test = function() end, что в свою очередь прямой эквивалент варианта 2
Александр
Но очевидно, что если Obj не объявлен, то и никакого test объявить нельзя
Ruslan
все три не являются эквивалентами. 1, 2 - не создают таблицу, а в 1 внутри прячется переменная
1 и 2 разные виды записей я говорю 2 и 3 эквиваленты > Но очевидно, что если Obj не объявлен очевидно я опустил эту деталь Obj = {}
Александр
Плюс запись через Obj:test сокрывает возвратную переменную
Александр
т.е. Obj:test() это`Obj.test(self)`, где self = Obj
Ruslan
т.е. Obj:test() это`Obj.test(self)`, где self = Obj
вот я и спрашивал про альтернативные записи :
Александр
Имеешь в виду какая между ними разница ?
Ruslan
нет, как можно записать function Obj:test() end другими формами