skelrc: Apply comment-block prefix to licence texts programmatically.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 18 Dec 2011 16:12:29 +0000 (16:12 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 18 Dec 2011 16:12:29 +0000 (16:12 +0000)
This makes them look better, and also makes it easier for Emacs to
parse them.  We still need a few (previously missing) escapes in order
to help Emacs find the ends of the strings properly, but it's much
easier to read now.

skelrc

diff --git a/skelrc b/skelrc
index d23c96b..3248571 100644 (file)
--- a/skelrc
+++ b/skelrc
@@ -54,95 +54,113 @@ its chosen major-mode before calling `skel-include'."
   (let ((val (assq key alist)))
     (and val (cdr val))))
 
+(defun skelrc-prefix-lines (prefix lines)
+  "Return LINES, each with PREFIX prepended to the beginning.
+
+If the LINES end with a newline character, there is not considered to be a
+final empty line.  When prepended to an empty line, trailing whitespace in
+the PREFIX is removed."
+  (with-temp-buffer
+    (insert lines)
+    (goto-char (point-min))
+    (while (< (point) (point-max))
+      (insert prefix)
+      (and (looking-at "\n")
+          (delete-horizontal-space t))
+      (forward-line))
+    (buffer-string)))
+
 (defun skelrc-component ()
+  "Return a suitable a `This file is part of ...' line."
   (if (assq 'full-title skel-alist)
 "[[cont-comment]] This file is part of [[full-title]].
-[[cont-comment]]\n"
+\[[cont-comment]]\n"
     ""))
 
-(setq skelrc-gpl
-"[[cont-comment]] [[Program-name]] is free software; you can redistribute it and/or modify
-[[cont-comment]] it under the terms of the GNU General Public License as published by
-[[cont-comment]] the Free Software Foundation; either version 2 of the License, or
-[[cont-comment]] (at your option) any later version.
-[[cont-comment]]
-[[cont-comment]] [[Program-name]] is distributed in the hope that it will be useful,
-[[cont-comment]] but WITHOUT ANY WARRANTY; without even the implied warranty of
-[[cont-comment]] MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-[[cont-comment]] GNU General Public License for more details.
-[[cont-comment]]
-[[cont-comment]] You should have received a copy of the GNU General Public License
-[[cont-comment]] along with [[program-name]]; if not, write to the Free Software Foundation,
-[[cont-comment]] Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.")
-
-(setq skelrc-wide-gpl                  ;Version for wide program names
-"[[cont-comment]] [[Program-name]] is free software; you can redistribute it and/or modify
-[[cont-comment]] it under the terms of the GNU General Public License as published by
-[[cont-comment]] the Free Software Foundation; either version 2 of the License, or
-[[cont-comment]] (at your option) any later version.
-[[cont-comment]]
-[[cont-comment]] [[Program-name]] is distributed in the hope that it will be useful,
-[[cont-comment]] but WITHOUT ANY WARRANTY; without even the implied warranty of
-[[cont-comment]] MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-[[cont-comment]] GNU General Public License for more details.
-[[cont-comment]]
-[[cont-comment]] You should have received a copy of the GNU General Public License
-[[cont-comment]] along with [[program-name]]; if not, write to the Free
-[[cont-comment]] Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-[[cont-comment]] MA 02111-1307, USA.")
-
-(setq skelrc-lgpl
-"[[cont-comment]] [[Library-name]] is free software; you can redistribute it and/or modify
-[[cont-comment]] it under the terms of the GNU Library General Public License as
-[[cont-comment]] published by the Free Software Foundation; either version 2 of the
-[[cont-comment]] License, or (at your option) any later version.
-[[cont-comment]]
-[[cont-comment]] [[Library-name]] is distributed in the hope that it will be useful,
-[[cont-comment]] but WITHOUT ANY WARRANTY; without even the implied warranty of
-[[cont-comment]] MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-[[cont-comment]] GNU Library General Public License for more details.
-[[cont-comment]]
-[[cont-comment]] You should have received a copy of the GNU Library General Public
-[[cont-comment]] License along with [[library-name]]; if not, write to the Free
-[[cont-comment]] Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-[[cont-comment]] MA 02111-1307, USA.")
-
-(setq skelrc-bsd
-"[[cont-comment]] Copyright (c) [[year]] [[author]]
-[[cont-comment]] All rights reserved.
-[[cont-comment]]
-[[cont-comment]] Redistribution and use in source and binary forms, with or without
-[[cont-comment]] modification, are permitted provided that the following conditions are
-[[cont-comment]] met:
-[[cont-comment]]
-[[cont-comment]] 1. Redistributions of source code must retain the above copyright
-[[cont-comment]]    notice, this list of conditions and the following disclaimer.
-[[cont-comment]]
-[[cont-comment]] 2, Redistributions in binary form must reproduce the above copyright
-[[cont-comment]]    notice, this list of conditions and the following disclaimer in the
-[[cont-comment]]    documentation and/or other materials provided with the distribution.
-[[cont-comment]]
-[[cont-comment]] 3. The name of the authors may not be used to endorse or promote
-[[cont-comment]]    products derived from this software without specific prior written
-[[cont-comment]]    permission.
-[[cont-comment]]
-[[cont-comment]] THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-[[cont-comment]] WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-[[cont-comment]] MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
-[[cont-comment]] NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-[[cont-comment]] INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-[[cont-comment]] (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-[[cont-comment]] SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-[[cont-comment]] HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-[[cont-comment]] STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-[[cont-comment]] ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-[[cont-comment]] POSSIBILITY OF SUCH DAMAGE.
-[[cont-comment]]
-[[cont-comment]] Instead of accepting the above terms, you may redistribute and/or modify
-[[cont-comment]] this software under the terms of either the GNU General Public License,
-[[cont-comment]] or the GNU Library General Public License, published by the Free
-[[cont-comment]] Software Foundation; either version 2 of the License, or (at your
-[[cont-comment]] option) any later version.")
+(setq skelrc-gpl (skelrc-prefix-lines "[[cont-comment]] "
+"[[Program-name]] is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with [[program-name]]; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA."))
+
+(setq skelrc-wide-gpl (skelrc-prefix-lines "[[cont-comment]] "
+;;Version for wide program names
+"[[Program-name]] is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with [[program-name]]; if not, write to the Free
+Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+MA 02111-1307, USA."))
+
+(setq skelrc-lgpl (skelrc-prefix-lines "[[cont-comment]] "
+"[[Library-name]] is free software; you can redistribute it and/or modify
+it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+\[[Library-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 Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+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-bsd (skelrc-prefix-lines "[[cont-comment]] "
+"Copyright (c) [[year]] [[author]]
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2, Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. The name of the authors may not be used to endorse or promote
+   products derived from this software without specific prior written
+   permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+\(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+Instead of accepting the above terms, you may redistribute and/or modify
+this software under the terms of either the GNU General Public License,
+or the GNU Library General Public License, published by the Free
+Software Foundation; either version 2 of the License, or (at your
+option) any later version."))
 
 (defun skel-basename ()
   (file-name-sans-extension (file-name-nondirectory buffer-file-name)))