2010-11-10 9 views
5

मैं .emacs सेट अप करने का प्रयास कर रहा हूं ताकि makefile अक्षरों से शुरू होने वाली कोई भी फ़ाइल इसे मेकफ़ाइल मोड में सेट करे। जैसे makefile-something मेकफ़ाइल मोड में होना चाहिए।लाइन के काम की शुरुआत से मेल खाने के लिए मेरे Emacs नियमित अभिव्यक्ति^के साथ क्यों नहीं है?

यह काम नहीं करता है:

(setq auto-mode-alist (cons '("^makefile" . makefile-mode) auto-mode-alist)) 

लेकिन इस करता है:

(setq auto-mode-alist (cons '("makefile" . makefile-mode) auto-mode-alist)) 

किसी को भी बताएगा कि ऐसा क्यों कर सकते हैं?

उत्तर

7

यह है फ़ाइल नाम के सामने एक पथ घटक है क्योंकि वहाँ, कोशिश:

"/makefile[^/]*$" 

देख http://www.gnu.org/s/emacs/manual/html_node/elisp/Auto-Major-Mode.html (पृष्ठ के नीचे)

ईडीआई: ठीक किया regexp शॉन टिप्पणी के अनुसार

+0

धन्यवाद, यह काम किया। –

+1

वह रेगेक्स भी/foo/makefiles/bar जैसी चीजों से मेल खाएगा। मुझे लगता है कि आप चाहते हैं "/ makefile [^ /] * $"। – Sean

+0

सौभाग्य से मेरे पास/foo/makefiles/bar जैसे कुछ भी नहीं है, लेकिन सुधार के लिए शॉन धन्यवाद। –

1

तो यह केवल एक शिक्षित अनुमान है, लेकिन मैं ध्यान दें कि auto-mode-alist में अन्य regexps कि फ़ाइल नाम की शुरुआत से मिलान करना चाहते का उपयोग नहीं करते ^, वे / का उपयोग करें। उदाहरण के लिए:

("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode) 

उस आधार पर (Emacs 23.2.1 से), मैं सोच रहा हूँ शायद regexp फ़ाइल, नहीं basename की पूर्ण पथ नाम लिए आवेदन किया है। तो

(setq auto-mode-alist (cons '("/makefile" . makefile-mode) auto-mode-alist)) 

इसके बजाय प्रयास करें।

0

बस सुविधा के लिए,

(add-to-list 'auto-mode-alist ... 
+0

टिप के लिए धन्यवाद। मेरा emacs ज्ञान बहुत गरीब है। –

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

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