Emacs kurulu paketleri dışa aktarılsın mı?


10

Emacs 24.4 kullanıyorum. Yaklaşık bir yıllık kullanım boyunca Mx liste paketleri yönergesi aracılığıyla çok sayıda yüklü paket ekledim. Kurulu paketlerimi başka bir yerde kullanmak için dışa aktarmak isterim. .Emacs'ım kopyalandığında başlangıçta bazı hatalar veriyor, bu da bazı şeyleri yüklemek için belleğimi çalıştırıyor. .Emacs.d kopyalayabileceğimi sanıyorum, ama bu belki de kötü bir fikir gibi görünüyor.

Kurulu paketlerin listesini yabancı makinelerde kolayca almak için kullanılabilecek bir dosyaya dökmek için verebileceğim bir prosedür veya yönerge var mı?



1
Dizininizin kopyalanması .emacs.d(veya tercihen sürüm denetiminin altına alınması) genellikle iyi bir fikirdir. (Bu adlandırmak da mantıklı ~/.emacsiçin ~/.emacs.d/init.elbunu yapmaya karar verirseniz.)
Phil'ler

Yanıtlar:


5

Dizin ~/.emacs.d/elpa, yüklü tüm paketleri içerir list-packages. Bu dizini kopyalayabilirsiniz.

Ben de her şeyi bayt-yeniden derlemek için (byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 0sormak anlamına gelmez, tyeniden derleme zorlamak anlamına gelir) gibi bir şey çalıştırmak çünkü Emacs sürümleri arasında bayt derlenmiş dosyaları bazı uyumsuzluk olduğuna inanıyorum.


Bu soruyu sorduğumdan beri bu stratejiyi birkaç kez kullandım. Giriş için teşekkürler.
sanimalp

4

package.elDosyaya bir göz attım ve değişkeni buldum package-alist. Bu, yüklediğiniz paketler için gerekli olan paketler dahil tüm kurulu paketlerin bir listesi gibi görünmektedir.

İstediğiniz tek şey yüklenen paket adlarının bir listesi ise, aşağıdaki kod paketlerin adlarını bu listeden *Messages*arabelleğe yazacaktır .

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

Ben Lisp programcısı değilim bu yüzden eminim birisi bu kodun çok daha iyi bir sürümünü yazabilirsiniz.

Ayrıca, tüm paketlerimi yeni bir bilgisayara yüklemek için kullanım paketi kodunu :ensure tseçeneği ile kullanmaya başladım .


2

Bunu yapmanın bir yolu, önceden yüklenmediyse paketi yüklemek olabilir, init dosyanızı güncellemeli ve şu satırları eklemelisiniz:

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

my-packagesDeğişkeni değiştirin ve yüklenmesini istediğiniz paketi ekleyin / kaldırın. M-x describe-variable package-activated-listşu anda kurulu paketinizin listesini verecektir.

Bundan sonra, paylaşılacak tek şey init dosyanızdır. Umarım yardımcı olur.


Hata! Listeyi nasıl dökeceğinizi cevapladığınızı görüyorum. Belki bu cevabınızda daha belirgin hale getirilmelidir?
verdammelt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.