2012-04-15 11 views
37

मैंने पिमैक्स, रस्सी, रोपेमोड, रोपेमैक स्थापित किए थे, और जब मैंने दुर्घटना से pymacs-terminate-services निष्पादित किया, तो मैं संशोधित बफर को सहेज नहीं सका। यह पहली बार मुझसे पूछा - The Pymacs helper died. Restart it? (yes or no)। अगर मैंने "हां" का उत्तर दिया, तो उसने Debugger entered--Lisp error: (error "There is no Pymacs helper!") फेंक दिया। अगर मैं उत्तर "नहीं", फेंक दिया:सहायक हेल्पर मौत का प्रबंधन

Debugger entered--Lisp error: (error "Python: Traceback (most recent call last): 
    File \"/usr/local/lib/python2.7/dist-packages/Pymacs.py\", line 258, in loop 
    value = eval(text) 
    File \"<string>\", line 1, in <module> 
IndexError: list index out of range 
") 

मैं pymacs-load को क्रियान्वित करने, os मॉड्यूल लोड हो रहा है, और Pymacs सहायक पुनः आरंभ सवाल का हाँ उत्तर देकर आस-पास काम करने में कामयाब रहे। बफर बचा लिया गया था, लेकिन फिर मैं मैं फाइल सेव अन्य त्रुटि हर पाने के लिए शुरू कर दिया:

Debugger entered--Lisp error: (error "Python: Traceback (most recent call last): 
    File \"/usr/local/lib/python2.7/dist-packages/Pymacs.py\", line 258, in loop 
    value = eval(text) 
    File \"<string>\", line 1, in <module> 
TypeError: major() takes exactly 1 argument (0 given) 
") 

यह मेरा init-फ़ाइल है:

(load "~/.emacs.d/pymacs.el") 
(autoload 'pymacs-apply "pymacs") 
(autoload 'pymacs-call "pymacs") 
(autoload 'pymacs-eval "pymacs" nil t) 
(autoload 'pymacs-exec "pymacs" nil t) 
(autoload 'pymacs-load "pymacs" nil t) 
(autoload 'pymacs-autoload "pymacs") 
(require 'pymacs) 
(pymacs-load "ropemacs" "rope-") 

Pymacs manual Pymacs सहायक की मौत का वर्णन है। यह बताता है कि मुझे *Pymacs* बफर बंद नहीं करना चाहिए, क्योंकि यह सहायक को मारता है, और अगर हेल्पर की हत्या हो तो Emacs को पुनरारंभ करना चाहिए। यह अस्वीकार्य है क्योंकि मेरे पास समय-समय पर सभी बफर बंद करने की आदत है और शायद ही कभी Emacs को पुनरारंभ करें। मेरे पास अब कई संबंधित प्रश्न हैं:

  • ऐसी समस्याओं को कम करने के लिए पिमाक्स को संभालने का सबसे अच्छा तरीका क्या है? क्या मैं केवल पाइमाक को चलाने के लिए संभव है जब मैं पाइथन के साथ काम करता हूं और फिर सुरक्षित रूप से इसे फिर से समाप्त कर देता हूं?
  • pymacs-terminate-services क्या है और क्या इसे कभी भी चलाया जाना चाहिए?
  • अगर मैं कभी गलती से pymacs-terminate-services चलाता हूं तो मुझे क्या करना चाहिए? त्रुटि संदेश के बिना बफर को सहेजने के लिए before-save-hook को संपादित करने के लिए मुझे विशेष रूप से रूचि है।
+1

इसकी कोशिश नहीं की गई, लेकिन [यह बिट पिमाक्स/contrib/Giorgi/dir] में है (https: // github।कॉम/पिनर्ड/पिमैक्स/ब्लोब/बी 4e462f52566ad51c18f5d65e1db32af1e24bc13/contrib/Giorgi/dotEmacs.py) प्रासंगिक लगता है, शायद ..? – dbr

+1

एक बहुत विस्तृत, व्याकरणिक रूप से सही प्रश्न जिसे एक निर्णायक उत्तर नहीं मिला है ... निश्चित रूप से एक बक्षीस के योग्य है। –

उत्तर

2

सबसे आसान समाधान मैं के बारे में सोच सकते हैं kill-buffer-query-functions हुक का उपयोग करने के *Pymacs* मारे जाने के लिए रोकने के लिए है। इस तरह:

(defun my-pymacs-saver() 
    (if (equal (buffer-name) "*Pymacs*") 
     (yes-or-no-p "Really kill *Pymacs* buffer? ") 
    t)) 

(add-hook 'kill-buffer-query-functions 'my-pymacs-saver) 

यदि आप वास्तव में *Pymacs* बफर या नहीं मारने के लिए चाहते हैं यह के लिए कहेगा। तुम भी यह इस से keybinds से मारने के लिए असंभव बना सकते हैं:

(defun my-pymacs-saver() 
    (if (equal (buffer-name) "*Pymacs*") 
     (progn 
     (message "NEVER kill *Pymacs*!") 
     nil) 
    t)) 

मैं pymacs-terminate-services का उपयोग जबरदस्ती सभी मॉड्यूल फिर से लोड करने। मेरे पास http://www.emacswiki.org/emacs/AntonNazarov में एक फ़ंक्शन है।

शायद आप अधिक प्रसन्न समाप्ति के लिए pymacs-terminate-serviceskill-buffer-hook (स्थानीय रूप से *Pymacs* बफर में) जोड़ सकते हैं। किंतु मुझे यकीन नहीं है। आपके बाकी प्रश्न के लिए, मुझे लगता है कि Pymacs issue tracker में पूछना/अनुरोध करना बेहतर है।

0

यदि आप गलती से * Pymacs * बफर को मारते हैं या pymacs-terminate-services निष्पादित करते हैं तो आप निम्न आदेश निष्पादित करके और प्रॉम्प्ट पर "हाँ" का जवाब देकर प्रक्रिया को पुनर्प्राप्त कर सकते हैं।

(pymacs-load "ropemacs" "rope-") 

आप M-x python-restart साथ सहभागी के नाम से जाना पुनः आरंभ करने के लिए अनुमति देने के लिए अपने init-फ़ाइल समारोह संशोधित कर सकते हैं। इस तरह से पिमाक को पुनरारंभ करना TypeError: major()... त्रुटि से बच जाएगा।

(defun pymacs-restart() 
    (interactive) 
    (pymacs-load "ropemacs" "rope-")) 

(load "~/.emacs.d/pymacs.el") 
(autoload 'pymacs-apply "pymacs") 
(autoload 'pymacs-call "pymacs") 
(autoload 'pymacs-eval "pymacs" nil t) 
(autoload 'pymacs-exec "pymacs" nil t) 
(autoload 'pymacs-load "pymacs" nil t) 
(autoload 'pymacs-autoload "pymacs") 
(require 'pymacs) 
(pymacs-restart) 
संबंधित मुद्दे