Sto testando il caricamento dei pacchetti in emacs init.el
(Emacs 24.3). Ho seguito a blog dall'autore di emacs prelude
per caricare automaticamente i pacchetti e copiato il codice nel mio init.el
come nella parte inferiore. Tuttavia, ho ricevuto un messaggio di errore circa la funzione di loop
/simbolo, che dice:emacs: la definizione della funzione del simbolo è nulla: loop
Symbol's function definition is void: loop
Qualcuno può spiegare come risolvere il codice?
Ho cercato su Internet, e sembra che loop
sia una macro in cl-lib
. La mia ipotesi è che la definizione di loop
sia mancante e ho tentato di risolvere il problema aggiungendo (require 'cl-lib)
, come mostrato nel codice, ma l'errore rimane. Esistono altre domande SO su messaggi di errore simili, ad esempio ELisp: cl-loop for "Symbol's value as variable is void", Symbol's function definition is void: declare-function. Ma i messaggi di errore sono diversi su ciò che manca e le risposte suggeriscono per lo più percorsi alternativi, come l'uso della versione più recente di emacs.
- codice -
(require 'package)
(add-to-list 'package-archives
'("melpa-stable" . "http://stable.melpa.org/packages/") t)
(package-initialize)
;;; check & load packages
(defvar prelude-packages
'(haskell-mode)
"A list of packages to ensure are installed at launch.")
;;(require 'cl-lib) ;debug
(defun prelude-packages-installed-p()
(loop for p in prelude-packages
when (not (package-installed-p p)) do (return nil)
finally (return t)))
(unless (prelude-packages-installed-p)
;; check for new packages (package versions)
(message "%s" "Emacs Prelude is now refreshing its package database...")
(package-refresh-contents)
(message "%s" " done.")
;; install the missing packages
(dolist (p prelude-packages)
(when (not (package-installed-p p))
(package-install p))))
(provide 'prelude-packages)
;;; end load packages
Ciò può aiutare: (Emacs 24.3.1): loop è un alias per 'cl-loop 'in' cl.el'. E cl-loop è una macro Lisp in 'cl-macs.el '. Fai un ciclo C-h f. – aartist