From aaadf1ffa9b0a336e5428fd93468b2555e527049 Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Sun, 18 Dec 2011 16:18:45 +0000 Subject: [PATCH] skeleton, skelrc, skelrc.script: Variable shebang lines. Organization: Straylight/Edgeware From: Mark Wooding 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. --- Makefile.am | 2 +- skeleton | 2 +- skelrc | 3 ++- skelrc.script | 18 ++++++++++++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 skelrc.script 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)))))) -- [mdw]