Closed1

vim.ui.selectを同期実行にする方法を調べる

ippachiippachi

vim.ui.selectの組み込みは同期実行だが、ドキュメント上非同期実行を許している。実際dressing.nvimは非同期実行されるみたい

ユーザーの選択を待ってほしいため待つ方法を探す

そもそもdressing.vimはどうやって非同期実行を実現しているのか
vim.scheduleを使っていそう

vim.schedule調べる

:h vim.schedule

vim.schedule({fn})                                            *vim.schedule()*
    Schedules {fn} to be invoked soon by the main event-loop. Useful to avoid
    |textlock| or other temporary restrictions.

    Parameters: ~
      • {fn}  (`function`)

次のイベントループに積まれそう

実験

vim.print("1")
vim.schedule(function() vim.print("scheduled") end)
vim.print("2")

-- 1, 2, scheduled

予想通り
ついでに vim.schedule_wrap も実験する

vim.print("1")
vim.schedule_wrap(function() vim.print("scheduled") end)()
vim.print("2")

-- 1, 2, scheduled

こちらも予想通り

結論

vim.scheduleを待つような機能は提供されていなさそう。無理やりするのも筋が悪いので大人しく非同期に対応する

このスクラップは2024/02/05にクローズされました