मैं जो मूल रूप से कहना है कि अपनी स्क्रिप्ट के साथ शुरू कर देना चाहिए http://www.emacswiki.org/emacs/EmacsScripts में दिए गए दिशा-निर्देश, के अनुसार Emacs स्क्रिप्ट लेखन शुरू कर दिया है:Emacs Lisp: क्या समान regexp समूह के समान संख्या के साथ दो अलग-अलग पैटर्न मिलान कर सकता है?
:;exec emacs --script "$0" [email protected]
अब मैं auto-mode-interpreter-regexp' accordingly, to make Emacs scripts automatically loaded with
Emacs-तुतलाना मोड 'को अनुकूलित करना चाहते हैं।
मूल `ऑटो मोड-दुभाषिया-regexp 'मैच के लिए चाहिए था:
#! /bin/bash
#! /usr/bin/env perl
और इतने पर, और इस प्रकार यह इस एक था:
"\\(?:#![ ]?\\([^ \n]*/bin/env[ ]\\)?\\([^ \n]+\\)\\)"
मैं नया जोड़ने की कोशिश की एक विकल्प के रूप regexp:
(setq auto-mode-interpreter-regexp
(concat ;; match "#! /bin/bash", "#! /usr/bin/env perl", etc.
"\\(?:#![ ]?\\([^ \n]*/bin/env[ ]\\)?\\([^ \n]+\\)\\)"
;; or
"\\|"
;; match ":;exec emacs "
"\\(?::;[ ]?\\(exec\\)[ ]+\\([^ \n]+\\)[ ]*\\)"))
लेकिन इस एक, पूरी स्ट्रिंग मिलान करते हुए, अपने submatches पर कब्जा करने में विफल रहा है, esp ईसाई रूप से दूसरा जो दुभाषिया का पता लगाने के लिए आवश्यक है।
(setq auto-mode-interpreter-regexp
(concat ;; match "#!" or ":;"
"\\(?:#!\\|:;\\)"
;; optional spaces
"[ ]?"
;; match "/bin/bash", "/usr/bin/env" or "exec"
"\\(\\[^ \n]*/bin/env[ ]\\|exec[ ]\\)?"
;; match interpreter
"\\([^ \n]+\\)"))
मैं बेहतर किया है किया जा सका: इस प्रकार, मैं regexp ही समय में दोनों हेडर मैच के लिए मिश्रित है? धन्यवाद।
ओह, हाँ, मैं पूरी तरह से इसके बारे में भूल गया। अच्छा कॉल, हुयायुआन! – Thomas