Файл .emacs (emacs 23.4.1) содержит код, связанный с python и латекс. Для обоих есть eval-after-load (код, который я хочу выполнить только один раз, когда emacs инициирует) и перехватывает. Соответствующая часть его:Emacs: всегда выполняется код eval-after-load
(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))
Все крючки прекрасно работают, но мой-Eval-после нагрузки питона не делает, что вызывает кадр должен быть разделен на два окна Everytime 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), и не каждый раз, когда я открываю новый buffer file2.py?
* Избавьтесь от всего вышеприведенного кода, который специально не связан с проблемой * - весь материал латекса и большая часть материала python. Просто укажите один, простой, суженный, минимальный бит кода и полный рецепт для воспроизведения проблемы **, начиная с 'emacs -Q' **. – Drew
Мое дикое предположение: вы не хотите запускать материал из 'my-eval-after-load-python' после загрузки пакета python, но после загрузки первого файла python. Поэтому вы должны перевести 'my-eval-after-load-python' в' python-mode-hook'. Возможно, вы должны это условно определить в зависимости от того, вы уже вызвали его (установив флаг и протестировав его). – Tobias
Я бы не хотел, чтобы окно менялось каждый раз, когда я открываю буфер с другим .py-файлом. Ваше второе решение в порядке, но кажется, что автозагрузка - это то, что я искал. –