Jelas bahwa tidak semua paket lokal / khusus / pribadi harus dirilis secara resmi, dan itu konyol untuk mendapatkan manfaat dari dukungan manajemen paket bawaan. Saya bertanya-tanya bagaimana cara menghasilkan dan mengaktifkan autoload untuk paket lokal? Itu mirip dengan bagaimana package.el
melakukannya untuk paket yang diinstal dari ELPA. Untuk menghindari reinventing the wheel, adakah cara untuk "berpura-pura" bahwa beberapa direktori lokal (dengan subdirektori yang masing-masingnya merupakan paket lokal / custom / personal) adalah ELPA? Saya juga terbuka el-get
jika skenario seperti itu dapat didukung melalui, misalnya, resep khusus.
Saya yakin tugasnya cukup umum dan siapa pun yang menggunakan Emacs pada tingkat mahir cepat atau lambat akan sampai ke titik itu. Adakah yang bisa berbagi pengalaman di bidang ini?
sumber
update-directory-autoloads
dapat digunakan secara independen dari semua manajer paket.update-directory-autoloads
untuk, pada dasarnya, membuatnya rekursif. 2. Anda dapat menggunakanupdate-file-autoloads
untuk setiap file yang Anda minati, terlepas dari direktori mana itu.package.el
juga non-rekursif (yaitu, tidak mendukung paket dengan sumber di subdirektori).Jawaban:
Solusi yang benar (IMO) adalah dengan menggunakan manajer paket yang memiliki dukungan eksplisit untuk kasus penggunaan ini. Ini akan menjadi
straight.el
, yang saya tulis untuk tujuan ini.Anda dapat membaca dokumentasi verbose, termasuk perbandingan dengan manajer paket lain, di README , jadi saya akan tetap menggunakan cara yang dapat Anda gunakan
straight.el
untuk menyelesaikan masalah spesifik Anda.~/.emacs.d/straight/repos/<my-repo>
.Muat menggunakan
Kamu sudah selesai. Setiap kali Anda membuat perubahan pada kode sumber, pembuatan autoload dan kompilasi byte akan dilakukan ulang (pada startup Emacs berikutnya). Anda juga mendapatkan hal-hal seperti manajemen ketergantungan, otomatisasi kontrol versi opsional, dll. Secara gratis.
straight.el
denganuse-package
jika Anda suka (itu hanya sintaks untuk sebagian besar).sumber
Saya melakukan hal berikut di Linux:
Saya menyiapkan repositori melpa lokal dengan mengkloning melpa.
Saya memodifikasi resep yang ingin saya tunjukkan ke paket lokal saya. Berikut ini adalah
local-melpa/recipies/ace-window
Kemudian dari jenis mepla lokal
make all
ataumake recipies/ace-window
untuk membangun paket (s) dilocal-melpa/packages
Lalu
make packages/archive-contents
, yang mengisi daftar paket.Kemudian gunakan untuk mengikuti untuk memberitahu emacs untuk menggunakan melpa lokal saya
Saya belum menemukan cara menjalankannya
make
di windows. Tapi saya bisa membuat paket dilocal-melpa
Linux dan menyalinnya ke windows dan emacs mengerti dan menginstal paket dengan benar.Keuntungan dari ini adalah saya dapat mengatur ulang kapan saja saya mau dengan menghapus
~/.emacs.d/elpa/*
direktori saya dan menginstal setiap pembaruan kustom untuk paket apa pun.sumber
Jika Anda telah mengganti paket yang sudah diinstal dengan versi yang berbeda, dan semua yang Anda lewatkan adalah file autoloads, Anda dapat menggunakan package-generate-autoloads untuk menghasilkannya:
Saya merasa lebih mudah menggunakan pembaruan-direktori-autotool ketika saya perlu menurunkan versi paket ke versi yang lebih lama.
Sebenarnya saya pikir saya belum benar-benar menjawab pertanyaan Anda. Saya akan meninggalkan jawaban ini di sini untuk saat ini tetapi jawaban saya lebih relevan di sini: /programming/26348561/how-to-generate-autoloads-for-elpa-packages/50100170
sumber