[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: vimrc for perl programming



OK here is what I have now (Sorry for long posting).  It seems to be
functioning OK now.  The stuff I was originally wondering about was the
filetype plugins etc.  So basically the line:
filetype plugin indent on
was what I was originally after.  But now after doing much more
research, I have put in a whole heap of other stuff including some use
of skeleton files.

I would love to be able to work out how to make vim only run the
UpdateLastModifiedDate() function I wrote (see below) when there is a
line in the file declaring me as the author.  I have tried various
things but can't seem to get it to do what I want.  The line looks like:
#  Author:          Mark Devin <mdevin@ozemail.com.au>

So if anyone can give me a clue here on how to include some sort of if
clause in the function to check that there is this line, before trying
to update the Last modified: tag, I would be grateful.

Anyway here is my new .vimrc:

"""""""""""""""""""""""""""""" VIM """""""""""""""""""""""""""""""""""""

set nocompatible	" Be vim not vi
set fileformat=unix	" Convert to unix format

" Debian has main helpfile gzipped.  Other helpfiles stated in tags-file
set helpfile=$VIMRUNTIME/doc/help.txt.gz


"""""""""""""""""""""""" Interface settings """"""""""""""""""""""""""""

set backspace=2		" Allow backspacing over everything in insert mode
set autoindent	        " Use indent of previous line for new line
set nobackup		" Don't keep a backup file
set history=50		" keep 50 commands and 50 search patterns in history
set ruler		" show the cursor position all the time
set showcmd             " Show (partial) command in status line
set incsearch           " Display the match for search when partway typed
set noignorecase        " Search case sensitive
set showmatch           " Show matching parentheses, braces, and brackets
set showmode            " Show INSERT/REPLACE/...
set title               " Show title in window
set nowrap              " Don't wrap long lines
set sidescroll=10       " See a context of 10 chars when scrolling sideways
set pastetoggle=<F4>    " press <F4> before pasting to stop auto-indenting
set viminfo='20,\"50	" read/write .viminfo file, no more than 50 lines

set tabstop=8           " tabs are always 8 characters


""""""""""""""""""""""""""""" Mappings """""""""""""""""""""""""""""""""

map Q gq                    " Q command does gq operation

" Make "p" in Visual mode overwrite selected text with previously yanked
vnoremap p <Esc>:let current_reg = @"<CR>gvs<C-R>=current_reg<CR><Esc>


""""""""""""""""""""""" Syntax highlighting """"""""""""""""""""""""""""

if &t_Co > 2 || has("gui_running")  " If colours available
    syntax on                       " Switch on Syntax highlighting
    set hlsearch                    " Highlight matches
endif

" Switch on Filetype detection, Use filetype plugin files, Use indent files
filetype plugin indent on


"""""""""""""""""""""""" Function Definitions """"""""""""""""""""""""""

function! SetNewFileDetails()
    if line("$") > 20
        let l = 20
    else
        let l = line("$")
    endif
    exe "1," . l . "g/Written: /s/Written: .*/Written:         " .
    	\ strftime("%B %d, %Y")
    exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified:   " .
        \ strftime("%B %d, %Y")
    exe "1," . l . "g/Filename: /s/Filename: .*/Filename:        " .
        \ expand("%:t")
endfunction

function! UpdateLastModifiedDate()
    if line("$") > 20
        let l = 20
    else
        let l = line("$")
    endif
    exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified:   " .
        \ strftime("%B %d, %Y")
endfunction


""""""""""""""""""""""""""" Autocommands """""""""""""""""""""""""""""""

" Checks if the '" mark is defined, and jumps to it
autocmd BufReadPost *
    \ if line("'\"") > 0 && line("'\"") <= line("$") |
    \     exe "normal g`\"" |
    \ endif

au FileType text setlocal tw=78 fo+=n

augroup Programming
    au!
    au FileType c,cpp,java,perl,python,sh setlocal sts=4 sw=4 et tw=78
    au FileType mail setlocal fo+=n
    au FileType vim setlocal sts=4 sw=4 et

    """""""""""""""""""" New File Skeletons """"""""""""""""""""""""
    au BufNewFile *.c 0read ~/.vim/skeletons/c.c |
        \ call SetNewFileDetails()
    au BufNewFile *.cc 0read ~/.vim/skeletons/cc.cc |
        \ call SetNewFileDetails()
    au BufNewFile *.h 0read ~/.vim/skeletons/h.h |
        \ call SetNewFileDetails()
    au BufNewFile *.java 0read ~/.vim/skeletons/java.java |
        \ call SetNewFileDetails()
    au BufNewFile *.pl 0read ~/.vim/skeletons/pl.pl |
        \ call SetNewFileDetails()
    au BufNewFile *.sh 0read ~/.vim/skeletons/sh.sh |
        \ call SetNewFileDetails()

    """"""""""""""""""" Update Last Modified Date """"""""""""""""""""""
    au BufWritePre,FileWritePre *.c,*.cc,*.h,*.java,*.pl,*.sh
        \ ks | call UpdateLastModifiedDate() | 's

augroup END

Attachment: pgp8NmETYlQQV.pgp
Description: PGP signature


Reply to: