" Vimrc; which is necessary by itself for compatibility
"version 6.1
"set shell=cmd
set comments=sr:/*,mb:*,el:*/,://,b:#,:%,:XCOMM,n:>,fb:-
set smartindent             
set dictionary=$VIM\vim_dictionary
set autowrite
set cinwords=if,else,while,do,for,switch,elseif,case,otherwise,try,catch
set ignorecase
set infercase
set isfname+=@-@
set nolist
set noreadonly
set notagbsearch
set showmatch
set shiftwidth=3
set visualbell
set expandtab
set smarttab
set ruler
set laststatus=2
"set formatprg=$VIM\par\ 70p
set backup
set backupdir=d:\temp
set backupext=.bak
set selection=old
set autochdir

set tags=.\tags,$VIM\doc
"nmap <C-]> :norm ebyw:tag /"
set formatoptions=tcqr2
set cpoptions+=%

set scrolloff=5
set incsearch
set smartcase
set tw=0
set nowrap
set wildmenu
set hidden
" for dictionary tab-completion
"set complete-=k complete+=k 
set complete+=s*.py 
" this give auto exit from INSERT mode w/o <ESC> w/ 2000 msec time-out
"au CursorHoldI * stopinsert
"set ut=2000
:filetype plugin on
"setclipboard+=unnamed

"
" maps for all files
"
cmap <C-Space> <ESC>
imap <M-9>  ()ha
imap <M-[>  []ha
imap <M-{>  {}ha
imap <C-Space> <ESC>:w<CR>
imap <DEL> <ESC>:w<CR>
nmap <F4> :normal ggVG<CR>
nmap <C-Space>  :w<CR>
nmap <DEL>  :w<CR>
nmap <Space>  jk:
vmap <DEL> <ESC>`>
imap <M-k> <right>
imap <M-h> <left>
imap ,, ()<ESC>ha
imap ,b []<ESC>ha
"imap ,c {}<ESC>ha
vmap ,b v`>a]`<i[
vmap ,, v`>a)`<i(i
vmap ,c v`>a}`<i{i
imap jl <C-O>%<C-O>%<C-O>a
imap jj <ESC>:w<CR>
nmap ,f :FuzzyFinderBuffer

" for dictionary tab-completion
"imap <TAB> <C-n>
nmap <Space>  :
"highlight and search highlighted text
vmap * /<C-R>*/<CR><ESC>
"
"when reading new/existing LaTeX file
"
autocmd BufRead,BufNewFile *.tex set tw=70
"autocmd BufRead,BufNewFile *.tex set formatprg=~/bin/par\ 70p
autocmd BufRead,BufNewFile *.tex vmap ,, v`>a}`<i{i
autocmd BufRead,BufNewFile *.tex map ,d Yp:s/begin/end/O
autocmd BufRead,BufNewFile *.tex,*.c,*.cc,*.pl imap {{  {}ha
autocmd BufRead,BufNewFile *.tex,*.c,*.cc,*.m,*.pl imap [[  []ha
"autocmd BufRead,BufNewFile *.tex nmap <F4> :w:!latex %!dvips %:t:r.ps)
autocmd BufRead,BufNewFile *.tex nmap <F4> :w:!latexrun %:t:r
autocmd BufRead,BufNewFile *.tex nmap <F5> :!gsview32 -magstep -1 %:t:r.ps
autocmd BufRead,BufNewFile *.tex nmap <F6> :!yap %:t:r.dvi
autocmd BufRead,BufNewFile *.tex imap \[<space>  \[\]hha
autocmd BufNewFile *.tex  :r ~/.tex_header

"
"when reading new/existing C++-programming
"
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h :iab else else
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h :set tw=0
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h nmap #/ A<Tab><Tab>/*  */<Esc>hhi
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h vmap ,c v`>a<space>*/`<i/*<space>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h nmap ,C ma%xx`axxx
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h set tw=0
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  imap <M-Space> <ESC>:w<CR>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  nmap <M-Space> <ESC>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  cmap <M-Space> <ESC>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  vmap <M-Space> <ESC>`>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  imap 99  ()ha
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  imap <M-9>  ()ha
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  nmap <Space>  :
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  nmap <M-Space>  :w<CR>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  imap <M-;>  :
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  imap <M-(> ()ha
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  imap <M-[> []ha
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  vmap y y`>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  nmap <F5> :!g++ -g %
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h imap {{  {}ha
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h imap [[  []ha
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h source $VIM/jhufunctions.vim
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  vmap <F2> :call ToggleCppComment()<CR>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  nmap <F2> :call ToggleCppComment()<CR>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h,*.hpp  nmap <S-F2> :call ToggleCppDebug()<CR>
autocmd BufRead,BufNewFile *.py  vmap <S-F2> :call TogglePythonDebug()<CR>
autocmd BufRead,BufNewFile *.py  nmap <S-F2> :call TogglePythonDebug()<CR>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  nmap <F1> :!a<CR>
autocmd BufRead,BufNewFile *.js,*.cc,*.cpp,*.h  vmap <F3> :s/\/\//%%/g\|:'<,'>call AlignLeftonChar("%%",0)\|:'<,'>s/%%/\/\//g<CR>

"
"when reading new/existing Matlab file
"
autocmd BufRead,BufNewFile *.m :ab lins linspace( 
autocmd BufRead,BufNewFile *.m :set tags=$VIM\doc,C:\temp\tags
autocmd BufRead,BufNewFile *.m :set notagrelative
autocmd BufRead,BufNewFile *.m,*.tex,*.for :source $VIM/jhufunctions.vim
autocmd BufRead,BufNewFile *.m nmap <F1> :s/^/disp('Keyboard Stop Here!');keyboard;%JHU:DEBUG: Stop here!
autocmd BufRead,BufNewFile *.m nmap <F4> Vip
autocmd BufRead,BufNewFile *.m vmap <F4> ggVG
autocmd BufRead,BufNewFile *.m nmap <F5> :normal Vip<CR>
autocmd BufRead,BufNewFile *.m nmap <S-F1> :s/^/error('JHU:Stop here!');%JHU:DEBUG: Stop here!
autocmd BufRead,BufNewFile *.m,*.tex,*.for vmap <F3> :call AlignLeftonChar("%",0)<CR>
autocmd BufRead,BufNewFile *.m,*.tex vmap <S-F3> :call AlignLeftonChar("=",0)<CR> \|:'<,'>s/=<SPACE>*/=/<CR>\|:'<,'>call AlignLeftonChar("%",0)<CR>\|:normal /dontmindme/<CR><CR>
autocmd BufRead,BufNewFile *.m,*.tex,*.for vmap <C-F3> :call AlignLeftonChar(":=",1)<CR>
autocmd BufRead,BufNewFile *.m,*.tex,*.for vmap <F2> :call ToggleComment()<CR>
autocmd BufRead,BufNewFile *.m,*.tex vmap <S-F2> :call ToggleDebug()<CR>
autocmd BufRead,BufNewFile *.m,*.tex nmap <S-F2> :call ToggleDebug()<CR>
autocmd BufRead,BufNewFile *.m,*.tex,*.for nmap <F2> :call ToggleComment()<CR>
autocmd BufRead,BufNewFile *.m,*.c,*.cc,*.pl vmap ,, v`>a)`<i(i
autocmd BufRead,BufNewFile *.m,*.c,*.cc vmap ,b v`>a]`<i[
autocmd BufRead,BufNewFile *.m,*.c,*.cc imap ((  ()ha
autocmd BufRead,BufNewFile *.m imap {{  {}ha
autocmd BufRead,BufNewFile *.m,*.c,*.cc imap <TAB> <ESC>la
autocmd BufRead,BufNewFile *.m,*py :iab end end
autocmd BufRead,BufNewFile *py :iab elif elif
autocmd BufRead,BufNewFile *.m :iab catch catch
autocmd BufRead,BufNewFile *.m :iab case case
autocmd BufRead,BufNewFile *.m set tw=0
autocmd BufRead,BufNewFile *.m,*py :iab else else
autocmd BufRead,BufNewFile *.m :iab elseif elseif
autocmd BufRead,BufNewFile *.m :iab fig figure%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
"autocmd BufRead,BufNewFile *.m :set isk+=.
" This block creates matlab header
autocmd BufNewFile *.m  :call InitializeMatlabFunction()
autocmd BufRead *.m  :call InsertRevisionDate()
autocmd BufRead,BufNewFile *.m imap <M-Space> <ESC>:w<CR>
autocmd BufRead,BufNewFile *.m cmap <M-Space> <ESC>
autocmd BufRead,BufNewFile *.m vmap <M-Space> <ESC>`>
autocmd BufRead,BufNewFile *.m imap <M-9>  ()ha
autocmd BufRead,BufNewFile *.m nmap <M-Space>  :w<CR>
"autocmd BufRead,BufNewFile *.m nmap <Space><Space>  :
autocmd BufRead,BufNewFile *.m imap <M-;>  :
autocmd BufRead,BufNewFile *.m imap <M-(> ()ha
autocmd BufRead,BufNewFile *.m imap <M-[> []ha
autocmd BufRead,BufNewFile *.m vmap y y`>
autocmd BufRead,BufNewFile *.m imap qif if <CR>else<CR>end<ESC>kk
autocmd BufRead,BufNewFile *.m :imap ,, ()<ESC>ha
"autocmd BufRead,BufNewFile *.m :imap plot plot()<ESC>ha
"autocmd BufRead,BufNewFile *.m :imap surf surf()<ESC>ha
"autocmd BufRead,BufNewFile *.m :imap pcolor pcolor()<ESC>ha
"autocmd BufRead,BufNewFile *.m :imap axis axis()<ESC>ha
"autocmd BufRead,BufNewFile *.m :imap axiss axiss()<ESC>ha
autocmd BufRead,BufNewFile *.m :imap ,b []<ESC>ha
autocmd BufRead,BufNewFile *.m :imap ,f ([])<ESC>hha
autocmd BufRead,BufNewFile *.m :iab xlab xlabel('')<ESC>hha
autocmd BufRead,BufNewFile *.m :iab ylab ylabel('')<ESC>hha
autocmd BufRead,BufNewFile *.m :iab zlab zlabel('')<ESC>hha
autocmd BufRead,BufNewFile *.m :iab titl title('')<ESC>hha
autocmd BufRead,BufNewFile *.m :iab iif if<CR>end<ESC>kA
autocmd BufRead,BufNewFile *.m :iab ffor for<CR>end<ESC>kA
"autocmd BufRead,BufNewFile *.m :set guifont=Courier_New:h9
autocmd BufRead,BufNewFile *.m :winpos 196 -7
autocmd BufRead,BufNewFile *.m :ab fpr fprintf(1,'',) <C-O>h
autocmd BufRead,BufNewFile *.m :ab plt plot() <C-O>h
autocmd BufRead,BufNewFile *.m :ab linew 'linewidth'
autocmd BufRead,BufNewFile *.m :ab shadi shading interp
"autocmd BufRead,BufNewFile *.m imap forr for<CR>end<ESC>k 
"
"
"when reading new/existing BibTeX file
"
autocmd BufRead,BufNewFile *.bib :source $VIM/BibTexMenu.vim
autocmd BufRead,BufNewFile *.bib vmap <F3> !melbib.pl
autocmd BufRead,BufNewFile *.bib map <F1> :%!perl d:\utilities\vim\sortbib.pl
autocmd BufRead,BufNewFile *.bib map <F2> Vapd
"
"when reading new/existing python file
autocmd BufRead,BufNewFile *.py map <F2> :call ToggleCppComment("#")<CR>
autocmd BufRead,BufNewFile *.py source C:/Vim/vim72/ftplugin/python.vim
"autocmd FileType python set complete+=k$VIM/vim71/pydiction/pydiction 
"autocmd BufRead,BufNewFile *.py let g:pydiction_location = 'C:/vim/vimfiles/ftplugin/complete-dict'

autocmd BufRead,BufNewFile *.html,*.htm :source $VIM/jhufunctions.vim
"
"when reading new/existing worklog
autocmd BufRead,BufNewFile work*.txt :source $VIM/jhufunctions.vim
autocmd BufRead work*.txt  :let x=strftime("%a %b %d %X %Y")| exe "norm Go".x."}}" |exe "norm o" | exe "norm 70i=" | exe "norm o-- "
"
autocmd BufRead Reading*.txt  :set ignorecase|exe "norm G"|set textwidth=80
autocmd BufRead *.vcl  :setfiletype vocola

"
" mappings for all files
"
" this mapping capitalizes the first word in a sentence
"  but unfortunately breaks some backspacing behaviour
"
":inoremap <Space> <Space><Left><C-O>mm<C-O>(<C-O>gUl<C-O>`m<Right>
"
" This mapping copies the word above the cursor
"
:vmap Q gq
:vmap ,, v`>a)`<i(i
:vmap ," v`>a"`<i"i
:vmap ,b v`>a]`<i[i
:vmap ,[ v`>a]`<i[i
:vmap ,{ v`>a}`<i{i
:vmap ,' v`>a'`<i'i
:nmap ,f dwma%x`ax
:imap <C-\> <space><esc>mykye`yPls
:imap ((  ()ha
:imap [[ []<ESC>ha
":imap <TAB> <ESC>%%a
:imap  
:map <F10> gqp
:map _W :au! BufEnter % norm 13_<CR>:au! BufLeave % norm 5_<CR>
:nmap ss cw
:nnoremap <C-Up> :silent! let &guifont = substitute(&guifont, '\d\+', '\=eval(submatch(0)+1)', '')<CR>
:nnoremap <C-Down> :silent! let &guifont = substitute(&guifont, '\d\+', '\=eval(submatch(0)-1)', '')<CR>

"Restore the cursor to the file position in previous editing session
:au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g'\"" | endif
