ローカルパッケージのオートロードを生成してアクティブにする方法は?


9

すべてのローカル/カスタム/個人用パッケージが正式にリリースされるべきではないことは明らかであり、組み込みのパッケージ管理サポートから利益を得るためだけにそれを行うのはばかげているでしょう。ローカルパッケージのオートロードを生成してアクティブ化する方法を知りたいですか?これはpackage.el、ELPAからインストールされたパッケージの場合と同様です。ホイールの再発明を回避するために、一部のローカルディレクトリ(それぞれがローカル/カスタム/個人用パッケージであるサブディレクトリを含む)がELPAであるように "偽装"する方法はありますか?またel-get、そのようなシナリオが、たとえばカスタムレシピを介してサポートできるかどうかについても私はオープンに思っています。

このタスクはかなり一般的であり、Emacsを上級レベルで使用する人ならだれでもその時点に到達するでしょう。誰かがこの分野での経験を共有できますか?


3
update-directory-autoloadsパッケージマネージャとは関係なく使用できます。
npostavs 2017年

@npostavs、私は知っていますが、それは再帰的ではなく、この場合の包括的なソリューションではありません。確かにそれは十分ではなく、私はそれを自分の実装にラップする必要があります。
Alexander Shukaev 2017年

1. dirs(dirとその子孫など)のリストを提供してupdate-directory-autoloads、事実上再帰的にすることができます。2.あなたが使用することができますupdate-file-autoloadsに関係なく、どのディレクトリの、興味のあるすべてのファイルのためにそれがである。
ドリュー

参考:package.el再帰的ではありません(つまり、サブディレクトリにソースを持つパッケージはサポートしていません)。
npostavs 2017年

LinuxでローカルMELPAをセットアップしました。私は窓のための良い解決策を持っていません。私は本当にemacsがこのタイプのものをそのままサポートすることを望みます。使用できるかどうかを確認するには、use-packageをチェックする価値があるかもしれません。
eflanigan00 2017年

回答:


7

正しい解決策(IMO)は、この使用例を明示的にサポートするパッケージマネージャーを使用することです。これstraight.elは、この目的のために私が書いたものです。

他のパッケージマネージャーとの比較を含む詳細なドキュメントはREADMEで読むことができるのでstraight.el、特定の問題を解決するために使用できる方法に固執します。

  1. リポジトリをに配置します~/.emacs.d/straight/repos/<my-repo>
  2. 使用してロード

    (straight-use-package '(<my-package> :local-repo "<my-repo>"))
    
  3. 完了です。ソースコードに変更を加えるたびに、オートロード生成とバイトコンパイルが(次回のEmacs起動時に)やり直されます。また、依存関係管理、オプションのバージョン管理自動化なども無料で利用できます。

  4. パッケージを公開する場合(ある場合)、パッケージをどこかにプッシュし、そのGitリポジトリーを指すようにレシピを変更します。
  5. また、必要straight.eluse-package応じてwithを使用することもできます(ほとんどの場合、これは単なる構文糖です)。

3

Linuxでは次のようにします。

melpaを複製してローカルmelpaリポジトリをセットアップしました。

ローカルパッケージを指すレシピを変更します。以下はlocal-melpa/recipies/ace-window

(ace-window
  :url "/home/my_home/.emacs.d/packages/ace-window/"
  :fetcher git)

次にlocal-meplaタイプから、make allまたはmake recipies/ace-windowパッケージをビルドするためlocal-melpa/packages

次にmake packages/archive-contents、パッケージのリストを入力します。

次に、私のローカルmelpaを使用するようemacsに指示するために、

(setq package-archives '(("local-melpa" . "~/.emacs.d/packages/local-melpa/packages/")))

makeWindowsで実行する方法がわかりません。しかしlocal-melpa、LinuxでパッケージをビルドしてそれをWindowsにコピーすると、emacsがパッケージを正しく理解してインストールできます。

これの利点は、~/.emacs.d/elpa/*ディレクトリを削除し、パッケージにカスタムアップデートをインストールすることで、いつでもリセットできることです。


おそらくケルパも興味がありますか?
npostavs 2017

私はあなたが正しいnpostavsだと思います。私は座ってそれを見なければなりません。
eflanigan00 2017

2

すでにインストールされているパッケージを別のバージョンで置き換えた場合、不足しているのはautoloadsファイルだけで、package-generate-autoloadsを使用して生成できます。

(package-generate-autoloads "async" "~/.emacs.d/elpa/async-1.9.3/")

パッケージを以前のバージョンにダウングレードする必要がある場合は、update-directory-autotoolsを使用する方が簡単だと思いました。

実は私はあなたの質問に本当に答えていません。当面はこの答えをここに残しますが、私の答えはここでより適切です:https : //stackoverflow.com/questions/26348561/how-to-generate-autoloads-for-elpa-packages/50100170

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.