emacs emacs24 dot-emacs emacs-prelude

¿Cómo guardar una lista de todos los paquetes instalados en Emacs 24?



emacs24 dot-emacs (3)

Estoy usando preludio como una configuración base de Emacs. He instalado muchos paquetes del administrador de paquetes, y quiero usar mi configuración en otra máquina.

No quiero llevar los paquetes instalados y tampoco quiero crear una lista manualmente.

¿Cuál es la forma de guardar una lista de todos los paquetes instalados en prelude-package.el o en cualquier otro archivo para que cuando lleve esta configuración a mi otra máquina, se instalen allí automáticamente el primer uso?


Como se mencionó en cómo instalar automáticamente los paquetes de emacs al especificar una lista de nombres de paquetes? , sería mejor también registrar la versión del paquete que necesita. Para hacerlo, puede usar la siguiente función:

(defun list-packages-and-versions () "Returns a list of all installed packages and their versions" (mapcar (lambda (pkg) `(,pkg ,(package-desc-version (cadr (assq pkg package-alist))))) package-activated-list))

Eso le dará una lista de pares (NAME VERSION) . Lamentablemente, no he podido encontrar una forma de instalar una versión específica de un paquete. Parece que package.el siempre toma el último disponible. Lo que estoy haciendo ahora es:

(defun install-packages-with-specific-versions (package-version-list) "Install the packages in the given list with specific versions. PACKAGE-VERSION-LIST should be a list of (NAME VERSION) lists, where NAME is a symbol identifying the package and VERSION is the minimum version to install." (package-download-transaction (package-compute-transaction () package-version-list)))

He escrito una función más larga para instalar paquetes que coinciden con el número de versión exacto, pero falla porque package.el de forma predeterminada solo recupera las últimas versiones disponibles para cada paquete. gist


La metodología canónica es la mejor (descrita por ataylor). Aquí hay un método más torpe.

Mx list-packages . Cs instalado hasta que encuentre la primera fila del paquete instalado. Comience a seleccionar con C-SPC . Baje hasta llegar a los paquetes integrados. Copia con Mw . Cx b para nuevo buffer. Pegar con Cy . Cx Cs para guardar el archivo.

La única ventaja que veo es que es un poco más descriptiva. Mostrando una pequeña descripción de tus paquetes. útil cuando instala algunos paquetes y se olvida de eso.


Puede obtener una lista de los paquetes instalados actualmente (excluyendo los paquetes integrados) de la variable package-activated-list . Para instalarlos automáticamente al inicio, consulte esta pregunta: ¿cómo instalar automáticamente los paquetes de emacs especificando una lista de nombres de paquetes?

Más específicamente, si lo hace Ch v package-activated-list , copie el valor que se muestra e insértelo como el valor de prelude-packages , emacs se asegurará automáticamente de que esos paquetes estén instalados en el inicio.