質問: package.el で、 MELPA に登録されているようなパッケージ(具体的には、 docker.el)を、手元にクローンしてから利用しようと考えています。理由は、適宜修正を入れながら (そして、PR を送ったりしながら) パッケージを利用したいからです。 手元にレポジトリを落としてきて、そのパスを load-path に加えた状態なのですが、 このままだと、 `require` しないと、該当機能を利用することができません。 できれば、 autoload で必要に応じて、 load するようにしたいです。 このパッケージの関数定義には、 `autoload` の magic comment が付与されているので、 どうにかすれば、このパッケージの autoload するべき関数を、 autoload の対象として登録できると思っています。 質問: * ローカルで git clone したパッケージの、`;;;###autoload` が付与された関数を、autoload の対象にするにはどうしたらいいでしょうか?
回答: `update-directory-autoloads` という関数が用意されているので、これで `*_autoloads.el` を生成します。仮に `docker.el` リポジトリを `/home/nemo/` に clone したとします。 ``` (let ((generated-autoload-file "/home/nemo/docker.el/docker_autoloads.el")) (update-directory-autoloads "/home/nemo/docker.el")) ``` 上記を実行するとリポジトリ内のファイルから `magic comment(";;;### autoloads")` を抽出して `docker_autoloads.el` に出力します。 **docker_autoloads.el** ``` ;;; docker_autoloads.el --- automatically extracted autoloads ;; ;;; Code: ;;;### (autoloads nil "docker" "docker.el" t) ;;; Generated autoloads from docker.el : (provide 'docker_autoloads) : ``` もっとも、最終的にはこの `docker_autoloads.el` を load する必要はありますが。 ``` (require 'docker_autoloads) ```