(add-hook 'find-file-hooks
'(lambda ()
(auto-insert)
))
####
(setq auto-insert-copyright (user-full-name))
(setq auto-insert-alist
'(
((perl-mode . "Perl Program")
nil
"#! /usr/bin/perl -w\n\n"
"# File: " (file-name-nondirectory buffer-file-name) "\n"
"# Time-stamp: <>\n#\n"
"# Copyright (C) " (substring (current-time-string) -4)
" by " auto-insert-copyright "\n#\n"
"# Author: "(user-full-name) "\n#\n"
(progn (save-buffer)
(shell-command (format "chmod +x %s" (buffer-file-name)))
"")
"# Description:\n# " _ "\n"
)
))
####
(define-skeleton ska-skel-perl-sub
"Insert a perl subroutine with arguments."
"Subroutine name: "
"sub " str " {"
\n "my (" ("Argument name: " "$" str ", ") -2 ") = @_;"
"\n"
\n _
\n "}" '(progn (indent-according-to-mode) nil)
\n)
;; any other way to get a time format string?
(require 'time-stamp)
(define-skeleton ska-skel-perl-prog-id
"Insert perl program identification."
(nil)
(insert-char ?# 60) \n
"#" (insert-char ? 18) "PROGRAMM IDENTIFICATION" (insert-char ? 17)
"#"\n
(insert-char ?# 60) \n
"my $program = \"" (file-name-nondirectory
(file-name-sans-extension buffer-file-name))
"\";"\n
"my $filedate=\"" (time-stamp-strftime "%y-%m-%d") "\";"\n
"my $fileversion=\"0.01\";"\n
"my $copyright = \"Copyright (C) "
(substring (current-time-string) -4)
" by " (user-full-name) "\";"\n
"my $title = \"$program $fileversion, $filedate - $copyright\";"
)
(define-skeleton ska-skel-perl-options
"Insert perl program getopt stuff."
(nil)
(save-excursion
(if (re-search-backward "^use" (beginning-of-buffer) t)
(progn (end-of-line)
(newline-and-indent))
(progn (beginning-of-buffer)
(while (string-match "^#" (char-to-string (char-after)))
(forward-line))))
(insert "use Getopt::Long;")
(indent-according-to-mode)
(insert "\n")
nil)
(insert-char ?# 60) \n
"#" (insert-char ? 26) "OPTIONS" (insert-char ? 25)
"#"\n
(insert-char ?# 60) \n
"my $opt_help = 0;"\n
"my $opt_version = 0;"\n
"my $ret = GetOptions("\n
"\"help!\","\n
"\"version!\""\n
");"\n
)
####
(local-set-key '[(control b) (control s)] 'ska-skel-perl-sub)
(local-set-key '[(control b) (control i)] 'ska-skel-perl-prog-id)
(local-set-key '[(control b) (control o)] 'ska-skel-perl-options)
####
C-h f skeleton-insert