修改 .emacs 时 emacs 启动错误
emacs startup error when modifying .emacs
我是 emacs 新手。我正在尝试使用 this guide 将其设置为 Python。它建议的第一步是将以下内容添加到 init.el
:
;; init.el --- Emacs configuration
;; INSTALL PACKAGES
;; --------------------------------------
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar myPackages
'(better-defaults
material-theme))
(mapc #'(lambda (package)
(unless (package-installed-p package)
(package-install package)))
myPackages)
;; BASIC CUSTOMIZATION
;; --------------------------------------
(setq inhibit-startup-message t) ;; hide the startup message
(load-theme 'material t) ;; load material theme
(global-linum-mode t) ;; enable line numbers globally
;; init.el ends here
因为我有一个 .emacs
文件,所以我尝试将它附加到该文件中。之后,我的 .emacs
看起来像:
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
("marmalade" . "http://marmalade-repo.org/packages/")
("melpa" . "http://melpa.milkbox.net/packages/")))
(package-initialize)
(when (not package-archive-contents) (package-refresh-contents))
(let ((default-directory "~/.emacs.d/elpa/"))
(normal-top-level-add-to-load-path '("."))
(normal-top-level-add-subdirs-to-load-path))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
;; init.el --- Emacs configuration
;; INSTALL PACKAGES
;; --------------------------------------
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar myPackages
'(better-defaults
material-theme))
(mapc #'(lambda (package)
(unless (package-installed-p package)
(package-install package)))
myPackages)
;; BASIC CUSTOMIZATION
;; --------------------------------------
(setq inhibit-startup-message t) ;; hide the startup message
(load-theme 'material t) ;; load material theme
(global-linum-mode t) ;; enable line numbers globally
;; init.el ends here
但是,这会引发错误:
Warning (initialization): An error occurred while loading ‘/Users/adamg/.emacs’:
File error: http://melpa.org/packages/better-defaults-20160601.1219.el, Not found
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.
运行 emacs --debug-init
returns:
Debugger entered--Lisp error: (file-error "http://melpa.org/packages/better-defaults-20160601.1219.el" "Not found")
signal(file-error ("http://melpa.org/packages/better-defaults-20160601.1219.el" "Not found"))
package-install-from-archive(#s(package-desc :name better-defaults :version (20160601 1219) :summary "Fixing weird quirks and poor defaults" :reqs nil :kind single :archive "melpa" :dir nil :extras ((:url . "https://github.com/technomancy/better-defaults") (:keywords "convenience")) :signed nil))
mapc(package-install-from-archive (#s(package-desc :name better-defaults :version (20160601 1219) :summary "Fixing weird quirks and poor defaults" :reqs nil :kind single :archive "melpa" :dir nil :extras ((:url . "https://github.com/technomancy/better-defaults") (:keywords "convenience")) :signed nil)))
package-download-transaction((#s(package-desc :name better-defaults :version (20160601 1219) :summary "Fixing weird quirks and poor defaults" :reqs nil :kind single :archive "melpa" :dir nil :extras ((:url . "https://github.com/technomancy/better-defaults") (:keywords "convenience")) :signed nil)))
package-install(better-defaults)
(if (package-installed-p package) nil (package-install package))
(lambda (package) (if (package-installed-p package) nil (package-install package)))(better-defaults)
mapc((lambda (package) (if (package-installed-p package) nil (package-install package))) (better-defaults material-theme))
eval-buffer(#<buffer *load*> nil "/Users/adamg/.emacs" nil t) ; Reading at buffer position 1437
load-with-code-conversion("/Users/adamg/.emacs" "/Users/adamg/.emacs" t t)
load("~/.emacs" t t)
#f(compiled-function () #<bytecode 0x400d3941>)()
command-line()
normal-top-level()
当我将上面的代码放在单独的 init.el
文件中时,它不会引发错误,但也不会更改启动屏幕或主题。有人可以指出我做错了什么吗?
您的包存储库内容(本地缓存)已过时,Emacs 正在尝试下载旧的、不再存在的 better
包版本。
据我所知,这部分有问题:
(when (not package-archive-contents)
(package-refresh-contents))
基本上,只有在根本没有任何信息时才从存储库中刷新包内容(所以只有一次,永远)。在我看来,它始终保持最新是很好的,即使 Emacs 启动需要多花几秒钟。
建议 - 删除包刷新条件,将这两行更改为简单:
(package-refresh-contents)
哦,简要介绍一下配置文件 - Emacs 尝试从 ~/.emacs
或 ~/.emacs.d/init.el
文件加载配置 - 按照该顺序并且仅从其中一个文件加载配置。所以如果你有 .emacs
文件,init.el
将被忽略。这就是为什么您对 init.el
的更改没有引发任何错误的原因 - Emacs 忽略了该文件并仅使用了 .emacs
.
(顺便说一句。Emacs 还会记住使用了哪个文件,因此当您使用 Emacs 内置工具自定义配置时,更改会转到正确的文件)
我是 emacs 新手。我正在尝试使用 this guide 将其设置为 Python。它建议的第一步是将以下内容添加到 init.el
:
;; init.el --- Emacs configuration
;; INSTALL PACKAGES
;; --------------------------------------
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar myPackages
'(better-defaults
material-theme))
(mapc #'(lambda (package)
(unless (package-installed-p package)
(package-install package)))
myPackages)
;; BASIC CUSTOMIZATION
;; --------------------------------------
(setq inhibit-startup-message t) ;; hide the startup message
(load-theme 'material t) ;; load material theme
(global-linum-mode t) ;; enable line numbers globally
;; init.el ends here
因为我有一个 .emacs
文件,所以我尝试将它附加到该文件中。之后,我的 .emacs
看起来像:
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
("marmalade" . "http://marmalade-repo.org/packages/")
("melpa" . "http://melpa.milkbox.net/packages/")))
(package-initialize)
(when (not package-archive-contents) (package-refresh-contents))
(let ((default-directory "~/.emacs.d/elpa/"))
(normal-top-level-add-to-load-path '("."))
(normal-top-level-add-subdirs-to-load-path))
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
;; init.el --- Emacs configuration
;; INSTALL PACKAGES
;; --------------------------------------
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar myPackages
'(better-defaults
material-theme))
(mapc #'(lambda (package)
(unless (package-installed-p package)
(package-install package)))
myPackages)
;; BASIC CUSTOMIZATION
;; --------------------------------------
(setq inhibit-startup-message t) ;; hide the startup message
(load-theme 'material t) ;; load material theme
(global-linum-mode t) ;; enable line numbers globally
;; init.el ends here
但是,这会引发错误:
Warning (initialization): An error occurred while loading ‘/Users/adamg/.emacs’:
File error: http://melpa.org/packages/better-defaults-20160601.1219.el, Not found
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.
运行 emacs --debug-init
returns:
Debugger entered--Lisp error: (file-error "http://melpa.org/packages/better-defaults-20160601.1219.el" "Not found")
signal(file-error ("http://melpa.org/packages/better-defaults-20160601.1219.el" "Not found"))
package-install-from-archive(#s(package-desc :name better-defaults :version (20160601 1219) :summary "Fixing weird quirks and poor defaults" :reqs nil :kind single :archive "melpa" :dir nil :extras ((:url . "https://github.com/technomancy/better-defaults") (:keywords "convenience")) :signed nil))
mapc(package-install-from-archive (#s(package-desc :name better-defaults :version (20160601 1219) :summary "Fixing weird quirks and poor defaults" :reqs nil :kind single :archive "melpa" :dir nil :extras ((:url . "https://github.com/technomancy/better-defaults") (:keywords "convenience")) :signed nil)))
package-download-transaction((#s(package-desc :name better-defaults :version (20160601 1219) :summary "Fixing weird quirks and poor defaults" :reqs nil :kind single :archive "melpa" :dir nil :extras ((:url . "https://github.com/technomancy/better-defaults") (:keywords "convenience")) :signed nil)))
package-install(better-defaults)
(if (package-installed-p package) nil (package-install package))
(lambda (package) (if (package-installed-p package) nil (package-install package)))(better-defaults)
mapc((lambda (package) (if (package-installed-p package) nil (package-install package))) (better-defaults material-theme))
eval-buffer(#<buffer *load*> nil "/Users/adamg/.emacs" nil t) ; Reading at buffer position 1437
load-with-code-conversion("/Users/adamg/.emacs" "/Users/adamg/.emacs" t t)
load("~/.emacs" t t)
#f(compiled-function () #<bytecode 0x400d3941>)()
command-line()
normal-top-level()
当我将上面的代码放在单独的 init.el
文件中时,它不会引发错误,但也不会更改启动屏幕或主题。有人可以指出我做错了什么吗?
您的包存储库内容(本地缓存)已过时,Emacs 正在尝试下载旧的、不再存在的 better
包版本。
据我所知,这部分有问题:
(when (not package-archive-contents)
(package-refresh-contents))
基本上,只有在根本没有任何信息时才从存储库中刷新包内容(所以只有一次,永远)。在我看来,它始终保持最新是很好的,即使 Emacs 启动需要多花几秒钟。
建议 - 删除包刷新条件,将这两行更改为简单:
(package-refresh-contents)
哦,简要介绍一下配置文件 - Emacs 尝试从 ~/.emacs
或 ~/.emacs.d/init.el
文件加载配置 - 按照该顺序并且仅从其中一个文件加载配置。所以如果你有 .emacs
文件,init.el
将被忽略。这就是为什么您对 init.el
的更改没有引发任何错误的原因 - Emacs 忽略了该文件并仅使用了 .emacs
.
(顺便说一句。Emacs 还会记住使用了哪个文件,因此当您使用 Emacs 内置工具自定义配置时,更改会转到正确的文件)