我已经到处搜索了这个答案,我似乎无法弄明白。我在GNU Emacs 24.3.1中使用auctex
(package.el
)安装了elpa
。我正在尝试使用Github进行版本控制,并且我将所有自定义和首选项保留在.emacs.d/init.el
中(根本不使用.emacs
)。我试图让所有软件包在多台机器之间保持同步,只要我去新机器就可以拉.emacs.d
并让一切工作正常。
我使用git add -A
提交了我的整个.emacs.d,然后提交并推送(来自OS X)。然后我将存储库拉到另一台机器(Windows 7机器)。当我加载时,我得到以下错误
Warning (initialization): An error occurred while loading `c:/Users/user/.emacs.d/init.el':
File error: Cannot open load file, c:/Users/user/.emacs.d/elpa/auctex-11.87.1/auctex-autoloads
我已尝试在init.el
(setq package-enable-at-startup nil)
(package-initialize)
(require 'auctex)
但没有任何运气。有谁知道可能导致这个问题的原因?
编辑:我刚刚意识到,当我提交给GitHub时,它并没有添加我期望的所有文件,包括不添加auctex-autoloads.el。我不确定为什么会这样,但我认为这与我如何添加要提交给GitHub的文件有关。任何帮助将不胜感激!编辑2:我尝试将选项--force
添加到git add -a --force
,现在一切正常。我还在学习git,所以我认为这是一个简单的错误。我仍然不完全确定为什么它会自动排除某些文件而不是其他文件,但我会试着弄明白。
谢谢!
答案 0 :(得分:0)
当您使用git add -A
时,Git会自动从提交中排除某些文件,但我不确定原因。我需要包含--force
选项(即git add -A --force
),然后将所有文件正确添加到存储库中。事实证明,我错过了所需的auctex-autoloads.el
。
此外,我随后添加了我自己的.gitignore,其中包含一些我不想添加到存储库的目录,似乎已经覆盖了忽略规则导致它排除自动加载文件和带扩展名的文件的情况.elc。所以,现在我只需要git add -A
将所有文件添加到存储库。
感谢大家的期待!
答案 1 :(得分:0)
您可能考虑的另一个策略是将您的initi文件保存在git中,并包含一个方法,可以在必要时自动从新机器上的elpa下载已安装的软件包。这样就无需将所有包内容保留在您的存储库中,但它确实需要每台计算机都能访问elpa站点。
我将包配置保存在单独的配置中,并加载它 从我的init文件中。
这是我用来重新加载缺少的软件包的方法:
;; emacs package manager.
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/")
'("org" . "http://orgmode.org/elpa/"))
(package-initialize)
;; Create a list of the packages currently installed. You can use the
;; contents of the directory in which they are stored (usually
;; ~/.emacs.d/elpa). Ensure you only use the package name, and not any
;; version information.
;; a good way to get a formatted list of the packages loaded is with the
;; following shell command:
;; ls ~/.emacs.d/elpa | sed -e s/-[0-9.].*//
(defvar cm/packages nil
"A list of elpa packages that should be available on startup")
(setq cm/packages
'(
auto-complete
bm
browse-url-dwim
bs-ext
color-moccur
color-theme-sanityinc-solarized
csv-mode
dash
deferred
diminish
dired-hacks-utils
elisp-slime-nav
epl
esh-help
git-commit-mode
git-gutter+
git-rebase-mode
git-timemachine
hc-zenburn-theme
highlight-symbol
hl-sexp
ht
htmlize
igrep
js2-mode
list-utils
magit
markdown-mode
names
org
ox-pandoc
pandoc-mode
paredit
popup
projectile
request
request-deferred
s
smartparens
sqlplus
starter-kit-eshell
string-utils
w3m
windata
))
;; cycle through the package list and prompt to install any missing from
;; the list
(defvar missing-pkgs '())
(defun cm-package-refresh ()
(interactive)
(setf missing-pkgs nil)
(dolist (pkg cm/packages)
(if (not (package-installed-p pkg))
(progn
(add-to-list 'missing-pkgs pkg)
(setq cm-message "Done"))
(setq cm-message "Nothing missing")))
;; for any missing packages, ask to load them all
(if (and (> (length missing-pkgs) 0)
(y-or-n-p-with-timeout
(format "%s %s " "install missing packages:" missing-pkgs) 4 nil))
(dolist (mpkg missing-pkgs)
(package-install mpkg)))
(message "%s" cm-message))
;; now check for missing packages
(if (y-or-n-p-with-timeout "Check packages? " 4 nil)
(cm-package-refresh))
(provide 'emacs-package)