🔰

初めてのNeovim Plugin開発

2023/11/08に公開

はじめに

今回作ったPluginは以下になります
https://github.com/suba327777/yank-diag.nvim
初めてNeovimのPluginを開発したのですが、なかなか面白かったです😉

開発したきっかけ

エラーや警告のメッセージをyankできたら調べる際の手間が省けると思ったから
-> 今までは内容を直接入力、もしくはマウスでコピーしていた(手間)

開発するまでの流れ

Luaの学習

Luaを触ったことがなかったので、こちらで1から学びました
https://zenn.dev/slin/articles/2020-10-19-neovim-lua1

ハンズオン

一連の開発を体験することでイメージがつくと思ったので、以下の動画でハンズオンを行いました
https://youtu.be/6ch28A_YICQ

runtimepathmodule周りが勉強になりました


https://zenn.dev/link/comments/a8e384267046e5

実装

本Pluginを実装するにあたってtemplateを用いた方が良いので、以下を用いました
https://github.com/ellisonleao/nvim-plugin-template

仕組み

vim.api.nvim_win_get_cursorで現在のカーソルを取得し、vim.diagnostic.getでカーソル位置の情報を取得し、レジスタに保存しています

実装については以下の二つが役立ちました
https://github.com/nvimdev/lspsaga.nvim/blob/main/lua/lspsaga/diagnostic/init.lua#L39
https://neovim.io/doc/user/diagnostic.html

挙動

こんな感じに動きます
lspsagaでshow_line_diagnosticsした後に、使用すると非常にスムーズにできる

最後に

悩みも解決できて一石二鳥です😏

Discussion