ELPA/package.el
Aby zapobiec aktualizacji poprzez package.el, dodatek specjalny zależność (emacs "24.1")
do listy Package-Requires
. Zobacz Library Headers w Podręczniku Emacs Lisp, w opisie nagłówku Package-Requires:
:
[...] Kod pakiet automatycznie określa pakiet o nazwie „emacs” z numerem wersji aktualnie uruchomionego Emacsa. Może to być używane do wymagania minimalnej wersji pakietu Emacs.
package.el których rozprowadzany jest niezależnie Emacsowi 23 i poniżej nie nie zapewnienia tego specjalnego opakowania. Tak więc każda próba instalacji pakietu na Emacs 23 zakończy się niepowodzeniem z komunikatem narzekającym, że "emacs" jest niedostępny do instalacji, pozostawiając starą kompatybilną wersję w miejscu.
Jednak podczas korzystania z tego, być przygotowane do obsługi reklamacji użytkowników Emacs 24. Wielu użytkowników najwyraźniej nie usuwać swoich starych package.el
podczas uaktualniania do Emacs 24. Zatem stary package.el
nadpisuje nowe wbudowane w jednym, leading to spurious errors on installation.
ELGet
nie wiem Elget. Prawdopodobnie poproś autora o pomoc w tej sprawie.
Git Submoduły, archiwa i inne starsze metody
I nie sądzę, że można naprawdę zapobiegają aktualizacje, jeśli użytkownicy zainstalować pakiet w tradycyjny sposób (np submodules Git, pakietów dystrybucyjnych, itp.). Możesz tylko narzekać po pakiet został zaktualizowany, co jest prawdopodobnie zbyt późno, ponieważ niekompatybilny kod jest już tam.
Możesz dodać wyraźną kontrolę wersji ze szczegółowym error
. Uważam to za zbyteczne. Jeśli naprawdę wybierzesz Emacs 24, będziesz używał niekompatybilnych funkcji, więc twój pakiet nie zostanie załadowany pomyślnie, niezależnie od tego, czy wyraźnie go uniemożliwisz, czy nie. Więc oszczędzić sobie niepotrzebnego kodu :)
TL; DR (+ osobistego doświadczenia)
Przede wszystkim, nie należy zmieniać nazwy pakietu. Niewielu użytkowników może śledzić wiadomości na temat każdego zainstalowanego pakietu. W ten sposób wielu użytkowników nie od razu zorientuje się, że zmieniono nazwę pakietu i nadal używa przestarzałej wersji bez powiadomienia lub ostrzeżenia.W efekcie możesz ukarać Emacsa 24 użytkownikami twojego pakietu.
Dodaj specjalną zależność, aby zapobiec przypadkowym aktualizacjom za pośrednictwem pliku package.el. Dodaj znaną dokumentację, że twój pakiet wymaga Emacs 24, jak w pierwszej sekcji twojego Github Readme. Następnie pozwól, aby ta sprawa odpoczęła. Coś jeszcze jest bardziej kłopotliwe, niż jest warte.
W moim osobistym doświadczeniu, użytkownicy Emacs nie są głupi (cóż, przynajmniej większość nie jest). Czytają dokumentację. Rozumieją dokumentację.
Użytkownicy Emacs 23 wiedzą, że ich emacs jest nieaktualny. Wielu z nich oczekuje niezgodności i złamania. Jeśli pakiet nagle się dla nich przełamie, będą szukać porady na temat Githuba, zdaj sobie sprawę, że pakiet nie jest już dostępny dla Emacs 23 i albo wróć do ostatniej wersji roboczej, albo (miejmy nadzieję) zaktualizuj swoje Emacs.
W przypadku ELPA można sprawić, że twój pakiet będzie zależał od 'emacs-24', choć nie jestem pewien, czy dałoby to pożądany komfort użytkownika. – legoscia