1" Vim filetype plugin file
2" Language:	php
3" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
4" Last Changed: 20 Jan 2009
5" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
6
7if exists("b:did_ftplugin") | finish | endif
8
9" Make sure the continuation lines below do not cause problems in
10" compatibility mode.
11let s:save_cpo = &cpo
12set cpo-=C
13
14" Define some defaults in case the included ftplugins don't set them.
15let s:undo_ftplugin = ""
16let s:browsefilter = "HTML Files (*.html, *.htm)\t*.html;*.htm\n" .
17	    \	     "All Files (*.*)\t*.*\n"
18let s:match_words = ""
19
20runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
21let b:did_ftplugin = 1
22
23" Override our defaults if these were set by an included ftplugin.
24if exists("b:undo_ftplugin")
25    let s:undo_ftplugin = b:undo_ftplugin
26endif
27if exists("b:browsefilter")
28    let s:browsefilter = b:browsefilter
29endif
30if exists("b:match_words")
31    let s:match_words = b:match_words
32endif
33if exists("b:match_skip")
34    unlet b:match_skip
35endif
36
37" Change the :browse e filter to primarily show PHP-related files.
38if has("gui_win32")
39    let  b:browsefilter="PHP Files (*.php)\t*.php\n" . s:browsefilter
40endif
41
42" ###
43" Provided by Mikolaj Machowski <mikmach at wp dot pl>
44setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\?
45" Disabled changing 'iskeyword', it breaks a command such as "*"
46" setlocal iskeyword+=$
47
48if exists("loaded_matchit")
49    let b:match_words = '<?php:?>,\<switch\>:\<endswitch\>,' .
50		      \ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' .
51		      \ '\<while\>:\<endwhile\>,' .
52		      \ '\<do\>:\<while\>,' .
53		      \ '\<for\>:\<endfor\>,' .
54		      \ '\<foreach\>:\<endforeach\>,' .
55                      \ '(:),[:],{:},' .
56		      \ s:match_words
57endif
58" ###
59
60if exists('&omnifunc')
61  setlocal omnifunc=phpcomplete#CompletePHP
62endif
63
64" Section jumping: [[ and ]] provided by Antony Scriven <adscriven at gmail dot com>
65let s:function = '\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function'
66let s:class = '\(abstract\s\+\|final\s\+\)*class'
67let s:interface = 'interface'
68let s:section = '\(.*\%#\)\@!\_^\s*\zs\('.s:function.'\|'.s:class.'\|'.s:interface.'\)'
69exe 'nno <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
70exe 'nno <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
71exe 'ono <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
72exe 'ono <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
73
74setlocal commentstring=/*%s*/
75
76" Undo the stuff we changed.
77let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" .
78	    \	      " | unlet! b:browsefilter b:match_words | " .
79	    \	      s:undo_ftplugin
80
81" Restore the saved compatibility options.
82let &cpo = s:save_cpo
83