🪅

新しくなったfidget.nvim

2024/02/07に公開

はじめに

今までLSPの読み込み中に右下でくるくるするやつくらいの認識でfidget.nvimを入れていました。
ある日Githubを見てみると、いつの間にか説明がExtensible UI for Neovim notifications and LSP progress messages.となっておりLSP専用ではなくなっていました。[1]
右下に好きな通知や進捗情報を表示できるようなので試してみます。

自由に使用できるというだけで今まで通りrequire("fidget").setup{}を書いておけばLSPの情報は表示されます。

Progress

ヘルプは:h fidget.progress.handleに載っています。
使い方は、handle.create()メッセージやパーセンテージの更新finish() と簡単です。
以下の例では10秒間スピナーを眺めることができます。

local endTime = 10

function CountUp()
  local timer = vim.uv.new_timer()
  local now = 0

  local progress = require('fidget.progress').handle.create({
    title = '10 Count',
    lsp_client = { name = 'Counter' },
    message = tostring(now),
    percentage = 0
  })

  -- 1秒ごとに実行されるタイマー
  timer:start(0, 1000, function()
    progress:report({ message = tostring(now), percentage = now / endTime * 100 })
    if (endTime <= now) then
      timer:close()
      progress:finish()
    end
    now = now + 1
  end)
end

ここでは表示をいじっていませんが、スピナーやハイライト等たくさんの設定項目があります。

Notification

ヘルプは:h fidget.notificationです。

fidget.notify({msg}, {level}, {opts})

msgは表示するメッセージです。
levelは:h vim.log.levelsに載っていてINFOやERRORなどがあります。
optsはの詳細は:h fidget.notification.Optionsにあります。

nnoremap <Space>n <cmd>lua require("fidget").notify('fidget!', vim.log.levels.INFO, {})<CR>

こちらも表示はデフォルトです。:h fidget.notification.Configから細かい設定ができます。

履歴を見るには:Fidget historyというコマンドが用意されているので実行します。
(ちなみに、出力結果の画面は:h more-promptと呼ぶようです。)
自分で履歴をどうこうしたい場合、get_history()で履歴を取ることができます。

最後に、fidgetはvim.notify()互換なので通知プラグインの入れ替えも簡単です。

vim.notify = require("fidget.notification").notify

おわりに

以上、簡単な紹介でした。
控え目な通知が好みならfidgetを試してみてはいかかでしょうか。

脚注
  1. 最近書き直されたようです。https://github.com/j-hui/fidget.nvim/issues/131 ↩︎

Discussion