2009-06-27 22 views
7

मैं सबसे कम समझ में "प्रोजेक्ट फ़ाइल" कहता हूं। मेरे पास कुछ पायथन परियोजनाएं हैं जो मैं विंडोज के लिए Emacs W32 का उपयोग करके रोपेमैक के साथ काम करता हूं। आदर्श क्या होगा यदि मेरे पास आइकन हो, तो मैं अपने डेस्कटॉप पर Emacs खोलने के लिए क्लिक कर सकता हूं, रस्सी प्रोजेक्ट खोल सकता हूं, और उस प्रोजेक्ट की शीर्ष-स्तरीय निर्देशिका में स्पीड बार सेट कर सकता हूं। तो मैं भी अगले परियोजना को अपने स्वयं के emacs में एक ही तरीके से स्थापित करने का एक तरीका हो सकता है (लेकिन उस परियोजना के लिए)। बेशक, यह भी स्वीकार्य है अगर कोई emacs कमांड या शेल कमांड था जो मैं अपने डेस्कटॉप पर एक आइकन के बजाय उसी प्रभाव को प्राप्त करने के लिए उपयोग कर सकता था।क्या Emacs में "प्रोजेक्ट फ़ाइल" बनाने का कोई तरीका है?

क्या ऐसा करने का कोई तरीका है? मेरे पास बिल्कुल कोई elisp-fu है। :-(

उत्तर

6

आप सब कुछ सत्र जिस तरह से आप एक परियोजना के लिए चाहते हैं की स्थापना हो सकता है, तो इसका जवाब मैं desktop.el का उपयोग कर के बारे में पोस्ट का उपयोग करें और नामित:

What alternate session managers are available for Emacs?

1

आप अपने आप को bash/cmd.exe में रोल कर सकते हैं। विंडोज़ emacs वितरण runemacs.bat नामक एक .bat फ़ाइल के साथ आता है जो फ़ाइलों को तर्क के रूप में खोलने के लिए स्वीकार करता है। एक छोटी स्क्रिप्ट लिखें और यह सक्षम होना चाहिए एक आइकन से सब कुछ खोलने के लिए।

2

मैं अपने लिए निम्नलिखित "समाधान" का उपयोग करता हूं: एक प्रोजेक्ट रूट को उस निर्देशिका द्वारा परिभाषित किया जाता है जिसमें Makefile होता है। मैंने मोड विशिष्ट एलिसिप फ़ंक्शन में F12 को बाध्य किया है जो "संकलित करता है" प्रोजेक्ट मेकफ़ाइल का पहला लक्ष्य बनाकर प्रोजेक्ट। यह वर्तमान फ़ाइल की निर्देशिका से ऊपर की तरफ जा रहा है।

यह सेटअप का एक छोटा सा है, लेकिन आप Neve आर को आपकी .metadata निर्देशिका का पुनर्निर्माण करना होगा जैसा अक्सर ग्रहण के साथ होता था। और एक बार स्थापित होने के बाद, आपको बस उचित मेकफ़ाइल रखना होगा और आपके पास अपनी परियोजनाएं होंगी।

(defun get-makefile-recursively-higher() 
    (loop for i below 100 for cwd = (expand-file-name default-directory) 
     then next for next = (expand-file-name (concat cwd "/..")) for file = 
     (concat cwd "/" "Makefile") do (cond ((and (file-exists-p file)) 
              (return file))) until (equal cwd next)) 
) 

यह तो जैसे प्रयोग किया जाता है LaTeX और अजगर मोड द्वारा इस प्रकार है:

(defun py-execute-prog (&optional target) 
    "Invoke python on the file being edited in the current buffer using 
    arguments obtained from the minibuffer. It will save all of the modified 
    buffers before trying to execute the file." 
    (interactive) 
    (let* (makefile file cmd) 
    (setq makefile (get-makefile-recursively-higher)) 
    (setq file (buffer-file-name (current-buffer))) 
    (setq cmd (concat "make -f " makefile)) 
    (setq default-directory (file-name-directory makefile)) 

    (save-some-buffers (not py-ask-about-save) nil) 
    (setq py-pdbtrack-do-tracking-p t) 
    (if (get-buffer py-output-buffer) 
     (kill-buffer py-output-buffer)) ; Get rid of buffer if it exists. 
    (global-unset-key "\C-x\C-l") 
    (global-unset-key "\C-x\C-p") 
    (global-unset-key "\C-x\C-e") 
    (global-unset-key "\C-x\C-n") 
    (global-set-key "\C-x\C-l" 'py-last-exception) 
    (global-set-key "\C-x\C-p" 'py-previous-exception) 
    (global-set-key "\C-x\C-e" 'py-current-line-exception) 
    (global-set-key "\C-x\C-n" 'py-next-exception) 
    (define-key comint-mode-map [mouse-3] 'py-current-line-exception) 
    (make-comint "Python Output" "make" nil "-f" makefile) 
    (if (not (get-buffer py-output-buffer)) 
     (message "No output.") 
     (setq py-exception-buffer (current-buffer)) 
     (pop-to-buffer py-output-buffer) 
    ))) 


(defun make-tex (&optional target) 
    (interactive) 
    (let (makefile cmd) 
    (setq makefile (get-makefile-recursively-higher)) 
    (save-buffer) 
    (TeX-save-document (TeX-master-file)) 

    (setq cmd (concat "make -j4 -f " makefile " LATEXPARAM=\"-halt-on-error -file-line-error\"" 
         " TEXMASTER=" (expand-file-name (TeX-master-file)) ".tex" 
         " TEXMASTERDIR=" (file-name-directory makefile) "/")) 

    (when (stringp target) 
     (setq cmd (concat cmd " " target)) 
    ) 
    (ad-activate-regexp "auto-compile-yes-or-no-p-always-yes") 
    (compile cmd) 
    (ad-deactivate-regexp "auto-compile-yes-or-no-p-always-yes") 
    ) 
) 
2

eproject है, लेकिन ऐसा लगता है कि यह बहुत ही कम दस्तावेज है।

4

मैं वास्तव में इस समस्या के समाधान पर काम कर रहा हूं। मेरे पास हमेशा फाइलों का एक समूह होता था जिसे मैं एक ही समय में खोलना/बंद करना चाहता था, साथ ही एक मैजिक-स्टेटस विंडो, एक थका हुआ बफर आदि खोलने जैसी चीजें करता हूं। मैंने मेटाप्रोजेक्ट नामक अपने प्रोजेक्ट मोड पर शुरुआत की है। यह शुरुआती चरणों में है, लेकिन यह कार्यात्मक है कि मैं इसे परियोजना समूहों के लिए अब काम पर कर रहा हूं।

यहाँ देखें: http://nafai77.github.com/metaproject/

क्या Git में है, बहुत स्थिर है, हालांकि कम से प्रलेखित। मैं जल्द ही यहां फिर से काम करना शुरू कर रहा हूं। वर्तमान में मेरे पास एक छोटे से प्लग-इन आर्किटेक्चर की मूल बातें हैं, इसलिए आप प्रोजेक्ट ओपन पर किए जा सकने वाले कस्टम क्रियाएं पंजीकृत कर सकते हैं।

+0

अच्छा है कि लोग उस पर काम कर रहे हैं! मुझे एक वाणिज्यिक कोड संपादक और emacs के लिए बहुत नया उपयोग किया जाता है, मुझे कर्सर के नीचे क्या है, इस पर निर्भर करता है कि प्रोजेक्ट फाइलों, स्वत: पूर्णता, फ़ंक्शन प्रोटोटाइप का पूर्वावलोकन सीमित होना पसंद है ... ये पहले से मौजूद हैं अनुमान लगाओ, लेकिन उन्हें एक परियोजना की सामग्री तक सीमित रखने के लिए मुझे ऐसा नहीं लगता है। – Gauthier

1

http://www.emacswiki.org/emacs/CategoryProgrammerUtils#ProjectSupport देखें। ऐसे कई पैकेज हैं जो "परियोजनाओं" का प्रबंधन करते हैं। मैं एमके-प्रोजेक्ट का पक्ष लेता हूं, लेकिन फिर, मैंने इसे लिखा। ;-)

0

आप डेस्कटॉप बुकमार्क्स, डायर बुकमार्क्स, या बुकमार्क-लिस्ट बुकमार्क्स का उपयोग कर सकते हैं जो आप चाहते हैं - Bookmark+ देखें। आप केवल राज्य और सेटअप प्राप्त करने के लिए एक ही बुकमार्क में कोड और एकाधिक बुकमार्क को समाहित कर सकते हैं।

यह भी देखें: Iciclessupport for projects अधिक विकल्पों के लिए।

संबंधित मुद्दे