2013-02-25 15 views
7

मेरी .emacs init फ़ाइल के साथ काम करते समय, मैं कभी-कभी गलती करता हूं। जब मैं eval-buffer करता हूं, तो मुझे संदेश "पार्सिंग के दौरान फ़ाइल का अंत" मिलता है।मैं Emacs में एक lisp फ़ाइल में त्रुटि का पता कैसे लगा सकता हूं?

मैं Emacs से मुझे त्रुटि का सटीक स्थान बताने के लिए कैसे कहूं?

+5

* इस * प्रकार की त्रुटि के लिए, सटीक स्थान फ़ाइल का अंत है, लेकिन यह बहुत उपयोगी नहीं है :) फ़ाइल को पुन: प्रस्तुत करने का प्रयास करें और देखें कि इंडेंटेशन गलत कहां हो जाता है। –

+2

एंटोन सही है, वे वास्तव में दर्दनाक हैं, लेकिन आप आमतौर पर एक अच्छा लिस्प संपादन मोड का उपयोग करके और बफर पर 'इंडेंट-क्षेत्र' को कॉल करके उनसे बच सकते हैं। जब आप इंडेंटेशन की अपेक्षा नहीं करते हैं तो आप देख सकते हैं कि चीजें गलत क्यों होती हैं। – pmr

+0

यह त्रुटि का अर्थ है कि आपके पास गलत मिलान वाले कोष्ठक हैं। – Barmar

उत्तर

4

ये त्रुटियां वास्तव में पता लगाना बहुत मुश्किल हैं।

मिस्चैचिंग कोष्ठक से बचने के लिए बेहतर प्रयास करें।

  • electric-pair-mode: समापन कोष्ठक स्वचालित रूप से मिलान सम्मिलित (बिल्ट-इन)
  • show-paren-mode: जब बात एक कोष्ठक खत्म हो गया है, पर प्रकाश डाला कई अंतर्निहित और 3 पक्ष नाबालिग मोड है कि आप इस में मदद कर रहे हैं एक मिलान (बिल्ट-इन)
  • rainbow-delimiters-mode: एक अलग चेहरा
  • paredit-mode में कोष्ठक के प्रत्येक स्तर को हाइलाइट करें: सभी समय में संतुलित कोष्टक रखें। आम तौर पर, वर्णों और शब्दों के बजाय Sexps पर संपादन पर ध्यान केंद्रित करें।

मैं इन सभी को सक्षम करने की अनुशंसा करता हूं। एक उचित विन्यास बेमेल कोष्ठक को हराने के लिए इस प्रकार है:

(add-hook 'emacs-lisp-mode-hook 'paredit-mode) 
(add-hook 'emacs-lisp-mode-hook 'rainbow-delimiters-mode) 
(show-paren-mode 1) 
(electric-pair-mode 1) 

Paredit और इंद्रधनुष सीमांकक Melpa से उपलब्ध हैं।

17

पहली बात यह है कि कोष्ठक और स्ट्रिंग कोट्स के संतुलन की जांच करना है।

जीएनयू Emacs में Emacs Lisp के लिए M-x check-parens का उपयोग करें।

अन्य Emacs- जैसे संपादकों के समान आदेश हैं। उदाहरण के लिए LispWorks में M-x Find Unbalanced Parentheses का उपयोग कर सकते हैं।

+0

अब काफी लंबे समय से Emacs का उपयोग कर रहा है, और इस फ़ंक्शन को कभी याद नहीं किया। यह निश्चित रूप से बदल गया क्योंकि अब मुझे पता है कि यह मौजूद है। – PascalVKooten

+0

आप जीवन बचतकर्ता हैं :) – Veera

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