Como otros han señalado si estás apuntando a Emacs 23 o incluso 22, no tienes un "paquete" sino solo una biblioteca. Los "paquetes" no existen en Emacs antes de Emacs 24 cuando se agregó el administrador de paquetes.
Agrupando con una biblioteca
Agrúpalo.
Dado que no hay una forma estándar de instalar bibliotecas antes de los paquetes, puede agrupar json.el en lo que le dé a sus usuarios, supongo que es una especie de archivo. Tendrán que instalarlo manualmente de todos modos y, por lo tanto, pueden elegir los archivos que necesiten: solo su biblioteca para usuarios de Emacs 24/25, su biblioteca + json.el para aquellos con versiones anteriores.
Mientras documente esto, no causará ningún problema.
Paquete con un paquete
No lo empaque en absoluto.
Sin embargo, si crea un paquete adecuado para Emacs 24 y versiones posteriores, no debe incluirlojson.el
.
El administrador de paquetes instalará con gusto su copia incluida json.el
junto con su biblioteca real. Dado que los paquetes son lo primero en load-path
su copia incluida json.el
, ahora anularán la integrada, causando todo tipo de problemas para los paquetes que esperan una versión más reciente de json.el
.
El camino a seguir (en mi opinión)
Cree dos distribuciones de su paquete:
- Un paquete de Emacs adecuado para Emacs 24 y superior, por ejemplo, un TAR con los metadatos del paquete correspondiente. Incluso podría alojar un pequeño repositorio de paquetes con su paquete para distribuir actualizaciones a los usuarios de Emacs 24 automáticamente.
- Un archivo TAR con su biblioteca y
json.el
, sin metadatos del paquete, para usuarios de versiones anteriores de Emacs.
Lo único que debe tener en cuenta es cuando los usuarios de versiones anteriores de Emacs actualicen a Emacs 24. En este caso, deberán eliminar manualmente la instalación anterior de su biblioteca json.el
e instalar nuevamente el paquete Emacs 24 adecuado.
Una alternativa
Si no desea mantener dos distribuciones diferentes, puede agruparlas json.el
, pero con un nombre diferente, por ejemplo my-library-json-compat.el
. Con un nombre diferente, su copia de paquete json.el
nunca anulará la incorporada.
Dado que las funciones y los símbolos en la copia agrupada seguirían en conflicto con la incorporada, debe tener cuidado de no cargar su copia agrupada cuando json.el
esté disponible, pero esto es fácil:
(unless (require 'json nil 'no-error)
(require 'json "my-library-json-compat"))
Emacs intentará cargar json.el
, y en su defecto, volverá a su copia agrupada con un nombre diferente.
El verdadero camino a seguir (en mi opinión)
Indique a sus usuarios que actualicen a Emacs 24. La última versión de Emacs 22 es hace ocho (!) Años, la última versión de Emacs 23 aún hace cuatro años. Ambas versiones están desactualizadas y carecen de muchas características, y muchos paquetes (por ejemplo, Magit) solo admiten Emacs 24 en la actualidad. Emacs 22/23 es un callejón sin salida y no hay forma de avanzar.
Actualizar a Emacs 24 es bastante fácil: la distribución más moderna de Linux incluye al menos Emacs 24.1 en sus repositorios de paquetes. Para OS X, hay paquetes de aplicaciones preconstruidos disponibles, y el último Emacs 24 estable está incluido en el popular administrador de paquetes OS X Homebrew.