Cách tiếp cận phù hợp để cung cấp các chương trình bên ngoài cùng với các gói?


12

Tôi duy trì một số gói elisp (ví dụ: codearch, emacs-ycmd, traad) sẽ có lợi khi có thể cài đặt các chương trình bên ngoài mà chúng sử dụng, tiết kiệm thời gian và công sức cho một số người dùng. Ví dụ, với Codecearch.el, thật tuyệt khi có thể tải xuống, biên dịch và cài đặt các công cụ tìm kiếm mã (viết bằng văn bản, không phải là elisp) cho người dùng. Điều này sẽ loại bỏ ít nhất một rào cản cho việc sử dụng gói.

Có "thực hành tốt nhất" nào để làm việc này không? Ví dụ, tôi nên đặt các chương trình bên ngoài ở đâu?

Nếu bạn không có lời khuyên trực tiếp nào, bạn có thể giới thiệu cho tôi bất kỳ gói nào làm điều gì đó như thế này (và, lý tưởng nhất là làm tốt điều đó)?


1
Tôi e rằng nó có thể ở đâu đó giữa cực kỳ khó khăn và không thể, vì bạn không kiểm soát được liệu hệ điều hành Emacs của người dùng sử dụng Linux, Windows hay Mac OS làm bộ tải khởi động ;-).
mbork

2
Tôi sợ tốt hơn là tách chương trình bên ngoài khỏi gói Emacs để linh hoạt tối đa. Cách tiếp cận cung cấp phần mềm bên ngoài với gói Emacs có vẻ hiệu quả nhất đối với những thứ như các tệp Ruby / Python / TeX / ... được giải thích. Cách tiếp cận ngược lại với việc cung cấp mã Emacs Lisp với gói được cài đặt thông qua trình quản lý gói của hệ thống của bạn (như mu và notmuch do) kém linh hoạt hơn vì bạn không thể tự động tải.
wasamasa

Có vẻ như hai bạn nói đúng. Các ví dụ duy nhất tôi có thể tìm thấy các gói emacs cung cấp các phụ thuộc bên ngoài là jedi, gói một số tập lệnh python trong gói elpa.
abingham

đây có phải là thứ chúng ta sẽ có thể làm trong Emacs 25 với tính năng tải động không?
wdkrnls

Câu trả lời:


3

Không có "thực hành tốt nhất" cho điều đó, không. Cũng không có bất kỳ loại hỗ trợ hiện có cho nó. Tôi nghĩ rằng nếu nó được cài đặt riêng cho gói Foo, thì nơi cài đặt nó sẽ nằm trong thư mục của gói Foo.

Về cách thực hiện, giả sử gói Elisp của bạn được cài đặt qua ELPA, sau đó bạn có thể muốn thử thêm vào tệp Elisp chính của mình một cái gì đó như:

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

và sau đó cung cấp một Makefile thích hợp. Tất nhiên, để nó hoạt động trong các nền tảng "nhất", có lẽ bạn sẽ muốn một cái gì đó tinh vi hơn một chút.


1

Bạn có thể muốn xem xét việc cung cấp một công thức el-get để cài đặt gói của bạn.

Xem phần 9 "Bí quyết tác giả" trong tệp thông tin .

:build/system-typesở có thể được quan tâm đặc biệt, nếu bạn có các yêu cầu khác nhau trên các nền tảng khác nhau. Xem phần 9.5 "Xây dựng" để biết chi tiết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.