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
Wsevolod
Ruslan
все кто написал *vim, emacs
вы линуксоиды?
я под винду если что спрашиваю
уже скачал ZeroBrane Studio
размер в 7мб удивил
Vyacheslav
ну не под виндой же страдать
ㅤ
В разное время: vim, emacs, vscode
Да, Linux
Aydar
Ruslan
из заточенных под lua - только ZeroBrane Studio или есть на базе Scite(Scintilla) ?
ㅤ
TextAdept есть на Scintilla.
Snusmumriken
notepad++
Восемь лет, полёт нормальный.
Oleg
Snusmumriken
Для линукса пишу в notepad++, потому что wls ))
Отладка — логи.
Oleg
Snusmumriken
Что ужасного в логах?
Oleg
Я шучу. Сам так делаю как с С++ перешел на скриптовые языки.
Snusmumriken
Я в основном пишу стрёмные процессы вроде "куча циклов в циклах в ивентах в циклах в обработке циклов".
Там проблематично делать точки останова чтобы посмотреть стейт. Эффективнее прогонять запросы и логи читать.
ㅤ
Александр
lite - https://github.com/rxi/lite
Ruslan
Igor
Igor
а, ну под хедлесс линем ещё использую nano редко, когда нужно править какие-то небольшие приколы
Igor
но чаще просто разворачиваю на том же самом хедлесс лине vscode-server и подключаюсь к нему со своего компа
Ruslan
ZBS
подскажите какой хоткей для автокомплита? (ctrl+space не воракет)
а гугл подсовывает мне как свой добавить кастомный
я хочу к примеру ввести f и увидеть всё что начинается на f
R
IDEA. Но не по любви, конечно, просто мне приходится писать сразу на десятке языков.
Aydar
Ruslan
Aydar
Ruslan
Aydar
10 раз уже перезапущено
https://studio.zerobrane.com/doc-editor-keyboard-shortcuts вот хоткеи но автокомплита не вижу
Ruslan
Ruslan
нашел
local map = {
[ID.AUTOCOMPLETE] = "Ctrl-Space",
}
for id, key in pairs(map) do keymap[id] = key end
вот тут \cfg\eclipse-keys.lua
Ruslan
Aydar
Не знаю, а что это? Может просто пробелы отображает? Похоже на фичу, поищи где отключить
Ruslan
Ruslan
* желтое - это я подсветил, чтобы было ясно о чем спрашиваю
Snusmumriken
Александр
Александр
Александр
если не ошибаюсь 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()
Ruslan
Ruslan
Какими еще формами можно записать данное синтаксическое выражение?
function Obj:test()
end
например:
function Obj.test()
end
эквивалент:
Obj = {
test = function()
end
}
Александр
Александр
касательно записи можно поиграть с представлением в духе Obj.test = function() end, что в свою очередь прямой эквивалент варианта 2
Александр
Но очевидно, что если Obj не объявлен, то и никакого test объявить нельзя
Александр
Александр
Плюс запись через Obj:test сокрывает возвратную переменную
Александр
т.е. Obj:test() это`Obj.test(self)`, где self = Obj
Ruslan
Александр
Имеешь в виду какая между ними разница ?
Ruslan
нет, как можно записать
function Obj:test()
end
другими формами