Кто-нибудь пользуется сабжем? Я имею ввиду версию от technomancy, которая самая популярная. Наткнулся на проблему в нем, не пойму - то ли я делаю что то не правильно, то ли там где то баг. Сам кит ставится как обычный пакет через package.el. Там есть вот такой код -
;;;###autoload
(progn
;; Turn off mouse interface early in startup to avoid momentary display
(dolist (mode '(menu-bar-mode tool-bar-mode scroll-bar-mode))
(when (fboundp mode) (funcall mode -1)))
(mapc 'require '(uniquify starter-kit-defuns starter-kit-misc))
;; You can keep system- or user-specific customizations here
(setq esk-system-config (concat user-emacs-directory system-name ".el")
esk-user-config (concat user-emacs-directory user-login-name ".el")
esk-user-dir (concat user-emacs-directory user-login-name))
(add-to-list 'load-path esk-user-dir)
(setq smex-save-file (concat user-emacs-directory ".smex-items"))
(smex-initialize)
(global-set-key (kbd "M-x") 'smex)
(when (file-exists-p esk-system-config) (load esk-system-config))
(when (file-exists-p esk-user-config) (load esk-user-config))
(when (file-exists-p esk-user-dir)
(mapc 'load (directory-files esk-user-dir nil "^[^#].*el$"))))
(provide 'starter-kit)
Самое интересное - вторая половина. Он загружает файл .emacs.d/username.el и файлы из директории .emacs.d/username/ Проблема в том, что он загружает эти файлы не после того, как загрузятся все установленные пакеты, а в середине загрузки. Соответственно я не могу в конфиге использовать функции из пакетов, которые еще не загрузились. Залез на гитхаб, там код отличается от того, что в пакете -
;;;###autoload
(progn
;; Turn off mouse interface early in startup to avoid momentary display
(dolist (mode '(menu-bar-mode tool-bar-mode scroll-bar-mode))
(when (fboundp mode) (funcall mode -1)))
(mapc 'require '(uniquify starter-kit-defuns starter-kit-misc))
;; You can keep system- or user-specific customizations here
(setq esk-system-config (concat user-emacs-directory system-name ".el")
esk-user-config (concat user-emacs-directory user-login-name ".el")
esk-user-dir (concat user-emacs-directory user-login-name))
(setq smex-save-file (concat user-emacs-directory ".smex-items"))
(smex-initialize)
(global-set-key (kbd "M-x") 'smex)
(defun esk-eval-after-init (form)
"Add `(lambda () FORM)' to `after-init-hook'.
If Emacs has already finished initialization, also eval FORM immediately."
(let ((func (list 'lambda nil form)))
(add-hook 'after-init-hook func)
(when after-init-time
(eval form))))
(esk-eval-after-init
'(progn
(when (file-exists-p esk-system-config) (load esk-system-config))
(when (file-exists-p esk-user-config) (load esk-user-config))
(when (file-exists-p esk-user-dir)
(mapc 'load (directory-files esk-user-dir t "^[^#].*el$"))))))
(provide 'starter-kit)
;;; starter-kit.el ends here