2013-05-29 2 views
10

Posiadam dość dobrze wykorzystany pakiet emacs (ido-webiquitous), aw następnej wersji planuję zrzucić wsparcie dla Emacsa 23 i poniżej. Osoby używające Emacsa 23 i poniżej będą mogły nadal korzystać z aktualnej wersji mojego pakietu.Jak mogę z wdziękiem zrzucić wsparcie dla starszych emacsenów w moim elispowym pakiecie?

Nie chcę jednak, aby użytkownicy Emacs 23 aktualizowali się przez ELPA lub git lub coś innego, a kończą na nowej wersji, która nie jest zgodna z ich emacs. Czy istnieje ogólnie przyjęty sposób postępowania z wdziękiem? Czy mam jakiś wybór przed zmianą nazwy nowej wersji na "ido-ubiquitous-ng" czy coś takiego?

+0

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

Odpowiedz

7

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.

+2

Niezależnie od zależności menedżera pakietów, upewnij się, że (zakładając, że twoja biblioteka jest w kontroli wersji!), Utworzysz gałąź dla wersji Emacs 23 biblioteki, zanim zaczniesz hakować na pniu. W ten sposób użytkownicy zachowują przynajmniej możliwość pobrania zgodnej wersji z repozytorium (oraz z odpowiednim źródłem/receptą el-get, mogliby w prosty sposób zainstalować i zaktualizować z gałęzi Emacs 23). – phils

+0

@phils Czy tag na ostatniej zgodnej wersji nie byłby wystarczający, jeśli nie zamierza już wspierać Emacsa 23? – lunaryorn

+0

Moim zdaniem jest to zdecydowanie przypadek dla oddziału. Znaczniki będą używane dla określonych wydań w oddziale. Nawet jeśli nie planujesz go wspierać, nie rozgałęziające się rabaty mają możliwość przyjmowania łat od innych osób (ale ja nadal nazywam to oddziałem niezależnie od tego). Z VCS jak git, znaczniki i gałęzie są dogodnie prawie tak samo. Przy takich rodzajach rozgałęzień Subversion * jest * węższy, jednak byłaby to rzadka biblioteka Emacs, która miała tak duże repozytorium, że mogła się tym przejmować. – phils

Powiązane problemy