簡體   English   中英

修改.emacs時emacs啟動錯誤

[英]emacs startup error when modifying .emacs

我是emacs的新手。 我正在嘗試使用本指南針對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返回:

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.d/init.el嘗試從~/.emacs~/.emacs.d/init.el文件中以該順序(僅從其中之一)加載配置。 因此,如果您具有.emacs文件,則init.el將被忽略。 這就是為什么您對init.el所做的更改不會引發任何錯誤init.el忽略了該文件,僅使用.emacs

(順便說一句。Emacs還會記住使用了哪個文件,因此當您使用Emacs內置工具自定義配置時,更改將轉到正確的文件)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM