SOURCES: php.vim - up to ver 1.181
arekm
arekm at pld-linux.org
Tue Sep 20 22:46:08 CEST 2005
Author: arekm Date: Tue Sep 20 20:46:08 2005 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- up to ver 1.181
---- Files affected:
SOURCES:
php.vim (1.5 -> 1.6)
---- Diffs:
================================================================
Index: SOURCES/php.vim
diff -u SOURCES/php.vim:1.5 SOURCES/php.vim:1.6
--- SOURCES/php.vim:1.5 Thu Sep 1 21:12:06 2005
+++ SOURCES/php.vim Tue Sep 20 22:46:02 2005
@@ -2,8 +2,29 @@
" Language: PHP
" Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr>
" URL: http://www.2072productions.com/vim/indent/php.vim
-" Last Change: 2005 June 30th
-" Version: 1.17
+" Last Change: 2005 September 17th
+" Version: 1.181
+"
+"
+" Changes: 1.181 - I Forgot to register 'class' as a block starter so the '{'
+" after a 'class' could be wrongly indented...
+"
+" Changes: 1.18 - No more problems with Vim 6.3 and UTF-8.
+" - Opening braces "{" are always indented according to their block starter.
+"
+" Instead of:
+"
+" if( $test
+" && $test2 )
+" {
+" }
+"
+" You have:
+"
+" if( $test
+" && $test2 )
+" {
+" }
"
"
" Changes: 1.17 - Now following parts of split lines are indented:
@@ -230,13 +251,8 @@
setlocal indentkeys=0{,0},0),:,!^F,o,O,e,*<Return>,=?>,=<?,=*/
-"This will prevent a bug involving searchpair(), its 'r' flag, utf-8 and vim 6.3
-"from occurring but will forbid you to write other '/*' inside a '/* */' comment.
-if version <= 603 && &encoding == 'utf-8'
- let s:searchpairflags = 'bW'
-else
- let s:searchpairflags = 'bWr'
-endif
+
+let s:searchpairflags = 'bWr'
" Clean CR when the file is in Unix format
if &fileformat == "unix" && exists("PHP_removeCRwhenUnix") && PHP_removeCRwhenUnix
@@ -272,8 +288,10 @@
let lnum = lnum - 1
elseif lastline =~ '\*/\s*$' " skip multiline comments
call cursor(lnum, 1)
- call search('\*/\zs', 'W') " positition the cursor after the first */
- let lnum = searchpair('/\*', '', '\*/\zs', s:searchpairflags) " find the most outside /*
+ if lastline !~ '^\*/'
+ call search('\*/', 'W') " positition the cursor on the first */
+ endif
+ let lnum = searchpair('/\*', '', '\*/', s:searchpairflags) " find the most outside /*
"echo 'lnum skipnonphp= ' . lnum
"call getchar()
@@ -425,7 +443,7 @@
" }}}
let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\);'
-let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|[|&]\)'
+let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|class\>\|[|&]\)'
" make sure the options needed for this script to work correctly are set here
" for the last time. They could have been overriden by any 'onevent'
@@ -554,8 +572,10 @@
let b:UserIsTypingComment = 0
if cline =~ '\*/' " End comment tags must be indented like start comment tags
call cursor(v:lnum, 1)
- call search('\*/\zs', 'W')
- let lnum = searchpair('/\*', '', '\*/\zs', s:searchpairflags) " find the most outside /*
+ if cline !~ '^\*/'
+ call search('\*/', 'W')
+ endif
+ let lnum = searchpair('/\*', '', '\*/', s:searchpairflags) " find the most outside /*
let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
let b:PHP_LastIndentedWasComment = 0 " prevent a problem if multiline /**/ comment are surounded by
@@ -594,7 +614,7 @@
" Skip /* \n+ */ comments execept when the user is currently
" writting them
- elseif !UserIsEditing && cline =~ '^\s*/\*\%(.*\*/\)\@!' && getline(v:lnum + 1) !~ '^\s*\*' " XXX indent comments
+ elseif !UserIsEditing && cline =~ '^\s*/\*\%(.*\*/\)\@!' && getline(v:lnum + 1) !~ '^\s*\*'
let b:InPHPcode = 0
let b:InPHPcode_tofind = '\*/'
@@ -699,8 +719,12 @@
" Check for end of comment and indent it like its beginning
if cline =~ '^\s*\*/' " End comment tags must be indented like start comment tags
call cursor(v:lnum, 1)
- call search('\*/\zs', 'W')
- let lnum = searchpair('/\*', '', '\*/\zs', s:searchpairflags) " find the most outside /*
+ if cline !~ '^\*/'
+ call search('\*/', 'W')
+ endif
+ let lnum = searchpair('/\*', '', '\*/', s:searchpairflags) " find the most outside /*
+ "echo 'Searchpair returned: ' . lnum
+ "call getchar()
let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
@@ -728,7 +752,6 @@
let LastLineClosed = 0 " used to prevent redundant tests in the last part of the script
- "let terminated = '\%(;\%(\s*?>\)\=\|<<<\a\w*\)'.endline.'\|}\%(.*{'. endline.'\)\@!'
let terminated = '\%(;\%(\s*?>\)\=\|<<<\a\w*\|}\)'.endline
" What is a terminated line?
" - a line terminated by a ";" optionaly followed by a "?>"
@@ -747,6 +770,30 @@
if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>'
let b:PHP_CurrentIndentLevel = b:PHP_default_indenting " prevent optimized to work at next call
return indent(FindTheIfOfAnElse(v:lnum, 1))
+ elseif cline =~ '^\s*{'
+ let previous_line = last_line
+ let last_line_num = lnum
+
+ while last_line_num > 1
+
+ if previous_line =~ '^\s*\%(' . s:blockstart . '\|\%([a-zA-Z]\s*\)*function\)' && previous_line !~ '^\s*[|&]'
+ "echo '{ detected and aligned to ' . last_line_num . ' ('.previous_line.')'
+ "call getchar()
+
+ let ind = indent(last_line_num)
+
+ " If the PHP_BracesAtCodeLevel is set then indent the '{'
+ if b:PHP_BracesAtCodeLevel " XXX mod {
+ let ind = ind + &sw
+ endif
+
+ return ind
+ endif
+
+ let last_line_num = last_line_num - 1
+ let previous_line = getline(last_line_num)
+ endwhile
+
elseif last_line =~# unstated && cline !~ '^\s*{\|^\s*);\='.endline
let ind = ind + &sw
return ind
@@ -923,10 +970,6 @@
let ind = ind + &sw
- endif
- " If the PHP_BracesAtCodeLevel is set then indent the '{'
- if b:PHP_BracesAtCodeLevel && cline =~# '^\s*{' " XXX mod {
- let ind = ind + &sw
endif
elseif last_line =~# defaultORcase
================================================================
---- CVS-web:
http://cvs.pld-linux.org/SOURCES/php.vim?r1=1.5&r2=1.6&f=u
More information about the pld-cvs-commit
mailing list