निर्यात Emacs स्थापित संकुल?


10

मैं 24.4 emacs का उपयोग कर रहा हूँ। मैंने उपयोग के लगभग एक वर्ष में Mx सूची-संकुल निर्देश के माध्यम से बड़ी संख्या में संस्थापित संकुल जोड़े हैं। मैं अपने स्थापित संकुल सूची को कहीं और उपयोग करने के लिए निर्यात करना पसंद करूंगा। मेरे .emacs को कॉपी करने से मुझे स्टार्टअप पर कुछ त्रुटियां होती हैं, जो कुछ चीजों को स्थापित करने के लिए मेरी मेमोरी को जॉग करती है। मुझे संदेह है कि मैं .emacs.d की प्रतिलिपि बना सकता हूं, लेकिन ऐसा लगता है कि शायद एक बुरा विचार है।

क्या कोई प्रक्रिया या निर्देश है जो मैं स्थापित पैकेजों की सूची को एक फ़ाइल में डंप करने के लिए जारी कर सकता हूं जिसका उपयोग उन्हें विदेशी मशीनों पर आसानी से करने के लिए किया जा सकता है?



1
अपनी .emacs.dनिर्देशिका की प्रतिलिपि बनाना (या अधिमानतः इसे संस्करण नियंत्रण में रखना) आम तौर पर एक अच्छा विचार है। (यह भी नाम बदलने के लिए समझदार है ~/.emacsकरने के लिए ~/.emacs.d/init.elयदि आप ऐसा करने का निर्णय।)
फिल्स

जवाबों:


5

निर्देशिका ~/.emacs.d/elpaमें सभी पैकेज शामिल हैं list-packages। आप इस निर्देशिका को कॉपी कर सकते हैं।

मैं शायद कुछ ऐसा भी चलाऊंगा (byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 0मतलब मत पूछो, tबलपूर्वक recompile) सब कुछ बाइट को recompile करना क्योंकि मेरा मानना ​​है कि Emacs संस्करणों के बीच बाइट-संकलित फ़ाइलों की कुछ असंगति है।


मैंने यह प्रश्न पूछने के बाद से कई बार इस रणनीति का उपयोग किया है। इनपुट के लिए धन्यवाद।
16:09

4

मैं package.elफ़ाइल के माध्यम से एक नज़र था और चर पाया package-alist। यह उन सभी संस्थापित संकुलों की सूची प्रतीत होता है जिनमें संकुल जो आपके द्वारा संस्थापित संकुल के लिए आवश्यक है।

यदि आप चाहते हैं कि संकुल नामों की एक सूची स्थापित हो, तो निम्नलिखित कोड संकुल के नामों को इस सूची से *Messages*बफर में लिख देगा ।

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

मैं कोई लिस्प प्रोग्रामर नहीं हूं, इसलिए मुझे यकीन है कि कोई इस कोड का बेहतर संस्करण लिख सकता है।

मैंने नए पीसी पर अपने सभी पैकेजों को स्थापित करने के लिए विकल्प के साथ उपयोग-पैकेज कोड का उपयोग करना भी शुरू कर दिया है :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आपको अपने वर्तमान में स्थापित पैकेज की सूची देगा।

उसके बाद, साझा करने के लिए केवल एक चीज आपकी इनिट फ़ाइल है। मुझे उम्मीद है इससे मदद मिलेगी।


ओह, मैं देख रहा हूं कि आपने सूची को डंप करने का जवाब दिया। शायद यह आपके उत्तर में अधिक प्रमुख बनाया जाना चाहिए?
वर्दम्मेल्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.