Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

皆さんもう最新の 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 を作ってみてください。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>