skelrc: Shiny new function to return an expanded string.
[skel] / skelrc
diff --git a/skelrc b/skelrc
index f082eb3..43d6052 100644 (file)
--- a/skelrc
+++ b/skelrc
@@ -1,5 +1,13 @@
 ;;; -*-emacs-lisp-*-
 
+(defun skelrc-dribble (msg &rest args)
+  "Write MSG (a `format'-style string, with ARGS) to the debug buffer."
+  (let ((buffer (get-buffer "*skel-debug*")))
+    (and buffer
+        (with-current-buffer buffer
+          (goto-char (point-max))
+          (insert (apply #'format msg args) "\n")))))
+
 (defun skelrc-strip-trailing-whitespace (string)
   "Return STRING, but with trailing whitespace removed.
 
@@ -54,6 +62,23 @@ its chosen major-mode before calling `skel-include'."
   (let ((val (assq key alist)))
     (and val (cdr val))))
 
+(defun skelrc-expand-text (text)
+  "Return the result of expanding TEXT in the current context.
+
+The context is extended with any new associations formed during
+the expansion."
+  (let* ((alist skel-alist)
+        (expanded (with-temp-buffer
+                    (let ((skel-alist alist))
+                      (insert text)
+                      (goto-char (point-min))
+                      (skelrc-dribble "before: alist = `%s'" skel-alist)
+                      (skel-do-fill-in)
+                      (setq alist skel-alist)
+                      (buffer-string)))))
+    (setq skel-alist alist)
+    expanded))
+
 (defun skelrc-prefix-lines (prefix lines)
   "Return LINES, each with PREFIX prepended to the beginning.
 
@@ -125,6 +150,21 @@ License along with [[library-name]]; if not, write to the Free
 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA."))
 
+(setq skelrc-agpl (skelrc-prefix-lines "[[cont-comment]] "
+"[[Program-name]] is free software; you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation; either version 3 of the
+License, or (at your option) any later version.
+
+\[[Program-name]] is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public
+License along with [[program-name]]; if not, see
+<http://www.gnu.org/licenses/>."))
+
 (setq skelrc-bsd (skelrc-prefix-lines "[[cont-comment]] "
 "Copyright (c) [[year]] [[author]]
 All rights reserved.
@@ -167,7 +207,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))
@@ -194,6 +235,7 @@ option) any later version."))
         (gpl . skelrc-gpl)
         (wide-gpl . skelrc-wide-gpl)
         (lgpl . skelrc-lgpl)
+        (agpl . skelrc-agpl)
         (bsd . skelrc-bsd)
         (revisions . ,(concat "[[revision-banner]]\n"
                               "[[cont-comment]]\n"