ส่งออกแพ็คเกจที่ติดตั้ง Emacs หรือไม่


10

ฉันใช้ emacs 24.4 ฉันได้เพิ่มแพ็คเกจที่ติดตั้งจำนวนมากผ่านทางคำสั่ง Mx list-packages มากกว่าหนึ่งปีของการใช้งาน ฉันชอบส่งออกรายการแพ็คเกจที่ติดตั้งไว้เพื่อใช้ในที่อื่น การคัดลอก. emacs ของฉันทำให้ฉันมีข้อผิดพลาดบางอย่างเมื่อเริ่มต้นซึ่ง jogs หน่วยความจำของฉันติดตั้งบางสิ่ง ฉันสงสัยว่าฉันสามารถคัดลอก. emacs.d ได้ แต่นั่นอาจเป็นความคิดที่แย่

มีขั้นตอนหรือคำสั่งที่ฉันสามารถออกเพื่อดัมพ์รายการแพ็กเกจที่ติดตั้งไปยังไฟล์ที่สามารถใช้เพื่อรับมันบนเครื่องต่างประเทศได้อย่างง่ายดายหรือไม่?



1
การคัดลอก.emacs.dไดเรกทอรีของคุณ(หรือวางไว้ใต้การควบคุมเวอร์ชัน) เป็นความคิดที่ดี (นอกจากนี้ยังเหมาะสมที่จะเปลี่ยนชื่อ~/.emacsไป~/.emacs.d/init.elถ้าคุณตัดสินใจที่จะทำนี้.)
Phils

คำตอบ:


5

ไดเรกทอรีประกอบด้วยแพคเกจทั้งหมดที่ติดตั้งด้วย~/.emacs.d/elpa list-packagesคุณสามารถคัดลอกไดเรกทอรีนี้ไป

ฉันอาจจะเรียกใช้บางอย่างเช่น(byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 0ไม่ต้องถามtหมายถึงบังคับให้คอมไพล์ซ้ำ) เพื่อ byte-recompile ทุกอย่างเพราะฉันเชื่อว่ามีความเข้ากันไม่ได้ของไฟล์ที่คอมไพล์ด้วยไบต์ระหว่างเวอร์ชั่นของ Emacs


ฉันใช้กลยุทธ์นี้หลายครั้งตั้งแต่ถามคำถามนี้ ขอบคุณสำหรับการป้อนข้อมูล
sanimalp

4

ผมได้ดูผ่านที่ไฟล์และพบว่าตัวแปรpackage.el package-alistนี่น่าจะเป็นรายการของแพ็คเกจที่ติดตั้งทั้งหมดรวมถึงแพ็คเกจที่จำเป็นสำหรับแพ็คเกจที่คุณติดตั้ง

หากสิ่งที่คุณต้องการคือรายการชื่อแพ็คเกจที่ติดตั้งรหัสต่อไปนี้จะเขียนชื่อของแพ็คเกจจากรายการนี้ไปยัง*Messages*บัฟเฟอร์

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

ฉันไม่ใช่โปรแกรมเมอร์ Lisp ดังนั้นฉันจึงมั่นใจว่าบางคนสามารถเขียนโค้ดนี้ได้ดีขึ้นมาก

ฉันเริ่มใช้รหัสแพคเกจด้วย:ensure tตัวเลือกเพื่อติดตั้งแพคเกจทั้งหมดของฉันบนพีซีเครื่องใหม่


2

วิธีหนึ่งในการติดตั้งแพ็กเกจหากยังไม่ได้ติดตั้งคุณควรอัปเดตไฟล์ init และเพิ่มบรรทัดเหล่านั้น:

(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-packagesตัวแปรและเพิ่ม / ลบแพ็คเกจที่คุณต้องการติดตั้ง M-x describe-variable package-activated-listจะให้รายการของแพ็คเกจที่ติดตั้งอยู่ในปัจจุบันของคุณ

หลังจากนั้นสิ่งเดียวที่จะแบ่งปันคือไฟล์ init ของคุณ ฉันหวังว่ามันจะช่วย


โอ๊ะฉันเห็นว่าคุณตอบคำถามวิธีการดัมพ์รายการแล้ว บางทีคำตอบของคุณควรเด่นกว่านี้ไหม?
verdammelt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.