나는 기본적으로 스크립트로 시작해야한다는 말을 http://www.emacswiki.org/emacs/EmacsScripts에 주어진 지시에 따라 이맥스 스크립트를 쓰기 시작했습니다Emacs Lisp : 동일한 regexp가 동일한 수의 그룹으로 두 개의 다른 패턴을 일치시킬 수 있습니까?
:;exec emacs --script "$0" [email protected]
가 지금은 auto-mode-interpreter-regexp' accordingly, to make Emacs scripts automatically loaded with
이맥스 LISP 모드 '를 정의하고 싶습니다.
원래`자동 모드 통역 정규 표현식 '
이 일치하도록 의미되었다 : 등등#! /bin/bash
#! /usr/bin/env perl
과, 따라서 그것은이 하나 :
"\\(?:#![ ]?\\([^ \n]*/bin/env[ ]\\)?\\([^ \n]+\\)\\)"
나는 새를 추가하는 시도 대안으로 정규 표현식 : 전체 문자열을 맞추어
(setq auto-mode-interpreter-regexp
(concat ;; match "#! /bin/bash", "#! /usr/bin/env perl", etc.
"\\(?:#![ ]?\\([^ \n]*/bin/env[ ]\\)?\\([^ \n]+\\)\\)"
;; or
"\\|"
;; match ":;exec emacs "
"\\(?::;[ ]?\\(exec\\)[ ]+\\([^ \n]+\\)[ ]*\\)"))
그러나 이것은, ESP, 그 submatches을 포착하는 데 실패 그 중 두 번째는 통역사를 탐지하는 데 필요합니다. 따라서 두 헤더를 동시에 일치 시키려면 정규 표현식을 혼합했습니다.
(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]+\\)"))
더 잘 수행 했습니까? 고맙습니다.
오, 예, 완전히 잊었습니다. 좋은 전화, 응원! – Thomas