org-plus-contrib dan org dengan `need` atau` use-package`

9

Bagaimana saya bisa memastikan saya mengunduh dan menggunakan org-plus-contribdari repositori mode-org menggunakan requireatau use-package? Package.elmengunduh paket, mengkompilasi semuanya dan kemudian mengatakan tidak dapat memuat org-plus-contrib. Utas ini pada milis membahas masalah yang serupa tetapi terbalik. Namun, jika saya menempatkan (use-package org ..., use-packagemengembalikan t, tetapi apakah org-plus-contribitu diinstal atau tidak.

wdkrnls
sumber
Kenapa tidak sederhana saja (use-package org-plus-contrib :ensure t)? Memang saya menggunakan tong dengan palet untuk manajemen paket, tetapi menempatkan / home / kmicu/.emacs.d/.cask/24.4.1/elpa/org-plus-contrib-20150202 di jalur saya dan memuatnya.
kmicu
Ingat bahwa org-plus-contrib berisi file org plus semua file contribs. Anda harus menginstal org xor org-plus-contrib , tetapi tidak keduanya.
kmicu
Mungkin Anda bisa mencobanya denganpackage-pinned-packages
csantosb

Jawaban:

4

Saya tidak 100% yakin Anda dapat benar-benar memeriksa hanya dengan requireatau use-package... Tetapi jika Anda menggunakan package.el untuk fungsi mode-org, konfigurasi mode-org Anda mungkin perlu ditunda sampai setelah paket Anda diinisialisasi. Anda dapat melakukan ini dengan hook yang berjalan setelah Emacs diinisialisasi yang disebut " after-init-hook".

Begitu...

Itu berarti di Anda .emacs, Anda akan memerlukan sebuah pengait seperti:

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

Dan di tempat lain:

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

Setelah itu, Anda memiliki akses ke fungsionalitas memeriksa dan mengunduh package.el ...

jadi, karena Anda juga ingin memeriksa keberadaan paket, Anda dapat menggunakan " (package-installed-p 'org-plus-contrib)" dan menginstalnya dengan " (package-install package)" jika tidak ada.

Secara keseluruhan, kodenya mungkin akan terlihat seperti:

(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)

Dengan sisa konfigurasi Anda setelah (unless ...)tubuh.

Dengan begitu, Anda mendapatkan konfigurasi Anda, Anda mendapatkan pemeriksaan instal paket Anda, dan Anda mendapatkannya secara otomatis diunduh sehingga Anda dapat dengan aman berasumsi bahwa apa pun yang melewati garis dalam fungsi tersebut dapat menggunakan kontrib yang dimuat. (Dengan asumsi Anda memiliki koneksi jaringan jika tidak ada.)

Archenoth
sumber
17

Cara yang benar untuk melakukan ini dengan menggunakan-paket adalah sebagai berikut:

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

Argumen pertama memastikan bahwa itu adalah file org.el yang bersumber. Argumen: Pastikan memastikan bahwa Anda mendapatkan versi dengan semua ekstra. Tentu saja Anda juga perlu memiliki ("org" . "http://orgmode.org/elpa/")daftar arsip-arsip Anda.

Spencer Boucher
sumber
Saya tidak tahu memastikan tidak harus menjadi boolean. Senang mendengarnya!
wdkrnls
Saya menggunakan ini di konfigurasi saya, tetapi setiap kali paket pihak ketiga (misalnya, elfeed-org) diinstal dengan paket-penggunaan, org default diunduh dan diinstal. Ini tidak mungkin benar, ada ide bagaimana saya bisa mencegah hal itu terjadi?
andreas-h
@ AlfredM. yang tidak disebutkan dalam orgmode.org/elpa.html lagi
Günter Zöchbauer
0

Saya melakukan paket-instal org-plus-contrib secara manual, tetapi kemudian lakukan menggunakan paket-org. Akhirnya, versi Mx org berikutnya menunjukkan bahwa org yang disediakan oleh org-plus-contrib memang digunakan dan semuanya baik-baik saja.

Joe
sumber
Menarik, apakah Anda menggunakan fungsionalitas contrib yang disediakan?
wdkrnls
Ya, beberapa item, meskipun saya tidak ingat yang mana pada saat ini.
Joe