(Extra) for Nvim 0.10
突然ですがニュースです。
ニュースとは言うものの最新ではないです❗最先端からは遅れてます😅
Notable changes in Nvim 0.10 from 0.9 *news*
For changes in Nvim 0.9, see |news-0.9|.
Type |gO| to see the table of contents.
Added Features
これちょっと面白いやつ。
ADDED FEATURES *news-added*
The following new APIs or features were added.
以下の新しいAPIや機能が追加されました。
• vim.iter() provides a generic iterator interface for tables and Lua
iterators luaref-in.
テーブルとLuaのための汎用イテレータインターフェースを提供する
vim.iter()
書いてあることそのままなんですが、Nvim 0.10
からはこんな書き方ができるようになります。
次項より使用しているサンプルコードは 15.11.1 Actions 節で作成したものです。
Nvim development (prerelease) build
など、v0.10.0
以降で有効です。
🔺 2023/04/30現在のStable Release
はv0.9.0
です。
createTreeActions
local function createTreeActions()
for _, cmd in pairs(command) do
table.insert(menuCommand, { name = cmd[3], handler = cmd[2] })
end
end
local function createTreeActions()
vim.iter(command):map(function(x)
table.insert(menuCommand, { handler = x[2], name = x[3] })
end)
end
誰もが「なんやこいつ😮」と思っていた_
がいなくなりました。
on_attach
function M.on_attach(bufnr)
local opts = function(desc)
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, nowait = true }
end
for _, cmd in pairs(command) do
if (string.len(cmd[1]) > 0) then
vim.keymap.set('n', cmd[1], cmd[2], opts(cmd[3]))
end
end
end
function M.on_attach(bufnr)
local opts = function(desc)
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, nowait = true }
end
vim
.iter(command)
:filter(function(x)
return string.len(x[1]) > 0
end)
:map(function(x)
vim.keymap.set('n', x[1], x[2], opts(x[3]))
end)
end
上の例はStylua
に素直に従っているのですが、
わたしはこの改行位置に、若干のクセを感じざるを得ません❗
まあ、そこはお好みで😉
Wrap Up
効率面とか速度面で見た場合に優位性があるのかどうかは、 ぶっちゃけよく知らないんですが...。