Size: a a a

2021 January 30

EG

Emmanuel Goldstein in pro.vim
anton
вот ущербное выражение целиком:
join(filter(split(GetResult("ls"), '\n'), {_, x -> matchstr(x, "Scratch") == ""}), "\n")
а на луа это как будет выглядеть?
lines = {}
for line in io.popen("ls -1"):lines() do
 if not line:match("Scratch") then
   table.insert(lines, line)
 end
end
источник

EG

Emmanuel Goldstein in pro.vim
Самый простой вариант
источник

EG

Emmanuel Goldstein in pro.vim
Vadim Misbakh-Soloviov
на встроенном в неовим - сходу так и не скажу, а на голом - как-то так (ну, тут некоторые места можно было иначе напистаь, но тем не менее)
Это голый
источник

EG

Emmanuel Goldstein in pro.vim
С неовимом есть ещё функции vim.tbl_filter и прочее счастье, но тут проще использовать стандартный Lua
источник

VM

Vadim Misbakh-Solovi... in pro.vim
Emmanuel Goldstein
lines = {}
for line in io.popen("ls -1"):lines() do
 if not line:match("Scratch") then
   table.insert(lines, line)
 end
end
у него там ещё и join обратно есть, так что table.concat ещё надо :P
источник

EG

Emmanuel Goldstein in pro.vim
Emmanuel Goldstein
lines = {}
for line in io.popen("ls -1"):lines() do
 if not line:match("Scratch") then
   table.insert(lines, line)
 end
end
Я утверждаю, что несмотря на то, что это императивный код, а исходный сниппет — «функциональный», версия на Lua читается лучше
источник

EG

Emmanuel Goldstein in pro.vim
И не требует дополнительного определения функции GetResult
источник

n

nikita in pro.vim
Паша Калугин
В конфиге алакритти есть что-то экзотическое?
Нет, только цветовая схема. да и в термите тоже самое в нвимом
источник

NG

Nicholas Guriev in pro.vim
Emmanuel Goldstein
Я утверждаю, что несмотря на то, что это императивный код, а исходный сниппет — «функциональный», версия на Lua читается лучше
тот случай, когда простое решение с циклами и ветвлениями действительно проще читается
источник

ПК

Паша Калугин... in pro.vim
anton
вот ущербное выражение целиком:
join(filter(split(GetResult("ls"), '\n'), {_, x -> matchstr(x, "Scratch") == ""}), "\n")
а на луа это как будет выглядеть?
Ну функциональный подход не очень выглядит в языках с не предназначенным для этого синтаксисом
источник

a

anton in pro.vim
Emmanuel Goldstein
lines = {}
for line in io.popen("ls -1"):lines() do
 if not line:match("Scratch") then
   table.insert(lines, line)
 end
end
а, кстати, это вимовский ls?
источник

a

anton in pro.vim
Nicholas Guriev
тот случай, когда простое решение с циклами и ветвлениями действительно проще читается
ну это вопрос привычки, я в основном на лиспе, поэтому во всех этих форах и мутациях теряюсь
источник

EG

Emmanuel Goldstein in pro.vim
anton
а, кстати, это вимовский ls?
Нет, внешний
Нужен вимовский?
источник

EG

Emmanuel Goldstein in pro.vim
У меня всё ещё нет функции GetResult
источник

EG

Emmanuel Goldstein in pro.vim
anton
а, кстати, это вимовский ls?
Вот наивный способ с вимовским
buffers = {}
for _, buf in pairs(vim.api.nvim_list_bufs()) do
 local name = vim.api.nvim_buf_get_name(buf)
 if not name:match("Scratch") then
   table.insert(buffers, name)
 end
end
print(table.concat(buffers, "\n"))
источник

EG

Emmanuel Goldstein in pro.vim
Не включает в себя дичи вроде парсинга вывода :ls, а использует нормальные API-функции
источник

a

anton in pro.vim
Emmanuel Goldstein
Вот наивный способ с вимовским
buffers = {}
for _, buf in pairs(vim.api.nvim_list_bufs()) do
 local name = vim.api.nvim_buf_get_name(buf)
 if not name:match("Scratch") then
   table.insert(buffers, name)
 end
end
print(table.concat(buffers, "\n"))
очень лаконично
источник

YS

Yaroslav Schekin in pro.vim
Emmanuel Goldstein
Вот наивный способ с вимовским
buffers = {}
for _, buf in pairs(vim.api.nvim_list_bufs()) do
 local name = vim.api.nvim_buf_get_name(buf)
 if not name:match("Scratch") then
   table.insert(buffers, name)
 end
end
print(table.concat(buffers, "\n"))
И это против, например:
let res = []
for buf in getbufinfo()
   if buf.name !~# 'Scratch'
      call add(res, buf.name)
   endif
endfor
echo join(res, "\n")

и
vim9script
var res = []
for buf in getbufinfo()
   if buf.name !~ 'Scratch'
      res->add(buf.name)
   endif
endfor
echo join(res, "\n")

Я как-то не вижу преимуществ, извините.
источник

YS

Yaroslav Schekin in pro.vim
Emmanuel Goldstein
И не требует дополнительного определения функции GetResult
Полностью "ущербное выражение" выглядит так, кстати:
join(filter(split(execute("ls"), "\n"), {_, x -> matchstr(x, "Scratch") == ""}), "\n")
источник

YS

Yaroslav Schekin in pro.vim
Vadim Misbakh-Soloviov
если шрифтовые оформления это жирное-курсив-подчёркнутое, то всё перечисленное он умеет, но с поправками на консольную псевдографику
Так я правильно понял, что "графических" (аналогичных обычным для GUI-приложений) меню, в т.ч. popup, и balloons  ни в одном терминале + neovim нет?
И что насчёт всех шрифтовых оформлений, всё же (и какой терминал нужен, чтоб были)?
источник