2014-09-30 20 views
7

Jestem w trakcie organizowania mojego pliku .emacs, aby lepiej śledzić wszystkie rzeczy, które do niego dodajemy.error: package.el nie został jeszcze zainicjowany

Czyniąc tak Zabrakło mi do błędu opisanego w tytule, a nie jestem pewien dokładnie dlaczego

Oto mój plik .emacs (obciążenie komentarze są dla własnej odniesienie)

;;;; Emacs config file 

;; convenience function for loading multiple libs in a single call 
(defun load-libs (&rest libs) 
    (dolist (lib libs) 
    (load-library lib))) 

;; path to custom libraries as well as the libraries themselves 
(add-to-list 'load-path "~/.emacs.d/lisp/") 
(load-libs "convenience" "editor-behaviour") 

;; Add support for the package manager 
(require 'package) 
;; Add various package archives 
(add-to-list 'package-archives 
     '("marmalade" . "http://marmalade-repo.org/packages/") 
     '("melpa" . "http://melpa.milkbox.net/packages/")) 

;; Installs packages if they aren't already 
(package-refresh-and-install  ; from convenience.el 
'scala-mode2 'sbt-mode 'haskell-mode 'geiser 'auto-complete 'ac-geiser 'cider) 

;; Initialise packages 
(package-initialize) 

;; libs dependent on the packages being initialized go here 
(load-library "autocomplete-config") 

;; Enable Haskell indentation 
(custom-set-variables 
'(haskell-mode-hook '(turn-on-haskell-indentation))) 

Running emacs .emacs --debug-init daje mi następujący wynik:

Debugger entered--Lisp error: (error "package.el is not yet initialized!") 
    signal(error ("package.el is not yet initialized!")) 
    error("package.el is not yet initialized!") 
    package-installed-p(scala-mode2) 
    (if (package-installed-p pkg) nil (package-refresh-contents) (package-install pkg)) 
    (while --dolist-tail-- (setq pkg (car --dolist-tail--)) (if (package-installed-p pkg) $ 
    (let ((--dolist-tail-- pkgs) pkg) (while --dolist-tail-- (setq pkg (car --dolist-tail-$ 
    package-refresh-and-install(scala-mode2 sbt-mode haskell-mode geiser auto-complete ac-$ 
    eval-buffer(#<buffer *load*> nil "/Users/ElectricCoffee/.emacs" nil t) ; Reading at $ 
    load-with-code-conversion("/Users/ElectricCoffee/.emacs" "/Users/ElectricCoffee/.emacs$ 
    load("~/.emacs" t t) 
    #[0 "^H\205\262^@  \306=\203^Q^@\307^H\310Q\202;^@ \311=\204^^^@\307^H\312Q\202;^@\$ 
    command-line() 
    normal-top-level() 

co sugeruje (według mojego zrozumienia), że ma coś wspólnego z convenience.el, ale wszystko, co jest w środku to:

(defun package-refresh-and-install (&rest pkgs) 
    "Utility function to refresh package contents and install several packages at once" 
    (dolist (pkg pkgs) 
    (unless (package-installed-p pkg) 
     (package-refresh-contents) 
     (package-install pkg)))) 

Więc nie jestem do końca pewien, gdzie robię błąd tutaj ... Każda pomoc?

Odpowiedz

11

Musisz zadzwonić pod numer package-initialize, zanim zadzwonisz pod numer package-refresh-and-install.

+0

to nie jest cały punkt "inicjowania pakietu", aby zainicjować właśnie zainstalowane pakiety? –

+3

@ElectricCoffee Między innymi, 'pakiet-initialize' wypełnia listę zainstalowanych pakietów, stąd oczywiście wymagane jest wywołanie go przed' pakiet-zainstalowany-p'. – lunaryorn