Como outros já apontaram, se você está alvejando o Emacs 23 ou mesmo 22, não possui um "pacote", mas apenas uma biblioteca. “Pacotes” não existem no Emacs anteriores ao Emacs 24 quando o gerenciador de pacotes foi adicionado.
Empacotando com uma Biblioteca
Empacote.
Como não há uma maneira padrão de instalar bibliotecas antes dos pacotes, você pode agrupar o json.el no que você der aos seus usuários - algum tipo de arquivo que eu presumo. Eles terão que instalá-lo manualmente de qualquer maneira e, assim, poderão escolher os arquivos de que precisam: Apenas sua biblioteca para usuários do Emacs 24/25, sua biblioteca + json.el para aqueles com versões mais antigas.
Enquanto você documentar isso, não causará nenhum problema.
Empacotando com um pacote
Não empacote absolutamente.
No entanto, se você criar um pacote adequado para o Emacs 24 e superior, não deverá incluí-lojson.el
.
O gerenciador de pacotes instalará com prazer sua cópia empacotada json.el
junto com sua biblioteca real. Como os pacotes que vêm em primeiro lugar na load-path
sua cópia empacotada json.el
, agora substituirão a incorporada, causando todos os tipos de problemas para os pacotes que esperam uma versão mais recente do json.el
.
O caminho a percorrer (na minha opinião)
Crie duas distribuições do seu pacote:
- Um pacote Emacs adequado para o Emacs 24 e superior, por exemplo, um TAR com os metadados do pacote correspondente. Você pode até hospedar um pequeno repositório de pacotes com o seu pacote para distribuir atualizações aos usuários do Emacs 24 automaticamente.
- Um arquivo TAR com sua biblioteca e
json.el
, mas sem metadados de pacote para usuários de versões mais antigas do Emacs.
A única coisa que você precisa observar é quando os usuários de versões mais antigas do Emacs atualizam para o Emacs 24. Nesse caso, eles terão que remover manualmente a instalação anterior da sua biblioteca json.el
e instalar o pacote apropriado do Emacs 24 novamente.
Uma alternativa
Se você não deseja manter duas distribuições diferentes, é possível agrupar json.el
, mas com um nome diferente, por exemplo my-library-json-compat.el
. Com um nome diferente, sua cópia do pacote json.el
nunca substituirá a incorporada.
Como as funções e os símbolos da cópia em pacote ainda conflitam com a incorporada, você deve tomar cuidado para não carregar sua cópia em pacote quando o real json.el
estiver disponível, mas isso é fácil:
(unless (require 'json nil 'no-error)
(require 'json "my-library-json-compat"))
O Emacs tentará carregar json.el
e, na sua falta, retornará à sua cópia agrupada com um nome diferente.
O verdadeiro caminho a percorrer (na minha opinião)
Diga aos seus usuários para atualizarem para o Emacs 24. A última versão do Emacs 22 é de oito (!) Anos atrás, a última versão do Emacs 23 ainda há quatro anos. Ambas as versões estão desatualizadas e carecem de muitos recursos, e muitos pacotes (por exemplo, Magit) suportam apenas o Emacs 24 atualmente. O Emacs 22/23 é um beco sem saída e não há como avançar com eles.
A atualização para o Emacs 24 é fácil: a maioria das distribuições Linux modernas inclui pelo menos o Emacs 24.1 em seus repositórios de pacotes. Estão disponíveis pacotes de aplicativos pré-criados para o OS X , e o mais recente Emacs 24 estável está incluído no popular Homebrew, gerenciador de pacotes do OS X.