Added Perforce plugin.
[profile.git] / .vim / ftplugin / perforce.vim
diff --git a/.vim/ftplugin/perforce.vim b/.vim/ftplugin/perforce.vim
new file mode 100755 (executable)
index 0000000..e3bf7d4
--- /dev/null
@@ -0,0 +1,59 @@
+" Perforce spec filetype plugin file
+" Language:      Perforce Spec File
+" Maintainer:    Hari Krishna Dara <hari_vim at yahoo dot com>
+" Last Change:   13-Jan-2006 @ 17:38
+" Since Version:  1.4
+" Revision:      1.0.6
+" Plugin Version: 2.1
+" Download From:
+"     http://vim.sourceforge.net/scripts/script.php?script_id=240
+" TODO:
+
+" Only do this when not done yet for this buffer
+"if exists("b:did_ftplugin")
+"  finish
+"endif
+
+" Don't load another plugin for this buffer
+let b:did_ftplugin = 1
+
+" Set some options suitable for pure text editing.
+setlocal tabstop=8
+setlocal softtabstop=0
+setlocal shiftwidth=8
+setlocal noexpandtab
+setlocal autoindent
+setlocal formatoptions=tcqnl
+setlocal comments=:#,fb:-
+setlocal wrapmargin=0
+setlocal textwidth=80
+let b:undo_ftplugin = 'setl ts< sts< sw< et< ai< fo< com< wm< tw<'
+
+if !exists("loaded_perforce_ftplugin")
+let s:patterns{'Change'}   = '\%(^Description:\s*\_s\?\s*\)\zs\S\|^Description:'
+let s:patterns{'Branch'}   = '\%(^View:\s*\_s\?\s*\)\zs\S\|^View:'
+let s:patterns{'Label'}    = '\%(^View:\s*\_s\?\s*\)\zs\S\|^View:'
+let s:patterns{'Client'}   = '\%(^View:\s*\_s\?\s*\)\zs\S\|^View:'
+let s:patterns{'Job'}      = '\%(^Job:\s\+\)\@<=new\>\|\%(^Description:\s*\_s\?\s*\)\zs\S\|^Description:'
+let s:patterns{'Job_Spec'} = '^Fields:'
+let s:patterns{'User'}     = '^User:'
+let s:patterns{'Depot'}    = '\%(^Description:\s*\_s\?\s*\)\zs\S\|^Description:'
+let s:patterns{'Group'}    = '\%(^Users:\s*\_s\?\s*\)\zs\S\|^Users:'
+" Position cursor on the most appropriate line based on the type of spec being
+" edited.
+function! s:PositionLine()
+  let specPattern = '^# A Perforce \(.*\) Specification.$'
+  if getline(1) =~ specPattern
+    let spec = substitute(substitute(getline(1), specPattern, '\1', ''), ' ',
+         \ '_', 'g')
+    if spec != "" && exists('s:patterns'. spec) &&
+         \ search(s:patterns{spec}, 'w') != 0
+      let b:p4Pattern = s:patterns{spec}
+      normal! zz
+    endif
+  endif
+endfunction
+let loaded_perforce_ftplugin=1
+endif
+
+call s:PositionLine()