From: Mark Wooding Date: Sun, 18 Dec 2011 16:18:45 +0000 (+0000) Subject: skeleton, skelrc, skelrc.script: Variable shebang lines. X-Git-Tag: 1.2.4~1 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/skel/commitdiff_plain/aaadf1ffa9b0a336e5428fd93468b2555e527049 skeleton, skelrc, skelrc.script: Variable shebang lines. Tweak the general skeleton to allow a completely variable first line (defaulting to `new-comment' as before). Introduce a new `skelrc.script' which fills in a shebang line instead, and sets the major mode from it using `interpreter-mode-alist' in the proper way. --- diff --git a/Makefile.am b/Makefile.am index 25fb87e..d92d38d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -73,7 +73,7 @@ skel_DATA += skelrc.scm skel_DATA += skelrc.el ## Scripting languages -skel_DATA += skelrc.shelly +skel_DATA += skelrc.shelly skelrc.script skel_DATA += skelrc.sh skel_DATA += skelrc.py skelrc.pyx skel_DATA += skelrc.pl skelrc.pm diff --git a/skeleton b/skeleton index 7ccd4df..2d28c1b 100644 --- a/skeleton +++ b/skeleton @@ -1,4 +1,4 @@ -[[new-comment]] -*-[[emacs-mode]]-*- +[[first-line]] [[cont-comment]] [[cont-comment]] [[purpose]] [[cont-comment]] diff --git a/skelrc b/skelrc index f082eb3..86096cf 100644 --- a/skelrc +++ b/skelrc @@ -167,7 +167,8 @@ option) any later version.")) (setq skel-alist (append - `((emacs-mode . (skelrc-decode-major-mode)) + `((first-line . "[[new-comment]] -*-[[emacs-mode]]-*-") + (emacs-mode . (skelrc-decode-major-mode)) (year . (substring (current-time-string) 20 24)) (header . "[[licence]][[preamble]]") (basename . (skel-basename)) diff --git a/skelrc.script b/skelrc.script new file mode 100644 index 0000000..e6c6b03 --- /dev/null +++ b/skelrc.script @@ -0,0 +1,18 @@ +;;; -*-emacs-lisp-*- + +(skel-include "skelrc.shelly") +(setq skel-alist + (append + '((first-line . "#! [[shebang-line]]")) + skel-alist)) + +(let ((alist interpreter-mode-alist) + (interp (skel-lookup "shebang-line"))) + (catch 'found + (save-match-data + (while alist + (if (string-match (caar alist) interp) + (progn + (skelrc-force-mode (cdar alist)) + (throw 'found nil))) + (setq alist (cdr alist))))))