Saya baru saja menginstal cmake-mode
paket di Emacs 24 menggunakan:
M-x package-install cmake-mode
Saya dapat melihat paket di:, ~/.emacs.d/elpa/cmake-mode-20110824
dan saya dapat memuatnya menggunakan instruksi di Commentary:
bagian ~/.emacs.d/elpa/cmake-mode-20110824/cmake-mode.el
:
;; Add this code to your .emacs file to use the mode:
;;
;; (setq load-path (cons (expand-file-name "/dir/with/cmake-mode") load-path))
;; (require 'cmake-mode)
;; (setq auto-mode-alist
;; (append '(("CMakeLists\\.txt\\'" . cmake-mode)
;; ("\\.cmake\\'" . cmake-mode))
;; auto-mode-alist))
Namun ini bertentangan dengan instruksi penggunaan pada halaman ELPA's EmacsWiki:
... paket diinisialisasi SETELAH init.el dimuat. Ini berarti Anda TIDAK boleh memasukkan inisialisasi khusus paket ke init.el Anda ...
Saya cenderung setuju dengan instruksi ini karena menambahkan ke ~/.gnu-emacs
file saya sebuah baris seperti:
(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
jelek, dan akan rusak jika dan ketika saya akan memutakhirkan paket. Namun tanpa garis ini saya tidak dapat digunakan cmake-mode
.
Apakah saya melewatkan sesuatu di sini?
Catatan:
- Saya tidak melakukan apa pun yang aneh
package-enable-at-startup
dan nilainyat
. - Saya menggunakan pembuka .
user-emacs-directory
nilainya"~/.emacs.d/"
(Terima kasih @lawlist untuk sarannya)package-user-dir
nilai adalah"~/.emacs.d/elpa"
emacs
package-management
elpa
cmake
Chen Levy
sumber
sumber
default-directory
atauuser-emacs-directory
, sehinggaelpa
direktori tidak dimuat?package-install
membuatelpa
direktori dan file autoloads yang dibuat selama instalasi didasarkan pada lokasi itu.elpa
direktori - yaitu,~/.emacs.d/cmake-mode-20110824/
bukan tempat file autoload mengharapkannya.~/.emacs.d/elpa/cmake-mode-20110824/
. Masalahnya tetap ada.Jawaban:
Saya menginstal cmake-mode dengan marmalade-repo, dan melihat cmake-mode-autoloads.el. Tampaknya penulis membuat keputusan sadar
not
termasuk semua yang diperlukan untuk pengaturan dalam file autoloads. Namun, instruksi pada baris 25 hingga 30 dari cmake-mode.el sudah benar, yang Anda kutip dalam pertanyaan Anda. Jika Anda menggunakan baris 25 hingga 30 dan mengatur jalur dengan benar, maka Anda TIDAK perlu baris kode tambahan seperti(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
.Jelas, Anda tidak ingin menggunakan
/dir/with/cmake-mode
- Anda ingin menggunakan~/.emacs.d/elpa/cmake-mode-20110824
tanpa forwardslash di akhir.Anda mungkin perlu menghapus direktori c-make-mode ... dan mencoba menginstal ulang jika kode di atas tidak berfungsi (menggunakan jalur Anda sendiri).
sumber
(package-initialize)
memuat yang lain. Apakah aku salah? Maksudku, saya belum pernah menggunakan ELPA banyak dan belum memperbarui paket apa pun dengan itu, jadi saya bisa salah. Dan, tentu saja, ini bukan masalah utama, tapi mengapa tidak menghindarinya sepenuhnya?Mengingat sifat wiki sebagai repositori setengah kode, setengah aide-memoire untuk peretas Emacs, Anda dapat memahami hal ini:
Inilah yang saya lakukan; salah satu file pertama yang dimuat oleh skrip init khusus saya (penciptaan yang, dari semua yang bisa saya kumpulkan, adalah asinorum pons dari penggunaan Emacs serius 1 ) tidak
dan dari sana saya hanya
(require)
paket ELPA apa yang saya butuhkan. Ini juga memiliki manfaat memungkinkan kontrol yang lebih baik atas perilaku paket yang diinstal ELPA; jika, misalnya, saya ingin menonaktifkan paket yang diberikan untuk saat ini tetapi tidak mencopotnya sepenuhnya, ini adalah masalah sederhana untuk mengomentari(require)
panggilan yang relevan , di mana perilaku default akan mengharuskan memindahkan paket keluar dari direktori ELPA saya sepenuhnya.(1. Meskipun memiliki godaan yang luar biasa, saya dengan berani menolak menyebutkan nama skrip init kebiasaan saya
lightsaber.el
.)sumber
Anda bisa melakukan semua inisialisasi Anda setelah memuat paket menggunakan
after-init-hook
. Dari EmacsWiki :sumber
Saya memiliki masalah serupa ketika saya mulai menggunakan ELPA. Dalam kasus saya, saya memiliki beberapa paket lokal karena tidak ada dalam ELPA.
Dan dengan demikian saya telah mengubah jalur beban. Untuk beberapa alasan load-path tidak diperbarui dengan benar oleh package.el. Untuk mengatasi masalah saya harus meletakkan
(setq load-path (cons "~/.emacs.d" load-path))
setelah panggilan kepackage-initialize
sumber