3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Vim】node_modules のための Denite source を作った

Posted at

皆さんもう最新の Denite は試されましたかね? 一つ前の記事では新しくなった Denite v3 についての紹介記事を書きました。

最近の Denite 熱の高まりに応じて source の自作にハマっています。今回は、node_modules ディレクトリからパッケージを羅列する source を作ってみました。意外なことに、ググってもなかったんですよね、これ。

作ったもの

スクリーンショット 0001-06-09 14.52.19.png

:Denite node_modules でカレントディレクトリから一番近い package.json を探し、同階層にある node_modules を探索してくれます。dependenciesdevDependencies などに列挙されているパッケージには [dev] などのマークがついています。

Kind には directory:h denite-kind-directory)を指定してありますので、対応した Action はなんでも実行できるようになっています。僕は fire/rec source や grep source を起動して、さらに検索を続けたりすることが多いです。

neoclide/npm.nvim

上では「ググってもない」なんて書いたんですが、実はあるんです。

あるんですが、少しこのプラグインは実装が複雑で、導入も難しいです。

  • プラグイン独自の Kind を denite.nvim のディレクトリにコピーしないと動かない。
    • 独自 Kind にしたのはもちろん機能を足すためなのでしょうが、個人的には、Kind に機能を足すよりも、必要な Action を利用者が自分で定義して使う方がスマートだと思います。
  • 付属の Denite source では package.json 内の dependenciesdevDependencies をリストアップすることしかできなかった。
    • node_modules にはもっといろんなパッケージがあるのに!

このような不満から、車輪の再発明に至った次第です。

まとめ

今回作成した Denite source は subprocess を起動するわけでもなく、非同期処理もありません。構造が単純なので source 作りの参考にしやすいと思います。以前 source 作成について書いた記事もリンクしておきますので、是非皆さんもオリジナルの source を作ってみてください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?