Utilice la opción package-archive-priorities
que se hizo para este mismo propósito. Para preferir MELPA estable sobre MELPA, agregue lo siguiente a su archivo de inicio:
(setq package-archives
'(("GNU ELPA" . "https://elpa.gnu.org/packages/")
("MELPA Stable" . "https://stable.melpa.org/packages/")
("MELPA" . "https://melpa.org/packages/"))
package-archive-priorities
'(("MELPA Stable" . 10)
("GNU ELPA" . 5)
("MELPA" . 0)))
Cuanto mayor sea el número, mayor será la prioridad de un archivo de paquete. Para cualquier paquete que exista en múltiples archivos, el administrador de paquetes de Emacs elige el paquete del archivo con la máxima prioridad e ignora los paquetes en otros archivos, incluso si el número de versión es mayor. Si el paquete existe en dos archivos de la misma prioridad, gana el número de versión superior y, en última instancia, creo que el pedido está incluido package-archives
.
Recomiendo asignar explícitamente una prioridad a todos los archivos, incluido el archivo GNU ELPA predeterminado, para evitar ambigüedades. Aunque los archivos que no están dentro package-archive-priorities
tienen una prioridad predeterminada de 0, es muy fácil olvidarlo.
package-archive-priorities
se introdujo en Emacs 25.1, para versiones anteriores vea la respuesta anterior a continuación:
En Emacs 24 no es posible establecer MELPA Stable de manera predeterminada y usar MELPA solo para paquetes específicos de manera general. Sin ningún paquete de personalización, el archivo predeterminado es el archivo que proporciona la versión más alta , que es MELPA. No hay interfaz para cambiar eso.
Sin embargo, a partir de Emacs 24.4, la nueva opción le package-pinned-packages
permite anclar paquetes individuales a los archivos, pero esto solo le permite implementar el inverso de su requerimiento: Predeterminado a MELPA, y usar MELPA Estable para paquetes específicos.
Por lo tanto, actualmente su única opción es completar package-pinned-packages
todos los paquetes que le gustaría usar, ya sea manualmente o con algún código Emacs Lisp. Tenga en cuenta que package-pinned-packages
debe establecerse antes de llamar package-refresh-contents
porque la fijación se evalúa al generar el índice del paquete y no al instalar paquetes.
Una solución a largo plazo sería M-x report-emacs-bug
pedirle a los desarrolladores de Emacs que implementen algún tipo de característica de "archivo predeterminado", o pedirle al responsable de los carámbanos que realice lanzamientos etiquetados correctamente para que MELPA Stable pueda construir paquetes estables para él. Sin embargo, ninguno de los dos puede resultar fácil, ya que el primero requiere cambios más grandes en package.el, y el último que los carámbanos se trasladan de EmacsWiki a un repositorio VCS adecuado con etiquetas, lo que supongo que su mantenedor no está dispuesto a hacer, porque si lo fueran, lo habrían hecho hace mucho tiempo.