Release 1.3.1.
[skel] / skelrc.h
index f0309db..ec7ab24 100644 (file)
--- a/skelrc.h
+++ b/skelrc.h
@@ -2,16 +2,30 @@
 
 (skel-include "skelrc.c")
 
+(defun skelrc-c-sanitize-guard (s)
+  (setq s (copy-sequence s))
+  (let ((i 0) (l (length s)))
+    (while (< i l)
+      (let ((c (aref s i)))
+       (aset s i (if (eq (char-syntax c) ?w) (upcase c) ?_)))
+      (setq i (1+ i))))
+  s)
+
 (defun skelrc-c-guard-name ()
   (if buffer-file-name
-      (upcase (file-name-sans-extension (file-name-nondirectory
-                                        buffer-file-name)))
+      (skelrc-c-sanitize-guard
+       (concat
+       (let ((pre (or (skelrc-assq 'guard-prefix skel-alist)
+                      (skelrc-assq 'library skel-alist)
+                      (skelrc-assq 'Library skel-alist))))
+         (if pre (concat pre "/")))
+       (file-name-nondirectory buffer-file-name)))
     (skel-lookup 'include-guard-name)))
 
 (setq skel-alist
       (append
        '((preamble . "[[guard]][[c++-guard]][[includes]][[structures]][[functions]]")
-        (guard . "#ifndef [[guard-name]]_H\n#define [[guard-name]]_H\n\n")
+        (guard . "#ifndef [[guard-name]]\n#define [[guard-name]]\n\n")
         (guard-name . (skelrc-c-guard-name))
         (c++-guard . "#ifdef __cplusplus\n  extern \"C\" {\n#endif\n\n")
         (includes . "[[includes-banner]]\n\n[[headers]]")
@@ -21,6 +35,6 @@
         (struct-banner . (skelrc-banner "Data structures"))
         (functions . "[[func-banner]]\n\n")
         (func-banner . (skelrc-banner "Functions provided"))
-        (postamble . "\n\n[[c++-unguard]]#endif")
+        (postamble . "\n[[c++-unguard]]#endif\n")
         (c++-unguard . "#ifdef __cplusplus\n  }\n#endif\n\n"))
        skel-alist))