什么时候应该在配置文件中使用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窗口大小问题

这是我调整窗口大小的方法:

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

我猜我在滥用with-eval-after-load,一个人如何清理他的Emacs配置并确保无论安装了什么软件包都不会中断?


这绝对是奇怪的。(可能是错误?)
PythonNut

您知道这可能与什么有关吗?我正在使用Railwaycat的OS X端口,并且不想添加不属于此的问题:)。
Mathieu Marques 2015年

8
我试图用with-eval-after-load一次包装所有与包装相关的自定义内容。然后我看到了灯,开始使用它use-package
itsjeyd 2015年

@itsjeyd这看起来确实非常方便和方便!但是我遇到了一些麻烦:我注释掉(package-initialize)并替换为它,(require 'use-package)但是我将得到文件错误:重新启动Emacs时无法打开加载文件,没有这样的文件或目录,使用包。但是,一旦Emacs启动,我可以毫无问题地进行评估(require 'use-package)。最后,我什至试过了with-eval-after-load,还是一样的错误。使用package.el中的软件包时,自述文件不太清楚如何安装 use-package
Mathieu Marques 2015年

1
向我们展示您的.emacs,最好是精简版本,以尽可能少的线条和尽可能少的外部软件包展示该问题。这可能与启动过程中帧设置的时间与程序包的加载有关。但是没有看到您的代码,我们无能为力。还要告诉我们您正在使用哪个版本的Emacs。
吉尔斯(Gilles)'所以

Answers:


2

我用with-eval-after-load了很多东西,主要是在评估默认值后在列表中添加元素或从列表中删除元素。这样,我不必跟踪默认值的更改。

对于helm初始化问题,文档建议(require 'helm-config)在您init.el或其依赖项中存在。

我发现,仅helm-config在初始化过程中进行请求而不是依靠,这会更容易autoload,尤其是因为无论如何我几乎都会在大多数时间立即加载它。


从那时起,我已经更改为使用use-package,即使要求helm-config我仍然遇到同样的问题。这是我更新的配置设置:bitbucket.org/angrybacon/dotemacs/src
Mathieu Marques

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.