diff --git a/vim/plugin/skeleton.vim b/vim/plugin/skeleton.vim index b4f766f..59e545e 100644 --- a/vim/plugin/skeleton.vim +++ b/vim/plugin/skeleton.vim @@ -1,53 +1,81 @@ +" Copyright by Andrea Mistrali +" First version: Who knows? +" Last modified: 2009-04-01T16:55:05 CEST +" +" Synopsis: Templating system for vim +" +" $Id$ +" +" Remember to define in your vimrc the following var +" let g:fullname = 'Your Full Name' +" let g:email = 'your.email@address' +" +" Skeleton files could contain (in the first 20 lines) the following +" 'vars': +" @@LONGNAME@@ - replaced by g:fullname +" @@EMAIL@@ - replaced by g:email +" @@DESCR@@ - Synopsis of file (asked by this plugin +" @@crdate@@ - replaced by creation date +" 2009-04-01T17:03:00 CEST - replaced by last modification date + +" Define template directory +let g:skeletons = '~/.vim/templates' + " Preserve template files augroup newfiles - " First we load templates for the file type - autocmd BufNewFile * ks|call OpenFile()|'s + " First we load templates for the file type + autocmd BufNewFile * ks|call OpenFile()|'s - " Update of "Last Modified" date on writing - autocmd BufWritePre,FileWritePre * ks|call LastMod()|'s + " Update of "Last Modified" date on writing + autocmd BufWritePre,FileWritePre * ks|call LastMod()|'s - " Protect templates, removing write commands - autocmd BufRead,BufNewFile ~/.vim/templates/* au! newfiles + " Protect templates and plugin, removing write commands + autocmd BufRead,BufNewFile ~/.vim/templates/* au! newfiles + autocmd BufRead,BufNewFile */skeleton.vim au! newfiles + autocmd BufWritePre,FileWritePre */skeleton.vim au! newfiles - " Reload .vimrc, after modifications - autocmd BufWritePost ~/.vimrc so ~/.vimrc - if has("gui_running") - autocmd BufWritePost ~/.gvimrc so ~/.gvimrc - endif + " Reload .vimrc, after modifications + autocmd BufWritePost ~/.vimrc so ~/.vimrc + if has("gui_running") + autocmd BufWritePost ~/.gvimrc so ~/.gvimrc + endif - " Set up python support - "au FileType python source ~/.vim/addon/python.vim + " Set up python support augroup END -" Function to modify "Last Modified" date. Works on first 10 lines +" Function to modify "Last Modified" date. Works on first N lines function! LastMod() - if line("$") > 20 - let l = 20 - else - let l = line("$") - endif - execute "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " . - \ strftime("%d:%b:%Y %H:%M") + if line("$") > 20 + let l = 20 + else + let l = line("$") + endif + execute "1," . l . "s/@@lmdate@@/" . + \ strftime("%FT%X %Z") . "/e" endfunction " Function to open a file and set some defaults function! OpenFile() - let s:filename=expand("") - let l:ext=fnamemodify(s:filename, ":e") - let l:skel = "~/.vim/templates/skeleton.".l:ext - if filereadable(fnamemodify(l:skel,":p")) - execute "0r" l:skel - let s:syn=input("Synopsis: ") - if line("$") > 20 - let l = 20 - else - let l = line("$") - endif - execute "1," . l . "g/First version: /s/First version: .*/First version: ". - \ strftime("%d:%b:%Y %H:%M") - execute "1," . l . "g/Synopsis: /s/Synopsis: .*/Synopsis: ". - \ s:syn - endif + let s:filename=expand("") + let l:ext=fnamemodify(s:filename, ":e") + let l:skel = g:skeletons."/skeleton.".l:ext + if filereadable(fnamemodify(l:skel,":p")) + execute "0r" l:skel + let s:syn=input("Synopsis: ") + if line("$") > 20 + let l = 20 + else + let l = line("$") + endif + execute "1," . l . "s/@@DESCR@@/" . + \ s:syn + execute "1," . l . "s/@@crdate@@/" . + \ strftime("%FT%X %Z") . "/e" + execute "1," . l . "s/@@LONGNAME@@/" . + \ g:fullname . "/e" + execute "1," . l . "s/@@EMAIL@@/" . + \ g:email . "/e" + endif endfunction diff --git a/vim/templates/skeleton.c b/vim/templates/skeleton.c index 1166b82..9211a0f 100644 --- a/vim/templates/skeleton.c +++ b/vim/templates/skeleton.c @@ -1,13 +1,12 @@ /* -*- coding: latin-1 -*- -Copyright by Andrea Mistrali . -First version: -Last modified: + Copyright by @@LONGNAME@@ <@@EMAIL@@> + First version: @@crdate@@ + Last modified: @@lmdate@@ -Synopsis: + Synopsis: @@DESCR@@ -$Id$ */ @@ -15,5 +14,5 @@ $Id$ #include int main(int argc, char *argv[]) { - return 0 + return 0 } diff --git a/vim/templates/skeleton.pl b/vim/templates/skeleton.pl index c93a449..c4a7910 100644 --- a/vim/templates/skeleton.pl +++ b/vim/templates/skeleton.pl @@ -1,10 +1,10 @@ #!/usr/bin/env perl # -*- coding: latin-1 -*- -# Copyright by Andrea Mistrali . -# First version: -# Last modified: +# Copyright by @@LONGNAME@@ <@@EMAIL@@> +# First version: @@crdate@@ +# Last modified: @@lmdate@@ # -# Synopsis: +# Synopsis: @@DESCR@@ # # $Id$ diff --git a/vim/templates/skeleton.py b/vim/templates/skeleton.py index aa9f3ca..82a0fc3 100644 --- a/vim/templates/skeleton.py +++ b/vim/templates/skeleton.py @@ -3,18 +3,18 @@ """ - Copyright by Andrea Mistrali . - First version: - Last modified: + Copyright by @@LONGNAME@@ <@@EMAIL@@> + First version: @@crdate@@ + Last modified: @@lmdate@@ - Synopsis: + Synopsis: @@DESCR@@ $Id$ """ __version__ ='0.1' -__author__ ='Andrea Mistrali ' +__author__ ='@@LONGNAME@@ <@@EMAIL@@>' def main(): diff --git a/vim/templates/skeleton.sh b/vim/templates/skeleton.sh index 16e6b87..af920b2 100644 --- a/vim/templates/skeleton.sh +++ b/vim/templates/skeleton.sh @@ -1,10 +1,10 @@ #!/bin/sh # -*- coding: latin-1 -*- -# Copyright by Andrea Mistrali . -# First version: -# Last modified: +# Copyright by @@LONGNAME@@ <@@EMAIL@@> +# First version: @@crdate@@ +# Last modified: @@lmdate@@ # -# Synopsis: +# Synopsis: @@DESCR@@ # # $Id$ diff --git a/vim/vimrc b/vim/vimrc index 30171c0..f6b59c1 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -2,6 +2,7 @@ " General Setup " " $Id$ +" set nocompatible " Use Vim defaults (much better!) set backspace=indent,eol,start " allow backspacing over everything @@ -46,6 +47,12 @@ set fileformat=unix set mouse=a colorscheme inkpot +" """"""""" +" User Info +" """"""""" +let g:fullname = 'Andrea Mistrali' +let g:email = 'am@am.cx' + " """"""""""""""""""""""""" " COMPLETION & INDENTATION