Właściwe podejście do zapewniania programów zewnętrznych wraz z pakietami?


12

Utrzymuję wiele pakietów elisp (np. Wyszukiwanie kodu, emacs-ycmd, traad), które skorzystałyby na możliwości zainstalowania programów zewnętrznych, których używają, oszczędzając czas i wysiłek niektórych użytkowników. Na przykład, korzystając z codesearch.el, byłoby fajnie móc pobrać, skompilować i zainstalować narzędzia do wyszukiwania kodu (napisane w go, nie elisp) dla użytkowników. To usunąłoby co najmniej jedną barierę dla korzystania z pakietu.

Czy istnieją jakieś „najlepsze praktyki” w tym zakresie? Na przykład, gdzie powinienem umieścić programy zewnętrzne?

Jeśli nie masz bezpośredniej porady, czy możesz skierować mnie do pakietów, które robią coś takiego (i, najlepiej, robią to dobrze)?


1
Obawiam się, że może być gdzieś pomiędzy niezwykle trudnym a niemożliwym, biorąc pod uwagę, że nie masz kontroli, czy system Emacs użytkownika używa Linuxa, Windowsa lub Mac OS jako bootloadera ;-).
— mbork

2
Obawiam się, że lepiej jest oddzielić program zewnętrzny od pakietu Emacsa, aby uzyskać maksymalną elastyczność. Podejście polegające na dostarczeniu zewnętrznego oprogramowania z pakietem Emacsa wydaje się najlepsze w przypadku takich elementów, jak dołączone pliki Ruby / Python / TeX / ..., które są interpretowane. Odwrotne podejście do dostarczania kodu Emacs Lisp z pakietem zainstalowanym za pośrednictwem menedżera pakietów systemu (takiego jak mu i notmuch do) jest mniej elastyczne, ponieważ nie można mieć automatycznego ładowania.
— wasamasa

Wygląda na to, że macie rację. Jedynymi przykładami, jakie mogę znaleźć pakiety emacs zapewniające zależności zewnętrzne są np. Jedi, który pakuje niektóre skrypty python w pakiecie elpa.
— abingham

czy jest to coś, co będziemy mogli zrobić w Emacsie 25 z dynamicznym ładowaniem?
— wdkrnls

Odpowiedzi:


3

Nie ma na to „najlepszych praktyk”, nie. Żadne istniejące wsparcie dla niego. Myślę, że jeśli jest zainstalowany specjalnie dla pakietu Foo, to miejsce, w którym można go zainstalować, znajduje się w katalogu pakietu Foo.

Jeśli chodzi o to, jak to zrobić, zakładając, że pakiet Elisp jest instalowany za pośrednictwem ELPA, możesz spróbować dodać do głównego pliku Elisp coś takiego:

(eval-when-compile (call-process "make"))

a następnie podaj odpowiedni plik Makefile. Oczywiście, aby działał na „większości” platform, prawdopodobnie będziesz potrzebować czegoś bardziej wyrafinowanego.


1

Można zajrzeć do dostarczania el-get przepis na instalacji pakietu.

Patrz sekcja 9 „Przepisy autorskie” w pliku informacyjnym .

:build/system-typeInstrument może być szczególnie interesujące, jeśli masz zmienne wymagania w różnych platformach. Szczegółowe informacje można znaleźć w sekcji 9.5 „Kompilacja”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.