changeset 784:1cc5f2c523ee

updated for version 7.0229
author vimboss
date Sun, 19 Mar 2006 22:08:37 +0000
parents e68d8541494d
children fd60bacf955b
files runtime/autoload/htmlcomplete.vim
diffstat 1 files changed, 29 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	XHTML 1.0 Strict
 " Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2006 Mar 5
+" Last Change:	2006 Mar 19
 
 function! htmlcomplete#CompleteTags(findstart, base)
   if a:findstart
@@ -87,17 +87,25 @@ function! htmlcomplete#CompleteTags(find
 					let context_lines = getline(curline-i, curline)
 					let b:compl_context = join(context_lines, ' ')
 					break
-				elseif context_line =~ '>[^<]*$'
-					" Normal tag line, no need for completion at all
+				elseif context_line =~ '>[^<]*$' || i == curline
+					" We are in normal tag line, no need for completion at all
+					" OR reached first line without tag at all
 					let b:compl_context = ''
 					break
 				endif
 				let i += 1
+				" We reached first line and no tag approached
+				" Prevents endless loop
+				"if i > curline
+					"let b:compl_context = ''
+					"break
+				"endif
 			endwhile
 			" Make sure we don't have counter
 			unlet! i
 		endif
 		let b:compl_context = matchstr(b:compl_context, '.*\zs<.*')
+
 		" Return proper start for on-events. Without that beginning of
 		" completion will be badly reported
 		if b:compl_context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
@@ -106,6 +114,15 @@ function! htmlcomplete#CompleteTags(find
 				let start -= 1
 			endwhile
 		endif
+		" If b:compl_context begins with <? we are inside of PHP code. It
+		" wasn't closed so PHP completion passed it to HTML 
+		if &filetype =~? 'php' && b:compl_context =~ '^<?'
+			let b:phpcompl = 1
+			let start = col('.') - 1
+			while start >= 0 && line[start - 1] =~ '[a-zA-Z_0-9\x7f-\xff$]'
+				let start -= 1
+			endwhile
+		endif
 	else
 		let b:compl_context = getline('.')[0:compl_begin]
 	endif
@@ -117,7 +134,8 @@ function! htmlcomplete#CompleteTags(find
 	" a:base is very short - we need context
 	let context = b:compl_context
 	" Check if we should do CSS completion inside of <style> tag
-	" or JS completion inside of <script> tag
+	" or JS completion inside of <script> tag or PHP completion in case of <?
+	" tag AND &ft==php
 	if exists("b:csscompl")
 		unlet! b:csscompl
 		let context = b:compl_context
@@ -126,6 +144,10 @@ function! htmlcomplete#CompleteTags(find
 	elseif exists("b:jscompl")
 		unlet! b:jscompl
 		return javascriptcomplete#CompleteJS(0, a:base)
+	elseif exists("b:phpcompl")
+		unlet! b:phpcompl
+		let context = b:compl_context
+		return phpcomplete#CompletePHP(0, a:base)
 	else
 		if len(b:compl_context) == 0 && !exists("b:entitiescompl")
 			return []
@@ -599,7 +621,8 @@ function! htmlcomplete#CompleteTags(find
 	" }}}
   endif
 endfunction
-function! htmlcomplete#LoadData()
+" HTML context data
+function! htmlcomplete#LoadData() " {{{
 let g:xmldata_xhtml10s = {
 \ 'vimxmlentities' : ["AElig", "Aacute", "Acirc", "Agrave", "Alpha", "Aring", "Atilde", "Auml", "Beta", "Ccedil", "Chi", "Dagger", "Delta", "ETH", "Eacute", "Ecirc", "Egrave", "Epsilon", "Eta", "Euml", "Gamma", "Iacute", "Icirc", "Igrave", "Iota", "Iuml", "Kappa", "Lambda", "Mu", "Ntilde", "Nu", "OElig", "Oacute", "Ocirc", "Ograve", "Omega", "Omicron", "Oslash", "Otilde", "Ouml", "Phi", "Pi", "Prime", "Psi", "Rho", "Scaron", "Sigma", "THORN", "TITY", "Tau", "Theta", "Uacute", "Ucirc", "Ugrave", "Upsilon", "Uuml", "Xi", "Yacute", "Yuml", "Zeta", "amp", "aacute", "acirc", "acute", "aelig", "agrave", "alefsym", "alpha", "and", "ang", "apos", "aring", "asymp", "atilde", "auml", "bdquo", "beta", "brvbar", "bull", "cap", "ccedil", "cedil", "cent", "chi", "circ", "clubs", "copy", "cong", "crarr", "cup", "curren", "dArr", "dagger", "darr", "deg", "delta", "diams", "divide", "eacute", "ecirc", "egrave", "empty", "ensp", "emsp", "epsilon", "equiv", "eta", "eth", "euro", "euml", "exist", "fnof", "forall", "frac12", "frac14", "frac34", "frasl", "gt", "gamma", "ge", "hArr", "harr", "hearts", "hellip", "iacute", "icirc", "iexcl", "igrave", "image", "infin", "int", "iota", "iquest", "isin", "iuml", "kappa", "lt", "laquo", "lArr", "lambda", "lang", "larr", "lceil", "ldquo", "le", "lfloor", "lowast", "loz", "lrm", "lsaquo", "lsquo", "macr", "mdash", "micro", "middot", "minus", "mu", "nbsp", "nabla", "ndash", "ne", "ni", "not", "notin", "nsub", "ntilde", "nu", "oacute", "ocirc", "oelig", "ograve", "oline", "omega", "omicron", "oplus", "or", "ordf", "ordm", "oslash", "otilde", "otimes", "ouml", "para", "part", "permil", "perp", "phi", "pi", "piv", "plusmn", "pound", "prime", "prod", "prop", "psi", "quot", "rArr", "raquo", "radic", "rang", "rarr", "rceil", "rdquo", "real", "reg", "rfloor", "rho", "rlm", "rsaquo", "rsquo", "sbquo", "scaron", "sdot", "sect", "shy", "sigma", "sigmaf", "sim", "spades", "sub", "sube", "sum", "sup", "sup1", "sup2", "sup3", "supe", "szlig", "tau", "there4", "theta", "thetasym", "thinsp", "thorn", "tilde", "times", "trade", "uArr", "uacute", "uarr", "ucirc", "ugrave", "uml", "upsih", "upsilon", "uuml", "weierp", "xi", "yacute", "yen", "yuml", "zeta", "zwj", "zwnj"],
 \ 'vimxmlattrinfo' : {
@@ -4647,4 +4670,5 @@ let g:xmldata_xhtml10s = {
 \ ]
 \ }
 endfunction
+" }}}
 " vim:set foldmethod=marker: