【发布时间】:2014-12-05 05:31:56
【问题描述】:
我的 .emacs 文件 (emacs 23.4.1) 包含 python 和 latex 相关代码。两者都有 eval-after-load(我希望在 emacs 启动时只执行一次的代码)和钩子。其中一个相关的部分是:
(setq py-install-directory "~/.emacs.d/python-mode.el-6.1.3")
(add-to-list 'load-path py-install-directory)
(require 'python-mode)
(defun my-eval-after-load-python()
(setq initial-frame-alist '((top . 48) (left . 45) (width . 142) (height . 57)))
(split-window-horizontally (floor (* 0.49 (window-width)))))
(eval-after-load "python-mode" '(my-eval-after-load-python))
所有钩子都可以正常工作,但 my-eval-after-load-python 不能,这会导致每次 emacs 为每个扩展名(例如:emacs file.py、emacs file. tex、emacs 文件)。我尝试将其更改为:
(eval-after-load "python-mode"
'(progn
(setq initial-frame-alist '((top . 48) (left . 45) (width . 142) (height . 57)))
(split-window-horizontally (floor (* 0.49 (window-width))))
,但它仍然不起作用。这里可能有一个初学者错误,但我找不到它。如何在第一次打开 python 脚本(emacs file.py)而不是每次打开新的缓冲区 file2.py 时拆分窗口?
【问题讨论】:
-
去掉上面所有与问题无关的代码——所有的乳胶材料和大部分的python材料。 从
emacs -Q开始,只需提供一个简单的、缩小的、最少的代码和一个完整的方法来重现问题。 -
我的疯狂猜测:您不想在加载 python 包之后但在加载第一个 python 文件之后从
my-eval-after-load-python运行这些东西。因此,您应该将my-eval-after-load-python挂钩到python-mode-hook。也许,你应该根据你是否已经调用它(通过设置一个标志并测试它)有条件地评估它。 -
我不希望每次打开带有不同 .py 文件的缓冲区时都调整窗口大小。您的第二个解决方案很好,但似乎自动加载是我正在寻找的。span>
标签: python emacs elisp eval-after-load