パッケージが更新されると、ロードされたelispファイルの場所が、新しいバージョンのパッケージのフォルダーに変更されます。
Yasnippetは、それがインストールされたファイルのスニペットを遅延ロードしようとします。これは、これまでに見たことのないメジャーモードでファイルを開いたときです。
これは、emascが更新された後、以前に表示されなかったメジャーモードでの読み込みに失敗することを意味します。
これを解決するための良い一般的な方法はありますか?(agが更新されると、似たような面倒な問題が発生します)。または、パッケージを読み込めなかった場合にエラーを表示するのではなく、警告を表示するだけで警告を表示するように、yasnippetで何かをアドバイスすることをお勧めしますか?
明確化:
- emacsを起動すると、yasnippetが読み込まれます。
- メジャーモードが(たとえば)makefileであるファイルをロードしません。
- パッケージマネージャーを使用して、新しいバージョンのyasnippetに更新します
- 私はメイクファイルをロードし、yasnippetはメイクファイルのスニペットをロードしようとしますが、スニペットに使用していたフォルダーが存在しないため失敗します。それだけでなく、yasnippetがインストールしたコマンドへの事前フックが失敗するため、他のすべてのコマンドも失敗します。
- 回避策:メッセージバッファーを開き、開くことができないフォルダーを見つけて実行し
mkdir ~/.blargh/folder-yasnippet-wants
ます。
明らかに、yasnippetについて少しアドバイスを書くこともできますが、もっとグローバルなソリューションを望んでいます(確かに、elispで遊んでアドバイスを得るには少し時間がかかります)。
package.el
はあなたが完璧に働きたいだけで、おそらくそれに関連する解決策を探していると思います。物事が壊れると個人的にはぐちゃぐちゃになるので、ライブラリをまったく別の場所に置くことで壊れる可能性を減らします-場合によっては、ライブラリにプレフィックスを追加してすべての名前を変更することもあります-例:lawlist-...
そのように、何もEmacsチームによって変更された関数を除いて壊れます-たとえば、既存の関数への新しい引数など。yasnippet.el
どこか他の場所にコピーし、パッケージマネージャーから削除しました。心配することはありません。