Saya mencoba menggunakan use-package
untuk mengatur org-mode
inisialisasi saya . Saya memiliki yang berikut ini di ~/.emacs
file saya :
(use-package org-mode
:mode "\\.org$"
:ensure org
:config
(progn
(setq org-log-done 'time)
(setq org-confirm-babel-evaluate nil)
(setq org-export-babel-evaluate nil)
(setq org-html-validation-link nil)
;; ... more stuff
)
)
Namun, tak satu pun dari :config
inisialisasi itu dijalankan. Apakah saya salah nama paket atau sesuatu? Saya agak bingung pada nama paket vs nama ELPA vs perintah doa ....
org-mode
init-file
use-package
Ken Williams
sumber
sumber
org.el
dan Anda akan melihat menuju akhir:(provide 'org)
. Simbol yang (org
) adalah apa yang akan Anda gunakan untuk memuat paket, seperti dalam:(require 'org)
. Itulah yang akhirnyause-package
dilakukan, hanya dengan beberapa hal berguna di sekitarnya. Paket yang diberikan dapat mendefinisikan banyak mode sehingga paket dan nama mode tidak selalu sama. Ini benar-benar masalah yang sama dengan pertanyaan lain tentanghtml-mode
didefinisikan olehsgml-mode
paket.Jawaban:
Di bawah ini akan berfungsi. Demi kejelasan, saya menggunakan
:ensure org-plus-contrib
yang sedikit menyimpang dari contoh dalam pertanyaan Anda.Berikut adalah beberapa catatan penjelasan untuk yang di atas:
(use-package FEATURE-NAME
FEATURE-NAME
adalah apa yang ada di(provide ..)
garis paket. Sebaborg-mode
, garis itu adalah(provide 'org)
.:mode ((FILE-REGEXP . MAJOR-MODE))
FILE-REGEXP
adalah ekspresi reguler yang Anda inginkan untuk mengaktifkan mode utama tertentu. Anda memiliki yang benar:"\\.org$"
.MAJOR-MODE
adalah nama mode utama yang ingin Anda aktifkan (termasuk-mode
bagian dari nama mode utama). Dalam hal ini, nama mode utama adalahorg-mode
.:mode (FILE-REGEXP)
yang Anda gunakan hanya akan bekerja jikaFEATURE-NAME
danMAJOR-MODE
sama persis. Contoh:cperl-mode
.:ensure PACKAGE-NAME
PACKAGE-NAME
adalah apa yang saya lihat tercantum dalam daftar paket (M-x package-list-packages
). Untuk kejelasan, dalam solusi saya di atas, kami menginstal paketorg-plus-contrib
1 . Ini untuk menunjukkan nama fitur, mode utama dan nama paket yang sebenarnya tidak harus sama persis. Dan saya juga lebih suka menginstalnya daripada sekadarorg-mode
mendapatkan semuacontrib/
paket barang juga! :)1 Anda harus menambahkan
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
konfigurasi emacs Anda untuk menginstalorg-plus-contrib
. Lihat halaman instalasi mode-org resmi untuk info lebih lanjut.Catatan
Cara terbaik untuk membuat
use-package
potongan di atas berfungsi adalah menyimpannya ke konfigurasi emacs Anda terlebih dahulu, kemudian hapus versi Package Manager yang diinstal sebelumnyaorg
, dan kemudian mulai kembali emacs.sumber
org-babel-do-load-languages
dalam konteks ini, itu memberikan kesalahanError (use-package): org :config: Invalid function: org-babel-header-args-safe-fn
. Bahasa lain (misalnyash
atauperl
atauemacs-lisp
) tampaknya bekerja dengan baik.C-h f org-babel-header-args-safe-fn
. Anda juga tidak memiliki cuplikan kode itu di pertanyaan Anda. Jadi sulit untuk menebak apa yang terjadi.(R . t)
saluran menghentikan kesalahan. Jadi ya, masalah yang tidak berhubungan saya pikir. Mungkin perlu membuka pertanyaan lain ...emacs -Q
mulai bersih, dengan hati-hati memuat'package
konfigurasi saya , mencopot pemasanganorg
danorg-plus-contrib
, kemudian menginstalnya kembali. Masalahnya dijelaskan di sini: emacs.stackexchange.com/a/13576/8899org-plus-contrib
orgasme Anda berantakan dan Anda akhirnya memiliki campuran versi. btw, Anda perlu menginstal sajaorg-plus-contrib
. Anda tidak perlu menginstalorg
paket terpisah juga.Dengan peringatan bahwa saya belum pernah menggunakan
use-package
sebelumnya, saya yakin Anda inginorg
bukanorg-mode
. Saya mendasarkan ini pada kenyataan bahwa, pada Emacs saya,(package-installed-p 'org-mode)
mengembalikan nihil sementara(package-installed-p 'org)
tidak.sumber