Правильний підхід до надання зовнішніх програм разом з пакетами?


12

Я підтримую ряд пакетів elisp (наприклад, пошук коду, emacs-ycmd, traad), який би виграв від можливості встановити зовнішні програми, які вони використовують, економлячи час та зусилля для деяких користувачів. Наприклад, за допомогою codesearch.el було б непогано мати можливість завантажувати, компілювати та встановлювати інструменти пошуку коду (написані в дорозі, а не elisp) для користувачів. Це призведе до усунення хоча б одного бар'єру для використання пакета.

Чи є "найкращі практики" для цього? Наприклад, куди слід поставити зовнішні програми?

Якщо у вас немає прямої поради, чи можете ви віднести мене до будь-яких пакунків, які роблять щось подібне (а в ідеалі - це все добре)?


1
Я боюся, що це може бути дещо між надзвичайно складним і неможливим, враховуючи, що ви не контролюєте, чи користувач Emacs OS використовує Linux, Windows або Mac OS як завантажувач ;-).
mbork

2
Я боюся, що краще від'єднати зовнішню програму від пакету Emacs для досягнення максимальної гнучкості. Підходить надання зовнішнього програмного забезпечення пакетом Emacs, здається, найкраще підходить для таких матеріалів, як включені файли Ruby / Python / TeX / ..., які інтерпретуються. Протилежний підхід надання коду Emacs Lisp пакетом, встановленим через менеджер пакунків вашої системи (наприклад, mu та notmuch do do), є менш гнучким, оскільки ви не можете мати автоматичне завантаження.
wasamasa

Схоже, ви двоє праві. Єдині приклади, які я можу знайти для пакетів emacs, що забезпечують зовнішні залежності, наприклад, jedi, який поєднує деякі сценарії python в пакеті elpa.
Абінгем

це те, що ми зможемо зробити в Emacs 25 з динамічним завантаженням?
wdkrnls

Відповіді:


3

Немає «найкращих практик» для цього, немає. Ні будь-який тип існуючої підтримки для цього. Я думаю, якщо він встановлений спеціально для пакета Foo, то місце його встановлення було б в каталозі пакета Foo.

Що стосується того, як це зробити, якщо припустити, що ваш пакет Elisp встановлений через ELPA, то ви можете спробувати додати у свій основний файл Elisp щось на зразок:

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

а потім надайте відповідний Makefile. Звичайно, для того, щоб він працював на "більшості" платформ, ви, мабуть, захочете чогось більш складного.


1

Можливо, ви хочете розглянути можливість надання рецепту el-get для встановлення вашого пакету.

Дивіться розділ 9 "Рецепти авторства" у файлі інформації .

:build/system-typeОб'єкт може становити особливий інтерес, якщо у вас є вимога до змінному на різні платформи. Деталі див. У розділі 9.5 "Створення".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.