タグ付けされた質問 「autoload」

3
requireではなくautoloadをいつ使用する必要がありますか?
私が理解していることから、require個々の機能をロードすることもできますが、コードの大きなチャンク(モジュールのようなもの)をロードするために使用されます。 反対側の自動ロードでは、関数のみを登録し、ロードを実行時間まで延期します。 私は最近、排他的使用を提唱する記事を読みましたautoload。 するautoloadよりも良いrequireですか?これらのそれぞれの典型的な使用例は何ですか?

2
多くのパッケージにもかかわらず、どうすれば起動時間を改善できますか?
TL; DR膨大な量のパッケージがあるため、起動時間が遅くなります。それが事実であると思わない場合は、読み進めてください。 私のEmacsの起動時間は非常に短いです。を使用せず、ほとんどすべてのコードが遅延するように、use-package大量のフックとautoloadsを設定するだけです。現実には、それはクレイジーな混乱のように見えますが、全体が通常0.5秒未満で読み込まれます。 しかし、時間が経つにつれて、起動時間が微妙に遅くなり、不可解になっていることに気付きました。最終的には、起動時間が1秒以上になるまでになりました。私はついに十分になり、問題の根本を掘り下げました。私は最終的に私の全体のコメントアウト~/.emacsファイルを、その起動時間だったまだ ≥1秒。実際、わずか0.2数秒で削り取られ、時にはそれ以下になりました。その後、私は試しemacs -qてみましたが、起動時間は〜0.1秒でした。 Elispマニュアルのこのセクションを調べてみると、emacs -q起動時間を大幅に短縮した理由がわかりました。明らかにemacs -q、起動時にEmacsが3つのことを行うのを停止します。 初期化ファイルをロードする default.elファイルをロードする 呼ぶ package-initialize 私の全体をコメントアウトして~/.emacsもほとんど何も起こらないので、すでに初期化ファイルを除外しています。私はdefault.elファイルを使用しないので、それも除外されます。これがpackage-initializeパフォーマンスヒットの原因となっています。 なぜpackage-initializeそんなに多くのスタートアップ時間を費やしているのでしょうか?それが私が自分に尋ねた最初の質問でした。すべてをオートロードしませんか?はい、そうです。しかし、それはまさに問題です。 「ポスト」パッケージは、自動ロードファイルの読み取りとロードパスの設定で構成されることを説明するこの投稿を見つけました。これは、多くのパッケージを持っている場合、読み込むべきオートロードファイルと設定するパスが多いため、明らかにI / Oペナルティが発生します。残念ながら、これがないと、オートロードを管理するタスクはユーザーの手に落ちます。言い換えれば、package.elファイルとパスを自動ロードするためにファイルシステムをクロールさせずに、それを自分で管理する必要があり、それは退屈でエラーが発生しやすいプロセスになる可能性があります。 私はその道を進んで行きたくない。現在116個のパッケージがあり、そのうち107個はELPAからのもので、25個は依存パッケージです。この途方もない数が、私のパフォーマンスをひどく低下させているのだと確信しています。しかし、パッケージを削除したくないので、私は困惑しています。 このような状況で、雷の起動時間を取り戻すための救済策はありますか? 更新: この問題を解決するために、Stefan Monnierによるいくつかのパッチ(これらのパッチの説明はこちら)について、メーリングリストで新しいスレッドを開始しました。誰でも彼のパッチをテストしてフィードバックを送ることができます。emacs-devel 別の更新: Stefan Monnierはこの問題にもう関心がないか、私のメッセージを受け取っていないようです。私は前者を信じる傾向がありますが、それは問題ありませんが、そうであれば彼からのある種の反応に感謝します。とにかく、この問題のために彼がこれまでに作成したコードは非常にうまく機能しています。彼の最新のパッチは、ここ(Emacs 25.3用)およびここ(Emacsマスターブランチ用)にあります。彼のパッチのおかげで起動時間に良い改善が見られ、カスタマイズの機能を削除することなく可能な限り最適化されているので、起動時間に満足しています。これらのパッチがいつかEmacsメインラインに組み込まれることを望んでいましたが、私(または他の誰か)は今はStefanの代わりにトーチを取る必要があると思います。メーリングリストには、著作権の割り当てとライセンスに関するスパーが少しありました。最初はそうしなかったが、リチャード・ストールマンや他の人からのコメントのために、著作権の譲渡は当初考えていたほど制限的ではないかもしれない。さらに、著作権の譲渡に代わるものとして、作品をパブリックドメインにコミットすることも可能かもしれません。 いずれにせよ、これまでのパッチについてStefanに感謝します!これらの変更の開発を続けていただければ幸いですが、そうでない場合は大丈夫であり、いつか開発を続けることができます。また、この問題を解決するための洞察と貢献を提供してくれたすべての人に感謝します。 さらに別の更新: うわー、この機能がついに登場し、Emacs 27に搭載されるようです。StefanMonnierに感謝します!

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

1
オートロードと変数
私は関数のオートロードの機能を理解しています(そのような関数が呼び出されたとき、またはそのドキュメント文字列が取得されたときにロードするファイルを登録します)。ただし、変数やマクロと組み合わせてオートロード機能を使用する方法は明確ではありません。 2つの質問があります。 パッケージにパラメーターがあり、ユーザーが設定できる変数として実装されているが、自動ロードされない場合はどうなりますか?そのような変数はオートロードされるべきですか?そうでない場合、そのような変数は存在しないことがわかります。Lisp環境は、パッケージからオートロードされた関数が使用されるまで(通常は構成ファイルのロード後)、ユーザーが変数を設定するまで、デフォルト値を含め、それらについて何も知りません。 /彼女の設定ファイル、それは存在しない変数を設定するようなものです。変数の値が空でないリストであり、ユーザーがその値を使用pushまたはadd-to-list変更する場合、正確にはどうなりますか?デフォルト値は失われますか? マクロがオートロードされるとどうなりますか?いつマクロをオートロードする必要がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.