Esportare i pacchetti installati di Emacs?


10

Sto usando emacs 24.4. Ho aggiunto un gran numero di pacchetti installati tramite la direttiva Mx list-pacchetti in circa un anno di utilizzo. Mi piacerebbe esportare la mia lista di pacchetti installati per l'uso altrove. Copiare il mio .emacs mi dà alcuni errori all'avvio, che fa correre la mia memoria per installare certe cose. Sospetto di poter copiare .emacs.d, ma sembra forse una cattiva idea.

Esiste una procedura o una direttiva che posso emettere per scaricare l'elenco dei pacchetti installati su un file che può essere utilizzato per trasferirli facilmente su macchine straniere?



1
Copiare la tua .emacs.ddirectory (o preferibilmente metterla sotto il controllo della versione) è generalmente una buona idea. (E 'anche ragionevole per rinominare ~/.emacsa ~/.emacs.d/init.else si decide di fare questo.)
PHILS

Risposte:


5

La directory ~/.emacs.d/elpacontiene tutti i pacchetti installati con list-packages. È possibile copiare questa directory su.

Probabilmente eseguirò anche qualcosa del tipo (byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 0significa non chiedere, tsignifica forzare la ricompilazione) per ricompilare il byte tutto perché credo che ci sia una certa incompatibilità dei file compilati con byte tra le versioni di Emacs.


Ho usato questa strategia più volte da quando ho posto questa domanda. Grazie per l'input.
sanimalp,

4

Ho dato un'occhiata al package.elfile e ho trovato la variabile package-alist. Questo sembra essere un elenco di tutti i pacchetti installati, compresi i pacchetti richiesti dai pacchetti installati.

Se tutto ciò che desideri è un elenco dei nomi dei pacchetti installati, il codice seguente scriverà i nomi dei pacchetti da questo elenco nel *Messages*buffer.

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

Non sono un programmatore Lisp, quindi sono sicuro che qualcuno può scrivere una versione molto migliore di questo codice.

Ho anche iniziato a utilizzare il codice del pacchetto d'uso con l' :ensure topzione per installare tutti i miei pacchetti su un nuovo PC.


2

Un modo di fare potrebbe essere quello di installare il pacchetto se non è già installato, è necessario aggiornare il file init e aggiungere quelle righe:

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

Modifica la my-packagesvariabile e aggiungi / rimuovi il pacchetto che desideri installare. M-x describe-variable package-activated-listti fornirà l'elenco del pacchetto attualmente installato.

Dopodiché, l'unica cosa da condividere è il tuo file init. Spero che sarà di aiuto.


Oops, vedo che hai risposto a come scaricare l'elenco. Forse questo dovrebbe essere reso più evidente nella tua risposta?
verdammelt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.