Ekspor paket yang diinstal Emacs?

10

Saya menggunakan emacs 24.4. Saya telah menambahkan sejumlah besar paket yang diinstal melalui direktif-daftar paket Mx selama sekitar satu tahun penggunaan. Saya ingin mengekspor daftar paket yang saya instal untuk digunakan di tempat lain. Menyalin .emacs saya memberi saya beberapa kesalahan saat startup, yang membuat memori saya terinstal untuk menginstal hal-hal tertentu. Saya curiga saya bisa menyalin .emacs.d, tapi sepertinya itu ide yang buruk.

Apakah ada prosedur atau arahan yang bisa saya keluarkan untuk membuang daftar paket yang diinstal ke file yang dapat digunakan untuk mendapatkannya di komputer asing dengan mudah?

sanimalp
sumber
1
Menyalin .emacs.ddirektori Anda (atau lebih baik meletakkannya di bawah kontrol versi) umumnya merupakan ide bagus. (Ini juga masuk akal untuk mengubah nama ~/.emacske ~/.emacs.d/init.eljika Anda memutuskan untuk melakukan hal ini.)
Phils

Jawaban:

5

Direktori ~/.emacs.d/elpaberisi semua paket yang diinstal dengan list-packages. Anda dapat menyalin direktori ini.

Saya mungkin juga akan menjalankan sesuatu seperti (byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 0artinya jangan tanya, tberarti paksakan kompilasi ulang) untuk byte-recompile semuanya karena saya percaya ada beberapa ketidakcocokan file byte-compiled antara versi Emacs.

pengasuh
sumber
Saya telah menggunakan strategi ini beberapa kali sejak mengajukan pertanyaan ini. Terima kasih atas masukannya.
sanimalp
4

Saya telah melihat-lihat package.elfile dan menemukan variabel package-alist. Ini tampaknya daftar semua paket yang diinstal termasuk paket yang diperlukan oleh paket yang telah Anda instal.

Jika semua yang Anda inginkan adalah daftar nama paket yang diinstal, kode berikut akan menuliskan nama paket dari daftar ini ke *Messages*buffer.

(dolist (p1 (sort (mapcar 'symbol-name (mapcar 'car package-alist)) 'string<))
  (message "%s" p1))

Saya bukan programmer Lisp jadi saya yakin seseorang dapat menulis versi yang jauh lebih baik dari kode ini.

Saya juga mulai menggunakan kode paket penggunaan dengan :ensure topsi untuk menginstal semua paket saya pada PC baru.

Colin Bell
sumber
2

Salah satu caranya adalah dengan menginstal paket jika belum diinstal, Anda harus memperbarui file init Anda, dan menambahkan baris-baris itu:

(defvar my-packages
  '(color-theme db-pg db kv magit-push-remote magit-tramp
                magit git-rebase-mode git-commit-mode pg
                pretty-lambdada projectile pkg-info epl dash
                python-mode rich-minority s yasnippet yasnippet-bundle
                use-package key-chord undo-tree guide-key move-text
                openwith ack ag aggressive-indent nginx-mode multiple-cursors
                smartparens with-editor haskell-mode)
  "A list of packages to ensure are installed at launch.")

(defun my-packages-installed-p ()
  (loop for p in my-packages
        when (not (package-installed-p p)) do (return nil)
        finally (return t)))

(unless (my-packages-installed-p)
  ;; check for new packages (package versions)                                  
  (package-refresh-contents)
  ;; install the missing packages                                                                               
  (dolist (p my-packages)
    (when (not (package-installed-p p))
      (package-install p))))

Ubah my-packagesvariabel dan tambahkan / hapus paket yang ingin Anda instal. M-x describe-variable package-activated-listakan memberi Anda daftar paket yang saat ini diinstal.

Setelah itu, satu-satunya hal untuk dibagikan adalah file init Anda. Saya harap ini akan membantu.

Nsukami _
sumber
Ups, saya melihat Anda menjawab bagaimana membuang daftar. Mungkin itu harus dibuat lebih menonjol dalam jawaban Anda?
verdammelt