org-plus-contrib và org với `request` hoặc` use-pack`


8

Làm cách nào tôi có thể đảm bảo tôi đang tải xuống và sử dụng org-plus-contribtừ kho lưu trữ chế độ org bằng cách sử dụng requirehoặc use-package? Package.eltải gói, biên dịch mọi thứ và sau đó nói rằng nó không thể tải org-plus-contrib. Chủ đề này trong danh sách gửi thư thảo luận về một vấn đề tương tự, nhưng đảo ngược. Tuy nhiên, nếu tôi đặt (use-package org ..., use-packagetrả lại t, nhưng làm như vậy cho dù org-plus-contribđược cài đặt hay không.


Tại sao không đơn giản (use-package org-plus-contrib :ensure t)? Được cho rằng tôi đang sử dụng thùng với pallet để quản lý gói, nhưng nó đặt /home/kmicu/.emacs.d/.cask/24.4.1/elpa/org-plus-contrib-20150202 trong đường dẫn của tôi và tải nó.
kmicu 2/2/2015

Hãy nhớ rằng org-plus-contrib chứa các tệp org cộng với tất cả các tệp contribs. Bạn nên cài đặt org xor org-plus-contrib , nhưng không phải cả hai.
kmicu 2/2/2015

Có lẽ bạn có thể thử vớipackage-pinned-packages
csantosb

Câu trả lời:


4

Tôi không chắc chắn 100% rằng bạn thực sự có thể kiểm tra một cách đáng tin cậy chỉ requirehoặc use-package... Nhưng nếu bạn đang sử dụng gói.el cho chức năng chế độ org, cấu hình chế độ org của bạn có thể cần phải được hoãn lại cho đến khi các gói của bạn được khởi tạo. Bạn có thể thực hiện việc này bằng một cái móc sau khi Emacs đã khởi tạo được gọi là " after-init-hook".

Vì thế...

Điều đó có nghĩa là trong bạn .emacs, bạn sẽ cần một cái móc như:

(add-hook 'after-init-hook 'package-config)

Và ở một nơi khác:

(defun package-config ()
;;Your org-mode config goes here.
)

Sau đó, bạn có quyền truy cập vào chức năng kiểm tra và tải xuống của pack.el ...

vì vậy, vì bạn cũng muốn kiểm tra sự tồn tại của gói, bạn có thể sử dụng " (package-installed-p 'org-plus-contrib)" và cài đặt nó với " (package-install package)" nếu nó không ở đó.

Nhìn chung, mã có thể sẽ trông giống như:

(defun package-config ()
  (unless (package-installed-p 'org-plus-contrib)
    (package-refresh-contents)
    (package-install 'org-plus-contrib)))

(add-hook 'after-init-hook 'package-config)

Với phần còn lại của cấu hình của bạn là sau (unless ...)cơ thể.

Bằng cách đó, bạn có được cấu hình của mình, bạn kiểm tra cài đặt gói của mình và bạn tự động tải xuống để bạn có thể giả định rằng mọi thứ trong dòng đó trong hàm đều có thể sử dụng các contribs đã tải. (Giả sử bạn có kết nối mạng nếu nó không tồn tại.)


17

Cách chính xác để làm điều này với gói sử dụng như sau:

(use-package org
  :ensure org-plus-contrib
 ...

Đối số đầu tiên đảm bảo rằng đó là tệp org.el có nguồn gốc. Đối số: đảm bảo đảm bảo rằng bạn sẽ nhận được phiên bản với tất cả các tính năng bổ sung. Tất nhiên bạn cũng cần phải có ("org" . "http://orgmode.org/elpa/")trong kho lưu trữ trọn gói của bạn.


Tôi không có ý tưởng nào đảm bảo không phải là một người boolean. Tốt để biết!
wdkrnls


Tôi đang sử dụng cấu hình này trong cấu hình của mình, nhưng bất cứ khi nào gói bên thứ ba (ví dụ: elfeed-org) được cài đặt với gói sử dụng, org mặc định sẽ được tải xuống và cài đặt. Điều này không thể đúng, bất kỳ ý tưởng nào làm thế nào tôi có thể ngăn chặn điều đó xảy ra?
andreas-h

0

Tôi thực hiện cài đặt gói org-plus-contrib theo cách thủ công, nhưng sau đó sử dụng gói org. Cuối cùng, một phiên bản org Mx tiếp theo chỉ ra rằng org được cung cấp bởi org-plus-contrib thực sự được sử dụng và tất cả đều ổn.


Thật thú vị, bạn có sử dụng bất kỳ đóng góp cung cấp chức năng?
wdkrnls

Vâng, một vài mặt hàng, mặc dù tôi không nhớ cái nào vào lúc này.
Joe
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.