構成ファイルでwith-eval-after-loadを使用する必要があるのはいつですか?


15

構成ファイルを調べて、いくつかのクリーンアップを行いたいと思いました。

私の理解でwith-eval-after-loadは、関連するパッケージがロードされた直後にその本体が評価されるということでした。構成ファイルをクリーンアップしてさらに分割しながら、すべてのパッケージ構成をで囲みたかったのwith-eval-after-loadです。helmとの構成を囲むまで、すべてが期待どおりに進みましたhelm-projectile

ここに私が念頭に置いていたものがあります(lisp / init-helm.el):

(with-eval-after-load 'helm
  (setq helm-mode-line-string "")
  (add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
  (define-key global-map (kbd "C-c m") 'helm-imenu)
  (define-key global-map (kbd "C-x b") 'helm-buffers-list))

(with-eval-after-load 'helm-command
  (global-set-key (kbd "M-x") 'helm-M-x))

(with-eval-after-load 'helm-projectile
  (helm-projectile-on))

Emacsを再起動すると、次のウィンドウサイズの問題が発生します。

emacs-window-size-issue

これは私のウィンドウのサイズを変更する方法です:

(set-frame-parameter nil 'fullscreen 'fullboth)

私は誤用しているwith-eval-after-loadと思いますが、どのパッケージがインストールされていても、Emacsの設定をどのようにサニタイズし、何も壊れないようにするにはどうすればいいですか?


これは全く奇妙です。(おそらくバグ?)
PythonNut

これが何に関連しているのか考えていますか?RailwaycatのOS Xポートを使用していますが、これが属していない問題を追加したくありません。
マチューマルケス

8
with-eval-after-loadパッケージ関連のカスタマイズをすべて一度ラップするために使用しようとしました。それから私は光見て、use-package代わりに使い始めました。
itsjeyd

@itsjeydこれは本当にとても便利で便利に見えます!しかし、私はいくつかのトラブルに遭遇しました:コメントアウトし(package-initialize)て置き換えましたが(require 'use-package)ファイルエラーが発生します: Emacsを再起動するときにロードファイルを開くことができません、そのようなファイルまたはディレクトリはありません、use-package。それでも、Emacsが起動したら(require 'use-package)、問題なく評価できます。最後にwith-eval-after-load、まだ同じエラーを試しました。READMEは、package.elのパッケージを使用する use-package場合のインストール方法についてあまり明確ではありません。
マチューマルケス

1
.emacsできれば、できるだけ少ない行数とできるだけ少ない外部パッケージで問題を実証する必要最低限​​のバージョンをお見せください。これはおそらく、起動時のフレームセットアップとパッケージロードのタイミングに関係しています。しかし、あなたのコードを見ずに、私たちにできることはあまりありません。また、使用しているEmacsのバージョンを教えてください。
ジル「SO-悪であるのをやめる」

回答:


2

with-eval-after-loadデフォルト値が評価された後、リストに要素を追加したりリストから要素を削除したりするために、主に使用しています。そうすれば、デフォルト値の変更を追跡する必要がなくなります。

helm初期化の問題については、ドキュメントでは、依存関係に(require 'helm-config)存在することが推奨されていますinit.el

特にとにかくほとんどの場合、ほとんどすぐにロードするため、helm-config初期化中に依存するよりも、単に要求する方が簡単であることがわかりましautoloadた。


それ以来、を使用するように変更しましたが、use-package必要な場合でもhelm-config同じ問題が発生します。ここに私の更新設定の設定は次のとおりです。bitbucket.org/angrybacon/dotemacs/src
マチューマルケス

1

それはhelm初期化とは何の関係もなかった(またはほとんどない)ことが判明しました。

Emacsの起動時間を最適化するという永遠の探求の中で、設定の最初の段階でインターフェイス関連のものをすべて移動しました。これには、私が使用する疑似フルスクリーンが含まれます。

重いLispのいずれかがロードされる前に対応する行を配置すると、問題が修正されました。

参考のために私の設定を次に示します

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