LoginSignup
2
0

More than 1 year has passed since last update.

packer.nvimのUndefined global `use`への対応

Posted at

はじめに

2ヶ月ほど前、以下の記事を読んでVimに興味を持ちました。

私の中でのそれまでのVimのイメージは、「大学の講義で使ったことがある(しかし定着しなかった)Emacsのライバル」であり「新人研修で遭遇した閉じれなくなった過去があるエディタ」でしたが、上記の記事を読んで、それまで使っていたVSCodeからすぐに乗り換えることは難しそうだけど「慣れると早そうだな」と感じたことを覚えています。

その後、@yutkatさんの書かれた以下の記事を読み、VSCodeでVim(Neovim)を使えるVSCode Neovimを知りおよそ1ヶ月使用した後に、最近では徐々にNeovim自体へのエディタの移行を進めています。

packer.nvimについて

Neovimのプラグインマネージャについて、Vim scriptよりLuaで設定を書いてみたかったこともあり、私はpacker.nvimを使っています。packerはコマンドでのプラグイン管理を始め、Neovim標準のプラグイン管理機能に対して様々な追加機能を提供してくれます。以下の記事を参考にさせていただき、導入に至りました。

Undefined global `use`について

packerではpacker.startupで受け取った関数内でuse関数を使うことでプラグインを読み込みます。その際に私の環境では以下のようなWarningが頻発していました。

image.png

プラグインのロード自体に問題はなかったのですが、あまり気持ちのいいものではないですよね。

対処

調べてみたところ、以下のIssueを見つけました。

上記によれば、

  • この事象packer.startupに渡された関数内で使用されたuse関数をlspが認識できず発生しており、以下のいずれかによって解消できる。
    1. lspのグローバルにuseを追加する
    2. packer.startupに渡す関数がuseを受け取るようにする(推奨🌟)

とのことです。

実際に、下記のようにpacker.startupに渡す関数にuseを渡すことで、このWarningは解消することができました。

packer.startup(function(use)
  use 'XXX/YYY'
end)

おわりに

2021/3/4にCloseされた上記のIssue以降に、packerのリポジトリのREADMEには以下のような記述が追加されています。

Note that if you get linter complaints about use being an undefined global, these errors are spurious - packer injects use into the scope of the function passed to startup. If these errors bother you, the easiest fix is to simply specify use as an argument to the function you pass to startup.

よって、現在は公式に解決済みの問題となりますが、参考にする情報の更新時期やlspとの組み合わせによっては、同様の問題が発生し得ると思い記載しました。まだまだ初心者ですが、少しずつVimスキルも向上させていきたいです💪

2
0
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
2
0