Như những người khác đã chỉ ra rằng nếu bạn đang nhắm mục tiêu Emacs 23 hoặc thậm chí 22 thì bạn không có gói Gói mà chỉ có một thư viện. Gói Gói không tồn tại trong Emacs trước Emacs 24 khi trình quản lý gói được thêm vào.
Đi kèm với một thư viện
Gói nó.
Vì không có cách tiêu chuẩn để cài đặt thư viện trước các gói, bạn có thể gói json.el vào bất cứ thứ gì bạn cung cấp cho người dùng của mình. Một số loại lưu trữ mà tôi đoán. Dù sao họ cũng sẽ phải cài đặt thủ công và do đó có thể chọn bất kỳ tệp nào họ cần: Chỉ thư viện của bạn cho người dùng Emacs 24/25, thư viện của bạn + json.el cho những người có phiên bản cũ hơn.
Miễn là bạn tài liệu này sẽ không gây rắc rối.
Gói với một gói
Đừng tuyệt đối không bó nó.
Tuy nhiên, nếu bạn xây dựng một gói thích hợp cho Emacs 24 trở lên, bạn không được bao gồmjson.el
.
Người quản lý gói sẽ vui vẻ cài đặt bản sao đi kèm của bạn json.el
cùng với thư viện thực tế của bạn. Vì các gói xuất hiện đầu tiên trong load-path
bản sao được đóng gói của json.el
bạn sẽ ghi đè lên bản dựng sẵn, gây ra tất cả các loại rắc rối cho các gói mong đợi phiên bản mới hơn json.el
.
Con đường để đi (theo ý kiến của tôi)
Tạo hai bản phân phối gói của bạn:
- Gói Emacs thích hợp cho Emacs 24 trở lên, ví dụ TAR với siêu dữ liệu gói tương ứng. Bạn thậm chí có thể lưu trữ một kho lưu trữ gói nhỏ với gói của mình để tự động phân phối các bản cập nhật cho người dùng Emacs 24.
- Một tệp TAR với thư viện của bạn và
json.el
, nhưng không có siêu dữ liệu gói cho người dùng các phiên bản Emacs cũ hơn.
Điều duy nhất bạn cần để ý là khi người dùng các phiên bản Emacs cũ cập nhật lên Emacs 24. Trong trường hợp này, họ sẽ phải xóa cài đặt thư viện trước đó cùng với json.el
và cài đặt lại gói Emacs 24 thích hợp.
Một sự thay thế
Nếu bạn không muốn duy trì hai phân bố khác nhau mà bạn có thể bó json.el
, nhưng dưới một cái tên khác nhau, ví dụ my-library-json-compat.el
. Với một tên khác, bản sao gói của json.el
bạn sẽ không bao giờ ghi đè lên bản dựng sẵn.
Vì các chức năng và ký hiệu trong bản sao được đóng gói vẫn xung đột với bản dựng sẵn, bạn phải cẩn thận không tải bản sao được đóng gói của mình khi thực json.el
có sẵn, nhưng điều này rất dễ:
(unless (require 'json nil 'no-error)
(require 'json "my-library-json-compat"))
Emacs sẽ cố gắng tải json.el
và thất bại rơi trở lại bản sao được gói của bạn dưới một tên khác.
Con đường thực sự để đi (theo ý kiến của tôi)
Nói với người dùng của bạn để cập nhật lên Emacs 24. Bản phát hành cuối cùng của Emacs 22 là tám (!) Năm trước, bản phát hành cuối cùng của Emacs 23 vẫn còn bốn năm trước. Cả hai phiên bản đều lỗi thời và thiếu nhiều tính năng, và nhiều gói (ví dụ Magit) hiện chỉ hỗ trợ Emacs 24. Emacs 22/23 là một ngõ cụt và không có cách nào từ họ.
Cập nhật lên Emacs 24 là đủ dễ dàng: Hầu hết các bản phân phối Linux hiện đại bao gồm ít nhất Emacs 24.1 trong kho lưu trữ gói của chúng. Đối với các gói Ứng dụng dựng sẵn OS X có sẵn và Emacs 24 ổn định mới nhất được bao gồm trong trình quản lý gói OS X phổ biến Homebrew.