Soy un principiante en Emacs (lo uso desde hace aproximadamente 2 semanas y me encanta). A medida que actualizo y expando mi ~/.emacs.d/init.el
archivo, las cosas que escribo allí dependen de ciertos paquetes que instalé desde MELPA M-x package-install
, en .el
archivos que yo mismo he escrito, etc.
Mi pregunta es, ¿debería en el futuro cambiar de computadora, por ejemplo, cuál es la mejor manera de obtener sin problemas el mismo entorno exacto de Emacs en la nueva computadora que tengo ahora?
init.el
(usando git por ejemplo), este enfoque también funciona (basado enuse-package
): lunaryorn.com/posts/…~/.emacs.d
directorio, así que use el método que prefiera para sincronizarlo entre las máquinas. (por ejemplo, un repositorio de Github, o una carpeta de Dropbox, o lo que sea mejor para usted).Respuestas:
La solución correcta es usar
straight.el
un administrador de paquetes que escribí para resolver este problema. Puede encontrar más detalles sobre esto en otra respuesta a esta pregunta .Esta respuesta, que fue escrita meses antes de comenzar a trabajar
straight.el
, describió previamente una forma estrictamente inferior de lograr una solución parcial. Este enfoque se describe brevemente a continuación; Ya no lo recomiendo.Incluso si no quieres usar
straight.el
, al menos debes adoptaruse-package
. (No es que los dos sean mutuamente excluyentes; creo que la configuración más limpia proviene del uso de ambos).Comience definiendo una lista de paquetes en su archivo init:
Luego instálelos automáticamente:
Si mantiene su
init.el
archivo bajo control de versión, sincronizarlo con otra máquina hará que sus paquetes se instalen automáticamente. Por supuesto, las versiones que se instalen serán completamente diferentes y, como resultado, no se puede esperar que su configuración funcione de inmediato. Este es un defecto fundamentalpackage.el
y es una de las razones por las que este enfoque es malo. Ver de nuevostraight.el
. Tenga en cuenta también que el código descrito anteriormente separa su lista de paquetes de su configuración para esos paquetes, lo que dificulta el seguimiento de las cosas en su archivo init. Esta es otra gran desventaja. Ver de nuevouse-package
.fuente
package.el
para actualizar paquetes, tendrá cambios no escalonados en su repositorio, y tendrá que hacer un compromiso para incluir las actualizaciones de paquetes.M-x list-packages RET U
.straight.el
solo para instalar paquetes de Emacs. Nix es una gran idea, pero no está bien optimizado para el desarrollo de paquetes de Emacs, que yo sepa (corríjame si me equivoco) . Si usa un administrador de paquetes del sistema para instalar los paquetes de Emacs, no podrá editar su código fuente y luego confirmar e impulsar sus cambios en sentido ascendente. La última vez que miré una configuración de Nix para los paquetes de Emacs, parecía demasiado compleja y generalmente inferior a lastraight.el
experiencia de desarrollo. Pero, lo que sea que haga flotar tu bote.Si usa use-package , puede mover ese archivo de una computadora a otra, y cuando Emacs se inicie, siempre que tenga acceso a Internet, extraerá los paquetes y los configurará.
Primero, configure la biblioteca de paquetes:
Y luego bootstrap
use-package
:Ahora, en lugar de configurar Emacs y asumir que los paquetes están instalados, úselos
use-package
para instalarlos y configurarlos. Por ejemplo, para algunas de mis configuraciones de timón:fuente
init.el
) se transmita, pero hay mucho más. Por ejemplo, esto no portará los archivos dabbrev, ni sus fragmentos personalizados ni ninguna otra cosa.:ensure t
a lause-package
declaración o estableceruse-package-always-ensure
ent
. De lo contrario, no se instalaría automáticamente en otro sistema cuando se copiara la configuración.Gestión de paquetes de próxima generación con
straight.el
Después de una larga y frustrante lucha por usar
package.el
+ Quelpa para administrar mis paquetes, mordí la bala y escribí mi propio administrador de paquetes . Se pretende reemplazarpackage.el
por completo al proporcionar una experiencia de gestión de paquetes que es superior en casi todos los sentidos.Puede leer la extensa documentación para conocer todas sus características, pero la más relevante para esta pregunta es que se
straight.el
centra en la reproducibilidad perfecta . Esto significa que no debería importar si está iniciando Emacs normalmente, o si lo está iniciando en una nueva máquina, y que cualquier cambio local está controlado por la versión y puede revertirse a un estado canónico. En términos prácticos, esto se logra mediante (1) paquetes de clonación como repositorios de Git, y al proporcionar herramientas automatizadas para administrar su estado; (2) usar el archivo init como la única fuente de verdad para el estado de administración de paquetes, sin datos mutables almacenados en otro lugar; y (3) usar archivos de bloqueo de la versión opcional para especificar revisiones exactas de Git de cada paquete, más cualquier repositorio de recetas ystraight.el
sí mismo.Para comenzar, inserte el fragmento de arranque , que se instalará y activará
straight.el
. Luego, para asegurarse de que esté instalado un paquete, simplemente realice una llamada astraight-use-package
su archivo init:Sí, es así de simple. No tratar con
package-refresh-contents
nada de esa basura. Si elimina este formulario de su archivo init y reinicia Emacs, Projectile ya no se cargará (a diferencia depackage.el
). Esto significa que no tiene que preocuparse de que su configuración de alguna manera no funcione en una nueva máquina porque dependía accidentalmente de paquetes no declarados.Puede instalar paquetes donde quiera y cuando lo desee, a lo largo de su archivo de inicio (no es necesario declarar una lista de ellos en un solo punto). Por supuesto, también puedes hacer
si prefieres la lista Sin embargo, le recomiendo que utilice
use-package
para administrar la configuración de su paquete. Primero tienes que instalarlo:Luego, como
straight.el
tiene una integración incorporadause-package
, lo siguiente "simplemente funciona":Una vez que haya escrito su archivo init para instalar los paquetes que necesita, ejecute
M-x straight-freeze-versions
para guardar un archivo de bloqueo de versión~/.emacs.d/straight/versions/default.el
. Debe mantener este archivo bajo control de versión, ya que le permitirástraight.el
verificar las versiones correctas de todos sus paquetes, cuando inicie Emacs por primera vez en una nueva máquina. (Puede volver manualmente a las versiones especificadas en el archivo de bloqueo usandoM-x straight-thaw-versions
).Para apoyar la idea de archivos de puntos locales de máquina que mencioné en mi otra respuesta ,
straight.el
ofrece un sistema de perfil . Todavía recomiendo usar enlaces simbólicos para sus archivos de puntos (en este caso,init.el
su archivo de inicio local si corresponde, y el archivo de bloqueo de versión si desea usar uno).Si se pregunta cómo se
straight.el
compara con otros gestores de paquetes, consulte la extensa sección de comparaciones . Pero también hay mucha más documentación sobre todo lo demás .fuente
Puede usar barril para administrar sus paquetes. Use git / github para controlar la fuente y sincronizar sus archivos de puntos emacs.
fuente