Deseo modificar un paquete, probarlo y, con suerte, enviar una solicitud de extracción después. ¿Cómo lo hago de manera segura y eficiente? La pregunta puede parecer demasiado amplia, aceptaré la respuesta que cubre los siguientes problemas:
Esperaría instalar una rama separada de un paquete y poder cambiar entre ella y una rama estable por capricho, con la recompilación realizada automáticamente cuando sea necesario, pero
package.el
no parece ofrecer una forma sencilla de hacerlo. Esta respuesta en emacs-SE nos informa que "si se instalan varias copias de un paquete, entonces se cargará la primera", por lo que supongo que uno podría meterse manualmente,load-path
pero esto no parece robusto. ¿Cuál es la forma estándar de seleccionar una versión específica del paquete entre los instalados?Incluso si logro exponer varias ramas a Emacs, para ajustes importantes necesito asegurarme de que la rama sin parche esté "descargada" y sus efectos secundarios aislados. ¿
unload-feature
Maneja esto correctamente o tal vez tiene idiosincrasias que todo probador de paquetes de versiones múltiples debería conocer?¿Cómo instalo y pruebo la versión local? La respuesta parece depender de si el paquete es simple (= un archivo) o de múltiples archivos. EmacsWiki dice acerca de los paquetes de múltiples archivos : " MELPA crea paquetes para usted ". Dudo que deba (o deba) hablar con MELPA cada vez que cambie un
defun
formulario en un paquete de múltiples archivos, pero la pregunta continúa. Al menos necesito decirle al administrador de paquetes sobre la versión local, y si es así, ¿cómo lo hago?¿Qué nombres debo asignar a las versiones locales de paquetes? Supongamos que quiero trabajar en múltiples funciones o errores simultáneamente, lo que significa tener varias ramas. Emacs no permitirá nombrar versiones de manera descriptiva (en la línea de
20170117.666-somebugorfeature
). Supongo que podría cambiar el nombre del paquete en sí, un sufijo por rama, pero nuevamente, como meterse manualmenteload-path
en Q1, este es un truco feo, por lo que no lo intentaré con algo que pretendo enviar en sentido ascendente a menos que sea una práctica ampliamente aceptada .
Las preguntas probablemente son ingenuas, ya que nunca escribí un parche ni apliqué uno con git o un vcs similar. Sin embargo, para muchos usuarios de Emacs, aplicar un parche a un paquete de Emacs podría ser su primer (o quizás el único) esfuerzo de programación social, por lo que creo que las respuestas a esta pregunta seguirían siendo valiosas.
emacs -L
enfoque para cargar una versión local de un paquete que también he instalado globalmente usando Cask. Una cosa que me desconcertó fue que la ejecución<package>-version
siempre devuelve la versión instalada globalmente, incluso cuando en realidad estaba ejecutando la versión local modificada. Resulta que esto se debió a que<package>-version
para este paquete obtiene la versiónpackages.el
.