Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Pygments / examplefiles / output / phpcomplete.vim
Size: Mime:
€]q(cpygments.token
_TokenType
qXCommentq…q…qq}q(Xsubtypesqcbuiltins
set
q]q	(hhXPreprocq
†q…qq
}q(hh]q…qRqXparentqhubhhXMultiq†q…qq}q(hh]q…qRqhhubhhXHashbangq†q…qq}q(hh]q …q!Rq"hhubhhXSingleq#†q$…q%q&}q'(hh]q(…q)Rq*hhubhhX
SingleLineq+†q,…q-q.}q/(hh]q0…q1Rq2hhubhhXDocq3†q4…q5q6}q7(hh]q8…q9Rq:hhubhhX	Directiveq;†q<…q=q>}q?(hh]q@…qARqBhhubhhX	MultilineqC†qD…qEqF}qG(hh]qH…qIRqJhhubhhX
SinglelineqK†qL…qMqN}qO(hh]qP…qQRqRhhubhhXPreprocFileqS†qT…qUqV}qW(hh]qX…qYRqZhhubhhXSpecialq[†q\…q]q^}q_(hh]q`…qaRqbhhube…qcRqdhh)…qeqf}qg(hh]qh(hXEscapeqi…qj…qkql}qm(hh]qn…qoRqphhfubhXOperatorqq…qr…qsqt}qu(hh]qv(hhqXDBSqw†qx…qyqz}q{(hh]q|…q}Rq~hhtubhhqXWordq†q€…qq‚}qƒ(hh]q„…q…Rq†hhtube…q‡Rqˆhhfhh‚hwhzubhXNameq‰…qŠ…q‹qŒ}q(hh]qŽ(hh‰XTagq†q…q‘q’}q“(hh]q”…q•Rq–hhŒubhh‰XEntityq—†q˜…q™qš}q›(hh]qœhh‰h—hw‡q…qžqŸ}q (hh]q¡…q¢Rq£hhšuba…q¤Rq¥hhŒhwhŸubhh‰X	Exceptionq¦†q§…q¨q©}qª(hh]q«…q¬Rq­hhŒubhh‰X	Decoratorq®†q¯…q°q±}q²(hh]q³…q´RqµhhŒubhh‰XClassq¶†q·…q¸q¹}qº(hh]q»(hh‰h¶hw‡q¼…q½q¾}q¿(hh]qqÁRqÂhh¹ubhh‰h¶XStartqÇqąqŁqÆ}qÇ(hh]qȅqÉRqÊhh¹ube…qËRqÌhhŒhÃhÆhwh¾ubhh‰XVariableq͆q΅qρqÐ}qÑ(hh]qÒ(hh‰hÍX	AnonymousqӇqԅqՁqÖ}q×(hh]q؅qÙRqÚhhÐubhh‰hÍh¶‡qۅq܁qÝ}qÞ(hh]q߅qàRqáhhÐubhh‰hÍXMagicqâ‡qã…qäqå}qæ(hh]qç…qèRqéhhÐubhh‰hÍXGlobalqê‡që…qìqí}qî(hh]qï…qðRqñhhÐubhh‰hÍXInstanceqò‡qó…qôqõ}qö(hh]q÷…qøRqùhhÐube…qúRqûhhŒh¶hÝhêhíhòhõhâhåhÓhÖubhh‰X	Attributeqü†qý…qþqÿ}r(hh]rhh‰hüh͇r…rr}r(hh]r…rRrhhÿuba…r	Rr
hhŒhÍjubhh‰X	Namespacer†r…r
r}r(hh]r…rRrhhŒubhh‰XPropertyr†r…rr}r(hh]r…rRrhhŒubhh‰XSymbolr†r…rr}r(hh]r …r!Rr"hhŒubhh‰XClassesr#†r$…r%r&}r'(hh]r(…r)Rr*hhŒubhh‰XPseudor+†r,…r-r.}r/(hh]r0…r1Rr2hhŒubhh‰XLabelr3†r4…r5r6}r7(hh]r8…r9Rr:hhŒubhh‰hq†r;…r<r=}r>(hh]r?…r@RrAhhŒubhh‰XBuiltinrB†rC…rDrE}rF(hh]rG(hh‰jBj+‡rH…rIrJ}rK(hh]rL…rMRrNhjEubhh‰jBXTyperO‡rP…rQrR}rS(hh]rT…rURrVhjEube…rWRrXhhŒj+jJjOjRubhh‰XFieldrY†rZ…r[r\}r](hh]r^…r_Rr`hhŒubhh‰XOtherra†rb…rcrd}re(hh]rfhh‰jaXMemberrg‡rh…rirj}rk(hh]rl…rmRrnhjduba…roRrphhŒjgjjubhh‰XFunctionrq†rr…rsrt}ru(hh]rvhh‰jqhâ‡rw…rxry}rz(hh]r{…r|Rr}hjtuba…r~RrhhŒhâjyubhh‰jO†r€…rr‚}rƒ(hh]r„…r…Rr†hhŒubhh‰XConstantr‡†rˆ…r‰rŠ}r‹(hh]rŒ…rRrŽhhŒube…rRrhhfhühÿjBjEh¶h¹j‡jŠh®h±h—hšh¦h©jqjtjjj3j6jjjajdhh’hÍhÐjYj\jjj+j.hqj=j#j&jOj‚ubhXLiteralr‘…r’…r“r”}r•(hh]r–(hj‘ja†r—…r˜r™}rš(hh]r›…rœRrhj”ubhj‘XCharrž†rŸ…r r¡}r¢(hh]r£…r¤Rr¥hj”ubhj‘XDater¦†r§…r¨r©}rª(hh]r«…r¬Rr­hj”ubhj‘XScalarr®†r¯…r°r±}r²(hh]r³hj‘j®XPlainr´‡rµ…r¶r·}r¸(hh]r¹…rºRr»hj±uba…r¼Rr½hj”j´j·ubhj‘XStringr¾†r¿…rÀrÁ}rÂ(hh]rÃ(hj‘j¾XInterpolrćrÅ…rƁrÇ}rÈ(hh]rÉ…rÊRrËhjÁubhj‘j¾X	DelimeterṙrÍ…r΁rÏ}rÐ(hh]rÑ…rÒRrÓhjÁubhj‘j¾jž‡rÔ…rՁrÖ}r×(hh]rØ…rÙRrÚhjÁubhj‘j¾j‡rÛ…r܁rÝ}rÞ(hh]rß…ràRráhjÁubhj‘j¾h#‡râ…rãrä}rå(hh]ræ…rçRrèhjÁubhj‘j¾ja‡ré…rêrë}rì(hh]rí…rîRrïhjÁubhj‘j¾XBacktickrð‡rñ…ròró}rô(hh]rõ…röRr÷hjÁubhj‘j¾hi‡rø…rùrú}rû(hh]rü…rýRrþhjÁubhj‘j¾XRegexrÿ‡r…rr}r(hh]r…rRrhjÁubhj‘j¾XMomentr‡r…r	r
}r(hh]r…r
RrhjÁubhj‘j¾XBooleanr‡r…rr}r(hh]r…rRrhjÁubhj‘j¾X	Characterr‡r…rr}r(hh]r…rRrhjÁubhj‘j¾X	Delimiterr‡r …r!r"}r#(hh]r$…r%Rr&hjÁubhj‘j¾h3‡r'…r(r)}r*(hh]r+…r,Rr-hjÁubhj‘j¾h‰‡r.…r/r0}r1(hh]r2…r3Rr4hjÁubhj‘j¾XAffixr5‡r6…r7r8}r9(hh]r:…r;Rr<hjÁubhj‘j¾XHeredocr=‡r>…r?r@}rA(hh]rB…rCRrDhjÁubhj‘j¾XDoublerE‡rF…rGrH}rI(hh]rJ…rKRrLhjÁubhj‘j¾XInterprM‡rN…rOrP}rQ(hh]rR…rSRrThjÁubhj‘j¾XAtomrU‡rV…rWrX}rY(hh]rZ…r[Rr\hjÁube…r]Rr^hj”j5j8jðjójžjÖjj"h3j)jEjHhijúj=j@jÄjÇjajëjÿjh#jäjjÝjjjj
jMjPjjjÌjÏjUjXh‰j0ubhj‘XNumberr_†r`…rarb}rc(hh]rd(hj‘j_XFloatre‡rf…rgrh}ri(hh]rj…rkRrlhjbubhj‘j_XDecrm‡rn…rorp}rq(hh]rr…rsRrthjbubhj‘j_XRadixru‡rv…rwrx}ry(hh]rz…r{Rr|hjbubhj‘j_XOctr}‡r~…rr€}r(hh]r‚…rƒRr„hjbubhj‘j_XBinr…‡r†…r‡rˆ}r‰(hh]rŠ…r‹RrŒhjbubhj‘j_hü‡r…rށr}r(hh]r‘…r’Rr“hjbubhj‘j_XHexr”‡r•…r–r—}r˜(hh]r™…ršRr›hjbubhj‘j_XIntegerrœ‡r…ržrŸ}r (hh]r¡h(j‘j_jœXLongr¢tr£…r¤r¥}r¦(hh]r§…r¨Rr©hjŸuba…rªRr«hjbj¢j¥ubhj‘j_XDecimalr¬‡r­…r®r¯}r°(hh]r±…r²Rr³hjbube…r´Rrµhj”j…jˆjejhj”j—jœjŸj}j€jujxhüjj¬j¯jmjpube…r¶Rr·hhfj¾jÁj_jbj¦j©j®j±jaj™jžj¡ubhXGenericr¸…r¹…rºr»}r¼(hh]r½(hj¸XErrorr¾†r¿…rÀrÁ}rÂ(hh]rÃ…rÄRrÅhj»ubhj¸X
SubheadingrƆrÇ…rȁrÉ}rÊ(hh]rË…rÌRrÍhj»ubhj¸X	TracebackrΆrÏ…rЁrÑ}rÒ(hh]rÓ…rÔRrÕhj»ubhj¸XOutputrÖ†r×…r؁rÙ}rÚ(hh]rÛ…rÜRrÝhj»ubhj¸XPromptrÞ†rß…ràrá}râ(hh]rã…räRråhj»ubhj¸XDeletedræ†rç…rèré}rê(hh]rë…rìRríhj»ubhj¸XInsertedrî†rï…rðrñ}rò(hh]ró…rôRrõhj»ubhj¸XHeadingrö†r÷…rørù}rú(hh]rû…rüRrýhj»ubhj¸XStrongrþ†rÿ…rr}r(hh]r…rRrhj»ubhj¸XEmphr†r…rr	}r
(hh]r…rRr
hj»ube…rRrhhfjæjéjj	j¾jÁjöjùjîjñjÖjÙjÞjájþjjÆjÉjÎjÑubhj¾…r…rr}r(hh]r…rRrhhfubhXKeywordr…r…rr}r(hh]r(hjh†r…rr}r (hh]r!…r"Rr#hjubhjj†r$…r%r&}r'(hh]r(…r)Rr*hjubhjjO†r+…r,r-}r.(hh]r/…r0Rr1hjubhjXPreProcr2†r3…r4r5}r6(hh]r7…r8Rr9hjubhjXControlr:†r;…r<r=}r>(hh]r?…r@RrAhjubhjj‡†rB…rCrD}rE(hh]rF…rGRrHhjubhjj†rI…rJrK}rL(hh]rM…rNRrOhjubhjj+†rP…rQrR}rS(hh]rT…rURrVhjubhjXDeclarationrW†rX…rYrZ}r[(hh]r\…r]Rr^hjubhjXReservedr_†r`…rarb}rc(hh]rd…reRrfhjube…rgRrhhhfj‡jDjWjZjjKj+jRj_jbjOj-j:j=jj&j2j5hjubhja…ri…rjrk}rl(hh]rm…rnRrohhfubhXTextrp…rq…rrrs}rt(hh]ru(hjpXRootrv†rw…rxry}rz(hh]r{…r|Rr}hjsubhjpj†r~…rr€}r(hh]r‚…rƒRr„hjsubhjpXRagr…†r†…r‡rˆ}r‰(hh]rŠ…r‹RrŒhjsubhjpX
Whitespacer†rŽ…rr}r‘(hh]r’…r“Rr”hjsubhjpXBeerr•†r–…r—r˜}r™(hh]rš…r›RrœhjsubhjpXPunctuationr†rž…rŸr }r¡(hh]r¢…r£Rr¤hjsube…r¥Rr¦hhfjjjj€jj jvjyj•j˜j…jˆubhhj…r§…r¨r©}rª(hh]r«hjX	Indicatorr¬†r­…r®r¯}r°(hh]r±…r²Rr³hj©uba…r´Rrµhhfj¬j¯ube…r¶Rr·jpjshihlj¾jjajkjjh‰hŒj‘j”jj©hqhthhj¸j»XTokenr¸hfj¾jÁj_jbubhhhChFh
h
hShVh#h&h[h^h;h>h+h.h3h6hhhKhNubX" Vim completion scriptr¹†rºjsX
r»†r¼hX" Language:	PHPr½†r¾jsj»†r¿hX8" Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )rÀ†rÁjsj»†rÂhX" Last Change:	2006 May 9rÆrÄjsj»†rÅhX"rƆrÇjsj»†rÈhX	"   TODO:rɆrÊjsj»†rËhX"   - Class aware completion:r̆rÍjsj»†rÎhX"      a) caching?rφrÐjsj»†rÑhXD"   - Switching to HTML (XML?) completion (SQL) inside of phpStringsrÒ†rÓjsj»†rÔhXE"   - allow also for XML completion <- better do html_flavor for HTMLrÕ†rÖjsj»†r×hX"     completionr؆rÙjsj»†rÚhXL"   - outside of <?php?> getting parent tag may cause problems. Heh, even inrÛ†rÜjsj»†rÝhXF"     perfect conditions GetLastOpenTag doesn't cooperate... Inside ofrÞ†rßjsj»†ràhXN"     phpStrings this can be even a bonus but outside of <?php?> it is not therá†râjsj»†rãhX"     best situationrä†råjsj»†ræjsj»†rçjXfunctionrè†réj©X!rê†rëjsX rì†ríjsXphpcompleterî†rïjsX#rð†rñjsXCompletePHPrò†rój©X(rô†rõjsX	findstartrö†r÷j©X,rø†rùjsjì†rújsXbaserû†rüj©X)rý†rþjsj»†rÿjsX	r†rjXifr†rjsjì†rjXar†rjsX:r†rjsX	findstartr	†r
jsj»†rjsX		r†r
jsXunletr†rj©jê†rjsjì†rjXbr†rjsj†rjsXphp_menur†rjsj»†rhX(		" Check if we are inside of PHP markupr†rjsj»†rjsX		r†rjXletr†rjsjì†rjsXposr †r!jsjì†r"j©X=r#†r$jsjì†r%jsXgetposr&†r'j©jô†r(jäX'.'r)†r*j©jý†r+jsj»†r,jsX		r-†r.jXletr/†r0jsjì†r1jsXphpbeginr2†r3jsjì†r4j©j#†r5jsjì†r6jsX
searchpairposr7†r8j©jô†r9jäX'<?'r:†r;j©jø†r<jsjì†r=jäX''r>†r?j©jø†r@jsjì†rAjäX'?>'rB†rCj©jø†rDjsjì†rEjäX'bWn'rF†rGj©jø†rHjsj»†rIjsX				rJ†rKjsX\rL†rMjsjì†rNjäXH'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\|comment"'rO†rPj©jý†rQjsj»†rRjsX		rS†rTjXletrU†rVjsjì†rWjsXphpendrX†rYjsX   rZ†r[j©j#†r\jsjì†r]jsX
searchpairposr^†r_j©jô†r`jäX'<?'ra†rbj©jø†rcjsjì†rdjäX''re†rfj©jø†rgjsjì†rhjäX'?>'ri†rjj©jø†rkjsjì†rljäX'Wn'rm†rnj©jø†rojsj»†rpjsX				rq†rrjsjL†rsjsjì†rtjäXH'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\|comment"'ru†rvj©jý†rwjsj»†rxjsj»†ryjsX		rz†r{jXifr|†r}jsjì†r~jsXphpbeginr†r€jsjì†rj©j#†r‚j©j#†rƒjsjì†r„jsX[r…†r†jbX0r‡†rˆj©jø†r‰jbj‡†rŠjsX]r‹†rŒjsjì†rjsX&rކrjsjކrjsjì†r‘jsXphpendr’†r“jsjì†r”j©j#†r•j©j#†r–jsjì†r—jsj…†r˜jbj‡†r™j©jø†ršjbj‡†r›jsj‹†rœjsj»†rhX4			" We are outside of any PHP markup. Complete HTMLrž†rŸjsj»†r jsX			r¡†r¢jXletr£†r¤jsjì†r¥jsX	htmlbeginr¦†r§jsjì†r¨j©j#†r©jsjì†rªjsXhtmlcompleter«†r¬jsjð†r­jsXCompleteTagsr®†r¯j©jô†r°jbX1r±†r²j©jø†r³jsjì†r´jäX''rµ†r¶j©jý†r·jsj»†r¸jsX			r¹†rºjXletr»†r¼jsjì†r½jsX
cursor_colr¾†r¿jsjì†rÀj©j#†rÁjsjì†rÂjsXposrÆrÄjsj…†rÅjbX2rƆrÇjsj‹†rÈjsj»†rÉjsX			rʆrËjXletr̆rÍjsjì†rÎjsXbaserφrÐjsjì†rÑj©j#†rÒjsjì†rÓjsXgetlinerÔ†rÕj©jô†rÖjäX'.'r׆rØj©jý†rÙjsj…†rÚjsX	htmlbeginrÛ†rÜjsjì†rÝjsj†rÞjsjì†rßjsX
cursor_colrà†rájsj‹†râjsj»†rãjsX			rä†råjXletræ†rçjsjì†rèjj†réjsj†rêjsXphp_menurë†rìjsjì†ríj©j#†rîjsjì†rïjsXhtmlcompleterð†rñjsjð†ròjsXCompleteTagsró†rôj©jô†rõjbj‡†röj©jø†r÷jsjì†røjsXbaserù†rúj©jý†rûjsj»†rüjsX			rý†rþjXreturnrÿ†rjsjì†rjsX	htmlbeginr†rjsj»†rjsX		r†rjXelser†rjsj»†r	hX!			" locate the start of the wordr
†rjsj»†rjsX			r
†rjXletr†rjsjì†rjsXliner†rjsjì†rj©j#†rjsjì†rjsXgetliner†rj©jô†rjäX'.'r†rj©jý†rjsj»†rjsX			r†rjXletr †r!jsjì†r"jXstartr#†r$jsjì†r%j©j#†r&jsjì†r'jXcolr(†r)j©jô†r*jäX'.'r+†r,j©jý†r-jsjì†r.j©X-r/†r0jsjì†r1jbj±†r2jsj»†r3jsX			r4†r5jXletr6†r7jsjì†r8jsXcurliner9†r:jsjì†r;j©j#†r<jsjì†r=jsXliner>†r?j©jô†r@jäX'.'rA†rBj©jý†rCjsj»†rDjsX			rE†rFjXletrG†rHjsjì†rIjsXcompl_beginrJ†rKjsjì†rLj©j#†rMjsjì†rNjXcolrO†rPj©jô†rQjäX'.'rR†rSj©jý†rTjsjì†rUj©j/†rVjsjì†rWjbjƆrXjsj»†rYjsX			rZ†r[jXwhiler\†r]jsjì†r^jXstartr_†r`jsjì†raj©X>rb†rcj©j#†rdjsjì†rejbj‡†rfjsjì†rgjsjކrhjsjކrijsjì†rjjsXlinerk†rljsj…†rmjXstartrn†rojsjì†rpj©j/†rqjsjì†rrjbj±†rsjsj‹†rtjsjì†ruj©j#†rvj©X~rw†rxjsjì†ryjäX'[a-zA-Z_0-9\x7f-\xff$]'rz†r{jsj»†r|jsX				r}†r~jXletr†r€jsjì†rjXstartr‚†rƒjsjì†r„j©j/†r…j©j#†r†jsjì†r‡jbj±†rˆjsj»†r‰jsX			rІr‹jXendwhilerŒ†rjsj»†rŽjsX			r†rjXletr‘†r’jsjì†r“jj†r”jsj†r•jsX
compl_contextr–†r—jsjì†r˜j©j#†r™jsjì†ršjsXgetliner›†rœj©jô†rjäX'.'rž†rŸj©jý†r jsj…†r¡jbj‡†r¢jsj†r£jsXcompl_beginr¤†r¥jsj‹†r¦jsj»†r§jsX			r¨†r©jXreturnrª†r«jsjì†r¬jXstartr­†r®jsj»†r¯hXB
			" We can be also inside of phpString with HTML tags. Deal withr°†r±jsj»†r²hX 			" it later (time, not lines).r³†r´jsj»†rµjsX		r¶†r·jXendifr¸†r¹jsj»†rºjsj»†r»jsj†r¼jXendifr½†r¾jsj»†r¿hXF	" If exists b:php_menu it means completion was already constructed werÀ†rÁjsj»†rÂhX!	" don't need to do anything morerÆrÄjsj»†rÅjsj†rÆjXifrdžrÈjsjì†rÉjsXexistsrʆrËj©jô†rÌjHX"b:php_menu"r͆rÎj©jý†rÏjsj»†rÐjsX		rцrÒjXreturnrÓ†rÔjsjì†rÕjj†rÖjsj†r×jsXphp_menur؆rÙjsj»†rÚjsj†rÛjXendifr܆rÝjsj»†rÞhX	" Initialize base return listsr߆ràjsj»†rájsj†râjXletrã†räjsjì†råjXresræ†rçjsjì†rèj©j#†réjsjì†rêjsj…†rëjsj‹†rìjsj»†ríjsj†rîjXletrï†rðjsjì†rñjsXres2rò†rójsjì†rôj©j#†rõjsjì†röjsj…†r÷jsj‹†røjsj»†rùhX)	" a:base is very short - we need contextrú†rûjsj»†rüjsj†rýjXifrþ†rÿjsjì†rjsXexistsr†rj©jô†rjHX"b:compl_context"r†rj©jý†rjsj»†rjsX		r†r	jXletr
†rjsjì†rjsXcontextr
†rjsjì†rj©j#†rjsjì†rjj†rjsj†rjsX
compl_contextr†rjsj»†rjsX		r†rjsXunletr†rj©jê†rjsjì†rjj†rjsj†rjsX
compl_contextr†r jsj»†r!jsj†r"jXendifr#†r$jsj»†r%jsj»†r&jsj†r'jXifr(†r)jsjì†r*j©jê†r+jsXexistsr,†r-j©jô†r.jäX'g:php_builtin_functions'r/†r0j©jý†r1jsj»†r2jsX		r3†r4jXcallr5†r6jsjì†r7jsXphpcompleter8†r9jsjð†r:jsXLoadDatar;†r<j©jô†r=j©jý†r>jsj»†r?jsj†r@jXendifrA†rBjsj»†rCjsj»†rDjsj†rEjXletrF†rGjsjì†rHjsXscontextrI†rJjsjì†rKj©j#†rLjsjì†rMjsX
substituterN†rOj©jô†rPjsXcontextrQ†rRj©jø†rSjsjì†rTjäX/'\$\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*$'rU†rVj©jø†rWjsjì†rXjäX''rY†rZj©jø†r[jsjì†r\jäX''r]†r^j©jý†r_jsj»†r`jsj»†rajsj†rbjXifrc†rdjsjì†rejsXscontextrf†rgjsjì†rhj©j#†rij©jw†rjjsjì†rkjäX'\(=\s*new\|extends\)\s\+$'rl†rmjsj»†rnhX		" Complete class namero†rpjsj»†rqhX:		" Internal solution for finding classes in current file.rr†rsjsj»†rtjsX		ru†rvjXletrw†rxjsjì†ryjXfilerz†r{jsjì†r|j©j#†r}jsjì†r~jsXgetliner†r€j©jô†rjbj±†r‚j©jø†rƒjsjì†r„jäX'$'r…†r†j©jý†r‡jsj»†rˆjsX		r‰†rŠjXcallr‹†rŒjsjì†rjsXfilterrކrj©jô†rjXfiler‘†r’j©jø†r“jsj»†r”jsX				r•†r–jsjL†r—jsjì†r˜jäXI'v:val =~ "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("'r™†ršj©jý†r›jsj»†rœjsX		r†ržjXletrŸ†r jsjì†r¡jsXfnamesr¢†r£jsjì†r¤j©j#†r¥jsjì†r¦jXjoinr§†r¨j©jô†r©jsXmaprª†r«j©jô†r¬jsXtagfilesr­†r®j©jô†r¯j©jý†r°j©jø†r±jsjì†r²jäX'escape(v:val, " \\#%")'r³†r´j©jý†rµj©jý†r¶jsj»†r·jsX		r¸†r¹jXletrº†r»jsjì†r¼jsXjfiler½†r¾jsjì†r¿j©j#†rÀjsjì†rÁjXjoinr†rÃj©jô†rÄjXfilerņrÆj©jø†rÇjsjì†rÈjäX' 'rɆrÊj©jý†rËjsj»†rÌjsX		r͆rÎjXletrφrÐjsjì†rÑjsX
int_valuesrÒ†rÓjsjì†rÔj©j#†rÕjsjì†rÖjsXsplitr׆rØj©jô†rÙjsXjfilerÚ†rÛj©jø†rÜjsjì†rÝjäX'class\s\+'rÞ†rßj©jý†ràjsj»†rájsX		râ†rãjXleträ†råjsjì†ræjsXint_classesrç†rèjsjì†réj©j#†rêjsjì†rëjsX{rì†ríjsX}rî†rïjsj»†rðjsX		rñ†ròjXforró†rôjsjì†rõjXirö†r÷jsjì†røjXinrù†rújsjì†rûjsX
int_valuesrü†rýjsj»†rþjsX			rÿ†rjXletr†rjsjì†rjsXc_namer†rjsjì†rj©j#†rjsjì†rjsXmatchstrr	†r
j©jô†rjjö†rj©jø†r
jsjì†rjäX+'^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*'r†rj©jý†rjsj»†rjsX			r†rjXifr†rjsjì†rjsXc_namer†rjsjì†rj©jê†rj©j#†rjsjì†rjäX''r†rjsj»†r jsX				r!†r"jXletr#†r$jsjì†r%jsXint_classesr&†r'jsj…†r(jsXc_namer)†r*jsj‹†r+jsjì†r,j©j#†r-jsjì†r.jäX''r/†r0jsj»†r1jsX			r2†r3jXendifr4†r5jsj»†r6jsX		r7†r8jXendforr9†r:jsj»†r;hX+
		" Prepare list of classes from tags filer<†r=jsj»†r>jsX		r?†r@jXletrA†rBjsjì†rCjsXext_classesrD†rEjsjì†rFj©j#†rGjsjì†rHjsjì†rIjsjî†rJjsj»†rKjsX		rL†rMjXletrN†rOjsjì†rPjsXfnamesrQ†rRjsjì†rSj©j#†rTjsjì†rUjXjoinrV†rWj©jô†rXjsXmaprY†rZj©jô†r[jsXtagfilesr\†r]j©jô†r^j©jý†r_j©jø†r`jsjì†rajäX'escape(v:val, " \\#%")'rb†rcj©jý†rdj©jý†rejsj»†rfjsX		rg†rhjXifri†rjjsjì†rkjsXfnamesrl†rmjsjì†rnj©jê†roj©j#†rpjsjì†rqjäX''rr†rsjsj»†rtjsX			ru†rvjsXexerw†rxjsjì†ryjäX'silent! vimgrep /^'rz†r{jsX.r|†r}jj†r~jsj†rjsXbaser€†rjsj|†r‚jäX'.*\tc\(\t\|$\)/j 'rƒ†r„jsj|†r…jsXfnamesr††r‡jsj»†rˆjsX			r‰†rŠjXletr‹†rŒjsjì†rjsXqflistrކrjsjì†rj©j#†r‘jsjì†r’jsX	getqflistr“†r”j©jô†r•j©jý†r–jsj»†r—jsX			r˜†r™jXifrš†r›jsjì†rœjsXlenr†ržj©jô†rŸjsXqflistr †r¡j©jý†r¢jsjì†r£j©jb†r¤jsjì†r¥jbj‡†r¦jsj»†r§jsX				r¨†r©jXforrª†r«jsjì†r¬jsXfieldr­†r®jsjì†r¯jXinr°†r±jsjì†r²jsXqflistr³†r´jsj»†rµhX:					" [:space:] thing: we don't have to be so strict whenr¶†r·jsj»†r¸hX;					" dealing with tags files - entries there were alreadyr¹†rºjsj»†r»hX					" checked by ctags.r¼†r½jsj»†r¾jsX					r¿†rÀjXletrÁ†rÂjsjì†rÃjsXitemrĆrÅjsjì†rÆj©j#†rÇjsjì†rÈjsXmatchstrrɆrÊj©jô†rËjsXfieldr̆rÍjsj…†rÎjäX'text'rφrÐjsj‹†rÑj©jø†rÒjsjì†rÓjäX'^[^[:space:]]\+'rÔ†rÕj©jý†rÖjsj»†r×jsX					r؆rÙjXletrÚ†rÛjsjì†rÜjsXext_classesr݆rÞjsj…†rßjsXitemrà†rájsj‹†râjsjì†rãj©j#†räjsjì†råjäX''ræ†rçjsj»†rèjsX				ré†rêjXendforrë†rìjsj»†ríjsX			rî†rïjXendifrð†rñjsj»†ròjsX		ró†rôjXendifrõ†röjsj»†r÷hXB
		" Prepare list of built in classes from g:php_builtin_functionsrø†rùjsj»†rújsX		rû†rüjXifrý†rþjsjì†rÿj©jê†rjsXexistsr†rj©jô†rjHX"g:php_omni_bi_classes"r†rj©jý†rjsj»†rjsX			r†r	jXletr
†rjsjì†rjXgr
†rjsj†rjsXphp_omni_bi_classesr†rjsjì†rj©j#†rjsjì†rjsjì†rjsjî†rjsj»†rjsX			r†rjXforr†rjsjì†rjjö†rjsjì†rjXinr†r jsjì†r!jsXkeysr"†r#j©jô†r$jj
†r%jsj†r&jsXphp_builtin_object_functionsr'†r(j©jý†r)jsj»†r*jsX				r+†r,jXletr-†r.jsjì†r/jj
†r0jsj†r1jsXphp_omni_bi_classesr2†r3jsj…†r4jsX
substituter5†r6j©jô†r7jjö†r8j©jø†r9jsjì†r:jäX'::.*$'r;†r<j©jø†r=jsjì†r>jäX''r?†r@j©jø†rAjsjì†rBjäX''rC†rDj©jý†rEjsj‹†rFjsjì†rGj©j#†rHjsjì†rIjäX''rJ†rKjsj»†rLjsX			rM†rNjXendforrO†rPjsj»†rQjsX		rR†rSjXendifrT†rUjsj»†rVjsj»†rWjsX		rX†rYjXletrZ†r[jsjì†r\jsXclassesr]†r^jsjì†r_j©j#†r`jsjì†rajXsortrb†rcj©jô†rdjsXkeysre†rfj©jô†rgjsXint_classesrh†rij©jý†rjj©jý†rkjsj»†rljsX		rm†rnjXletro†rpjsjì†rqjsXclassesrr†rsjsjì†rtj©X+ru†rvj©j#†rwjsjì†rxjXsortry†rzj©jô†r{jsXkeysr|†r}j©jô†r~jsXext_classesr†r€j©jý†rj©jý†r‚jsj»†rƒjsX		r„†r…jXletr††r‡jsjì†rˆjsXclassesr‰†rŠjsjì†r‹j©ju†rŒj©j#†rjsjì†rŽjXsortr†rj©jô†r‘jsXkeysr’†r“j©jô†r”jj
†r•jsj†r–jsXphp_omni_bi_classesr—†r˜j©jý†r™j©jý†ršjsj»†r›jsj»†rœjsX		r†ržjXforrŸ†r jsjì†r¡jXmr¢†r£jsjì†r¤jXinr¥†r¦jsjì†r§jsXclassesr¨†r©jsj»†rªjsX			r«†r¬jXifr­†r®jsjì†r¯jj¢†r°jsjì†r±j©j#†r²j©jw†r³jsjì†r´jäX'^'rµ†r¶jsj|†r·jj†r¸jsj†r¹jsXbaserº†r»jsj»†r¼jsX				r½†r¾jXcallr¿†rÀjsjì†rÁjsXaddr†rÃj©jô†rÄjXresrņrÆj©jø†rÇjsjì†rÈjj¢†rÉj©jý†rÊjsj»†rËjsX			r̆rÍjXendifrΆrÏjsj»†rÐjsX		rцrÒjXendforrÓ†rÔjsj»†rÕjsj»†rÖjsX		r׆rØjXletrÙ†rÚjsjì†rÛjsX
final_menur܆rÝjsjì†rÞj©j#†rßjsjì†ràjsj…†rájsj‹†râjsj»†rãjsX		rä†råjXforræ†rçjsjì†rèjjö†réjsjì†rêjXinrë†rìjsjì†ríjXresrî†rïjsj»†rðjsX			rñ†ròjXletró†rôjsjì†rõjsX
final_menurö†r÷jsjì†røj©ju†rùj©j#†rújsjì†rûjsj…†rüjsjì†rýjäX'word'rþ†rÿjsj†r	jjö†r	j©jø†r	jsjì†r	jäX'kind'r	†r	jsj†r	jäX'c'r	†r	jsjî†r		jsj‹†r
	jsj»†r	jsX		r	†r
	jXendforr	†r	jsj»†r	jsj»†r	jsX		r	†r	jXreturnr	†r	jsjì†r	jsX
final_menur	†r	jsj»†r	jsj»†r	jsj†r	jXelseifr	†r	jsjì†r	jsXscontextr	†r 	jsjì†r!	j©j#†r"	j©jw†r#	jsjì†r$	jäX
'\(->\|::\)$'r%	†r&	jsj»†r'	hX)		" Complete user functions and variablesr(	†r)	jsj»†r*	hX'		" Internal solution for current file.r+	†r,	jsj»†r-	hXB		" That seems as unnecessary repeating of functions but there arer.	†r/	e(jsj»†r0	hXD		" few not so subtle differences as not appending of $ and additionr1	†r2	jsj»†r3	hX7		" of 'kind' tag (not necessary in regular completion)r4	†r5	jsj»†r6	jsj»†r7	jsX		r8	†r9	jXifr:	†r;	jsjì†r<	jsXscontextr=	†r>	jsjì†r?	j©j#†r@	j©jw†rA	jsjì†rB	jäX'->$'rC	†rD	jsjì†rE	jsjކrF	jsjކrG	jsjì†rH	jsXscontextrI	†rJ	jsjì†rK	j©jê†rL	j©jw†rM	jsjì†rN	jäX'\$this->$'rO	†rP	jsj»†rQ	hX
			" Get name of the classrR	†rS	jsj»†rT	jsX			rU	†rV	jXletrW	†rX	jsjì†rY	jsX	classnamerZ	†r[	jsjì†r\	j©j#†r]	jsjì†r^	jsXphpcompleter_	†r`	jsjð†ra	jsXGetClassNamerb	†rc	j©jô†rd	jsXscontextre	†rf	j©jý†rg	jsj»†rh	hXF
			" Get location of class definition, we have to iterate through allri	†rj	jsj»†rk	hXE			" tags files separately because we need relative path from currentrl	†rm	jsj»†rn	hX?			" file to the exact file (tags file can be in different dir)ro	†rp	jsj»†rq	jsX			rr	†rs	jXifrt	†ru	jsjì†rv	jsX	classnamerw	†rx	jsjì†ry	j©jê†rz	j©j#†r{	jsjì†r|	jäX''r}	†r~	jsj»†r	jsX				r€	†r	jXletr‚	†rƒ	jsjì†r„	jsX
classlocationr…	†r†	jsjì†r‡	j©j#†rˆ	jsjì†r‰	jsXphpcompleterŠ	†r‹	jsjð†rŒ	jsXGetClassLocationr	†rŽ	j©jô†r	jsX	classnamer	†r‘	j©jý†r’	jsj»†r“	jsX			r”	†r•	jXelser–	†r—	jsj»†r˜	jsX				r™	†rš	jXletr›	†rœ	jsjì†r	jsX
classlocationrž	†rŸ	jsjì†r 	j©j#†r¡	jsjì†r¢	jäX''r£	†r¤	jsj»†r¥	jsX			r¦	†r§	jXendifr¨	†r©	jsj»†rª	jsj»†r«	jsX			r¬	†r­	jXifr®	†r¯	jsjì†r°	jsX
classlocationr±	†r²	jsjì†r³	j©j#†r´	j©j#†rµ	jsjì†r¶	jäX'VIMPHP_BUILTINOBJECT'r·	†r¸	jsj»†r¹	jsj»†rº	jsX				r»	†r¼	jXforr½	†r¾	jsjì†r¿	jsXobjectrÀ	†rÁ	jsjì†rÂ	jXinrÃ	†rÄ	jsjì†rÅ	jsXkeysrÆ	†rÇ	j©jô†rÈ	jj
†rÉ	jsj†rÊ	jsXphp_builtin_object_functionsrË	†rÌ	j©jý†rÍ	jsj»†rÎ	jsX					rÏ	†rÐ	jXifrÑ	†rÒ	jsjì†rÓ	jsXobjectrÔ	†rÕ	jsjì†rÖ	j©j#†r×	j©jw†rØ	jsjì†rÙ	jäX'^'rÚ	†rÛ	jsj|†rÜ	jsX	classnamerÝ	†rÞ	jsj»†rß	jsX						rà	†rá	jXletrâ	†rã	jsjì†rä	jXresrå	†ræ	jsjì†rç	j©ju†rè	j©j#†ré	jsjì†rê	jsj…†rë	jsjì†rì	jäX'word'rí	†rî	jsj†rï	jsX
substituterð	†rñ	j©jô†rò	jsXobjectró	†rô	j©jø†rõ	jsjì†rö	jäX'.*::'r÷	†rø	j©jø†rù	jsjì†rú	jäX''rû	†rü	j©jø†rý	jsjì†rþ	jäX''rÿ	†r
j©jý†r
j©jø†r
jsjȠr
jsX							   	r
†r
jsjL†r
jsX    r
†r
jäX'info'r	
†r

jsj†r
jsjì†r
jj
†r
jsj†r
jsXphp_builtin_object_functionsr
†r
jsj…†r
jsXobjectr
†r
jsjܠr
jsjî†r
jsjܠr
jsjȠr
jsX					r
†r
jXendifr
†r
jsjȠr
jsX				r
†r
jXendforr
†r 
jsjȠr!
jsjȠr"
jsX				r#
†r$
jXreturnr%
†r&
jsjì†r'
jXresr(
†r)
jsjȠr*
jsjȠr+
jsX			r,
†r-
jXendifr.
†r/
jsjȠr0
jsjȠr1
jsX			r2
†r3
jXifr4
†r5
jsjì†r6
jsXfilereadabler7
†r8
j©jô†r9
jsX
classlocationr:
†r;
j©jý†r<
jsjȠr=
jsX				r>
†r?
jXletr@
†rA
jsjì†rB
jsX	classfilerC
†rD
jsjì†rE
j©j#†rF
jsjì†rG
jsXreadfilerH
†rI
j©jô†rJ
jsX
classlocationrK
†rL
j©jý†rM
jsjȠrN
jsX				rO
†rP
jXletrQ
†rR
jsjì†rS
jsXclasscontentrT
†rU
jsjì†rV
j©j#†rW
jsjì†rX
jäX''rY
†rZ
jsjȠr[
jsX				r\
†r]
jXletr^
†r_
jsjì†r`
jsXclasscontentra
†rb
jsjì†rc
jsj|†rd
j©j#†re
jsjì†rf
jHX"\n"rg
†rh
jsj|†ri
jsXphpcompleterj
†rk
jsjð†rl
jsXGetClassContentsrm
†rn
j©jô†ro
jsX	classfilerp
†rq
j©jø†rr
jsjì†rs
jsX	classnamert
†ru
j©jý†rv
jsjȠrw
jsX				rx
†ry
jXletrz
†r{
jsjì†r|
jsX	sccontentr}
†r~
jsjì†r
j©j#†r€
jsjì†r
jsXsplitr‚
†rƒ
j©jô†r„
jsXclasscontentr…
†r†
j©jø†r‡
jsjì†rˆ
jHX"\n"r‰
†rŠ
j©jý†r‹
jsj»†rŒ
hX@
				" YES, YES, YES! - we have whole content including extends!r
†rŽ
jsj»†r
hXB				" Now we need to get two elements: public functions and publicr
†r‘
jsj»†r’
hX
				" varsr“
†r”
jsj»†r•
hX@				" NO, NO, NO! - third separate filtering looking for contentr–
†r—
jsj»†r˜
hX@				" :(, but all of them have differences. To squeeze them intor™
†rš
jsj»†r›
hX@				" one implementation would require many additional argumentsrœ
†r
jsj»†rž
hX				" and ifs. No good solutionrŸ
†r 
jsj»†r¡
hX;				" Functions declared with public keyword or without anyr¢
†r£
jsj»†r¤
hX				" keyword are publicr¥
†r¦
jsj»†r§
jsX				r¨
†r©
jXletrª
†r«
jsjì†r¬
jsX	functionsr­
†r®
jsjì†r¯
j©j#†r°
jsjì†r±
jsXfilterr²
†r³
j©jô†r´
jsXdeepcopyrµ
†r¶
j©jô†r·
jsX	sccontentr¸
†r¹
j©jý†rº
j©jø†r»
jsj»†r¼
jsX						r½
†r¾
jsjL†r¿
jsjì†rÀ
jäX<'v:val =~ "^\\s*\\(static\\s\\+\\|public\\s\\+\\)*function"'rÁ
†rÂ
j©jý†rÃ
jsj»†rÄ
jsX				rÅ
†rÆ
jXletrÇ
†rÈ
jsjì†rÉ
jsXjfuncsrÊ
†rË
jsjì†rÌ
j©j#†rÍ
jsjì†rÎ
jXjoinrÏ
†rÐ
j©jô†rÑ
jsX	functionsrÒ
†rÓ
j©jø†rÔ
jsjì†rÕ
jäX' 'rÖ
†r×
j©jý†rØ
jsj»†rÙ
jsX				rÚ
†rÛ
jXletrÜ
†rÝ
jsjì†rÞ
jsXsfuncsrß
†rà
jsjì†rá
j©j#†râ
jsjì†rã
jsXspliträ
†rå
j©jô†ræ
jsXjfuncsrç
†rè
j©jø†ré
jsjì†rê
jäX'function\s\+'rë
†rì
j©jý†rí
jsj»†rî
jsX				rï
†rð
jXletrñ
†rò
jsjì†ró
jsXc_functionsrô
†rõ
jsjì†rö
j©j#†r÷
jsjì†rø
jsjì†rù
jsjî†rú
jsj»†rû
jsX				rü
†rý
jXforrþ
†rÿ
jsjì†rjjö†rjsjì†rjXinr†rjsjì†rjsXsfuncsr†rjsj»†rjsX					r	†r
jXletr†rjsjì†r
jsXf_namer†rjsjì†rj©j#†rjsjì†rjsXmatchstrr†rj©jô†rjjö†rj©jø†rjsj»†rjsX							r†rjsjL†rjsjì†rjäX4'^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze'r†rj©jý†rjsj»†r jsX					r!†r"jXletr#†r$jsjì†r%jsXf_argsr&†r'jsjì†r(j©j#†r)jsjì†r*jsXmatchstrr+†r,j©jô†r-jjö†r.j©jø†r/jsj»†r0jsX							r1†r2jsjL†r3jsjì†r4jäXC'^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)\_s*{'r5†r6j©jý†r7jsj»†r8jsX					r9†r:jXifr;†r<jsjì†r=jsXf_namer>†r?jsjì†r@j©jê†rAj©j#†rBjsjì†rCjäX''rD†rEjsj»†rFjsX						rG†rHjXletrI†rJjsjì†rKjsXc_functionsrL†rMjsj…†rNjsXf_namerO†rPjsj|†rQjäX'('rR†rSjsj‹†rTjsjì†rUj©j#†rVjsjì†rWjsXf_argsrX†rYjsj»†rZjsX					r[†r\jXendifr]†r^jsj»†r_jsX				r`†rajXendforrb†rcjsj»†rdhX<				" Variables declared with var or with public keyword arere†rfjsj»†rghX				" publicrh†rijsj»†rjjsX				rk†rljXletrm†rnjsjì†rojsX	variablesrp†rqjsjì†rrj©j#†rsjsjì†rtjsXfilterru†rvj©jô†rwjsXdeepcopyrx†ryj©jô†rzjsX	sccontentr{†r|j©jý†r}j©jø†r~jsj»†rjsX						r€†rjsjL†r‚jsjì†rƒjäX-'v:val =~ "^\\s*\\(public\\|var\\)\\s\\+\\$"'r„†r…j©jý†r†jsj»†r‡jsX				rˆ†r‰jXletrІr‹jsjì†rŒjsXjvarsr†rŽjsjì†rj©j#†rjsjì†r‘jXjoinr’†r“j©jô†r”jsX	variablesr•†r–j©jø†r—jsjì†r˜jäX' 'r™†ršj©jý†r›jsj»†rœjsX				r†ržjXletrŸ†r jsjì†r¡jsXsvarsr¢†r£jsjì†r¤j©j#†r¥jsjì†r¦jsXsplitr§†r¨j©jô†r©jsXjvarsrª†r«j©jø†r¬jsjì†r­jäX'\$'r®†r¯j©jý†r°jsj»†r±jsX				r²†r³jXletr´†rµjsjì†r¶jsXc_variablesr·†r¸jsjì†r¹j©j#†rºjsjì†r»jsjì†r¼jsjî†r½jsj»†r¾jsX				r¿†rÀjXforrÁ†rÂjsjì†rÃjjö†rÄjsjì†rÅjXinrƆrÇjsjì†rÈjsXsvarsrɆrÊjsj»†rËjsX					r̆rÍjXletrΆrÏjsjì†rÐjsXc_varrцrÒjsjì†rÓj©j#†rÔjsjì†rÕjsXmatchstrrÖ†r×j©jô†rØjjö†rÙj©jø†rÚjsj»†rÛjsX							r܆rÝjsjL†rÞjsjì†rßjäX1'^\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze'rà†ráj©jý†râjsj»†rãjsX					rä†råjXifræ†rçjsjì†rèjsXc_varré†rêjsjì†rëj©jê†rìj©j#†ríjsjì†rîjäX''rï†rðjsj»†rñjsX						rò†rójXletrô†rõjsjì†röjsXc_variablesr÷†røjsj…†rùjsXc_varrú†rûjsj‹†rüjsjì†rýj©j#†rþjsjì†rÿjäX''r†rjsj»†rjsX					r†rjXendifr†rjsj»†rjsX				r†r	jXendforr
†rjsj»†rjsj»†r
jsX				r†rjXletr†rjsjì†rjsX
all_valuesr†rjsjì†rj©j#†rjsjì†rjsjì†rjsjî†rjsj»†rjsX				r†rjXcallr†rjsjì†rjsXextendr †r!j©jô†r"jsX
all_valuesr#†r$j©jø†r%jsjì†r&jsXc_functionsr'†r(j©jý†r)jsj»†r*jsX				r+†r,jXcallr-†r.jsjì†r/jsXextendr0†r1j©jô†r2jsX
all_valuesr3†r4j©jø†r5jsjì†r6jsXc_variablesr7†r8j©jý†r9jsj»†r:jsj»†r;jsX				r<†r=jXforr>†r?jsjì†r@jj¢†rAjsjì†rBjXinrC†rDjsjì†rEjXsortrF†rGj©jô†rHjsXkeysrI†rJj©jô†rKjsX
all_valuesrL†rMj©jý†rNj©jý†rOjsj»†rPjsX					rQ†rRjXifrS†rTjsjì†rUjj¢†rVjsjì†rWj©j#†rXj©jw†rYjsjì†rZjäX'^'r[†r\jsj|†r]jj†r^jsj†r_jsXbaser`†rajsjì†rbjsjކrcjsjކrdjsjì†rejj¢†rfjsjì†rgj©jê†rhj©jw†rijsjì†rjjäX'::'rk†rljsj»†rmjsX						rn†rojXcallrp†rqjsjì†rrjsXaddrs†rtj©jô†rujXresrv†rwj©jø†rxjsjì†ryjj¢†rzj©jý†r{jsj»†r|jsX					r}†r~jXelseifr†r€jsjì†rjj¢†r‚jsjì†rƒj©j#†r„j©jw†r…jsjì†r†jäX'::'r‡†rˆjsj|†r‰jj†rŠjsj†r‹jsXbaserŒ†rjsj»†rŽjsX						r†rjXcallr‘†r’jsjì†r“jsXaddr”†r•j©jô†r–jsXres2r—†r˜j©jø†r™jsjì†ršjj¢†r›j©jý†rœjsj»†rjsX					rž†rŸjXendifr †r¡jsj»†r¢jsX				r£†r¤jXendforr¥†r¦jsj»†r§jsj»†r¨jsX				r©†rªjXletr«†r¬jsjì†r­jsX
start_listr®†r¯jsjì†r°j©j#†r±jsjì†r²jXresr³†r´jsjì†rµj©ju†r¶jsjì†r·jsXres2r¸†r¹jsj»†rºjsj»†r»jsX				r¼†r½jXletr¾†r¿jsjì†rÀjsX
final_listrÁ†rÂjsjì†rÃj©j#†rÄjsjì†rÅjsj…†rÆjsj‹†rÇjsj»†rÈjsX				rÉ†rÊjXforrË†rÌjsjì†rÍjjö†rÎjsjì†rÏjXinrÐ†rÑjsjì†rÒjsX
start_listrÓ†rÔjsj»†rÕjsX					rÖ†r×jXifrØ†rÙjsjì†rÚjsXhas_keyrÛ†rÜj©jô†rÝjsXc_variablesrÞ†rßj©jø†ràjsjì†rájjö†râj©jý†rãjsj»†räjsX						rå†ræjXletrç†rèjsjì†réjsXclassrê†rëjsjì†rìj©j#†ríjsjì†rîjäX' 'rï†rðjsj»†rñjsX						rò†rójXifrô†rõjsjì†röjsX
all_valuesr÷†røjsj…†rùjjö†rújsj‹†rûjsjì†rüj©jê†rýj©j#†rþjsjì†rÿjäX''r
†r
jsjȠr
jsX							r
†r
jXletr
†r
jsjì†r
jsXclassr
†r	
jsjì†r

j©j#†r
jsjì†r
jjö†r

jsj|†r
jäX	' class 'r
†r
jsjȠr
jsX						r
†r
jXendifr
†r
jsjȠr
jsX						r
†r
jXletr
†r
jsjì†r
jsX
final_listr
†r
jsjì†r
j©ju†r
j©j#†r 
jsjȠr!
jsX								r"
†r#
jsjL†r$
jsjì†r%
jsj…†r&
jsjì†r'
jäX'word'r(
†r)
jsj†r*
jjö†r+
j©jø†r,
jsjȠr-
jsX								r.
†r/
jsjL†r0
jsX   r1
†r2
jäX'info'r3
†r4
jsj†r5
jsXclassr6
†r7
jsj|†r8
jsX
all_valuesr9
†r:
jsj…†r;
jjö†r<
jsjܠr=
j©jø†r>
jsjȠr?
jsX								r@
†rA
jsjL†rB
jsX   rC
†rD
jäX'kind'rE
†rF
jsj†rG
jäX'v'rH
†rI
jsjî†rJ
jsjܠrK
jsjȠrL
jsX					rM
†rN
jXelserO
†rP
jsjȠrQ
jsX						rR
†rS
jXletrT
†rU
jsjì†rV
jsX
final_listrW
†rX
jsjì†rY
j©ju†rZ
j©j#†r[
jsjȠr\
jsX								r]
†r^
jsjL†r_
jsjì†r`
jsj…†ra
jsjì†rb
jäX'word'rc
†rd
jsj†re
jsX
substituterf
†rg
j©jô†rh
jjö†ri
j©jø†rj
jsjì†rk
jäX'.*::'rl
†rm
j©jø†rn
jsjì†ro
jäX''rp
†rq
j©jø†rr
jsjì†rs
jäX''rt
†ru
j©jý†rv
j©jø†rw
jsjȠrx
jsX								ry
†rz
jsjL†r{
jsX   r|
†r}
jäX'info'r~
†r
jsj†r€
jjö†r
jsj|†r‚
jsX
all_valuesrƒ
†r„
jsj…†r…
jjö†r†
jsj‹†r‡
jsj|†rˆ
jäX')'r‰
†rŠ
j©jø†r‹
jsj»†rŒ
jsX								r
†rŽ
jsjL†r
jsX   r
†r‘
jäX'kind'r’
†r“
jsj†r”
jäX'f'r•
†r–
jsjî†r—
jsj‹†r˜
jsj»†r™
jsX					rš
†r›
jXendifrœ
†r
jsj»†rž
jsX				rŸ
†r 
jXendforr¡
†r¢
jsj»†r£
jsj»†r¤
jsX				r¥
†r¦
jXreturnr§
†r¨
jsjì†r©
jsX
final_listrª
†r«
jsj»†r¬
jsj»†r­
jsX			r®
†r¯
jXendifr°
†r±
jsj»†r²
jsj»†r³
jsX		r´
†rµ
jXendifr¶
†r·
jsj»†r¸
jsj»†r¹
jsX		rº
†r»
jXifr¼
†r½
jsjì†r¾
jj†r¿
jsj†rÀ
jsXbaserÁ
†rÂ
jsjì†rÃ
j©j#†rÄ
j©jw†rÅ
jsjì†rÆ
jäX'^\$'rÇ
†rÈ
jsj»†rÉ
jsX			rÊ
†rË
jXletrÌ
†rÍ
jsjì†rÎ
jsX	adddollarrÏ
†rÐ
jsjì†rÑ
j©j#†rÒ
jsjì†rÓ
jäX'$'rÔ
†rÕ
jsj»†rÖ
jsX		r×
†rØ
jXelserÙ
†rÚ
jsj»†rÛ
jsX			rÜ
†rÝ
jXletrÞ
†rß
jsjì†rà
jsX	adddollarrá
†râ
jsjì†rã
j©j#†rä
jsjì†rå
jäX''ræ
†rç
jsj»†rè
jsX		ré
†rê
jXendifrë
†rì
jsj»†rí
jsX		rî
†rï
jXletrð
†rñ
jsjì†rò
jXfileró
†rô
jsjì†rõ
j©j#†rö
jsjì†r÷
jsXgetlinerø
†rù
j©jô†rú
jbj±†rû
j©jø†rü
jsjì†rý
jäX'$'rþ
†rÿ
j©jý†rjsj»†rjsX		r†rjXletr†rjsjì†rjsXjfiler†rjsjì†r	j©j#†r
jsjì†rjXjoinr†r
j©jô†rjXfiler†rj©jø†rjsjì†rjäX' 'r†rj©jý†rjsj»†rjsX		r†rjXletr†rjsjì†rjsXsfiler†rjsjì†rj©j#†rjsjì†r jsXsplitr!†r"j©jô†r#jsXjfiler$†r%j©jø†r&jsjì†r'jäX'\$'r(†r)j©jý†r*jsj»†r+jsX		r,†r-jXletr.†r/jsjì†r0jsXint_varsr1†r2jsjì†r3j©j#†r4jsjì†r5jsjì†r6jsjî†r7jsj»†r8jsX		r9†r:jXforr;†r<jsjì†r=jjö†r>jsjì†r?jXinr@†rAjsjì†rBjsXsfilerC†rDjsj»†rEjsX			rF†rGjXifrH†rIjsjì†rJjjö†rKjsjì†rLj©j#†rMj©jw†rNjsjì†rOjäX7'^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new'rP†rQjsj»†rRjsX				rS†rTjXletrU†rVjsjì†rWjsXvalrX†rYjsjì†rZj©j#†r[jsjì†r\jsXmatchstrr]†r^j©jô†r_jjö†r`j©jø†rajsjì†rbjäX+'^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*'rc†rdj©jý†rejsj|†rfjäX'->'rg†rhjsj»†rijsX			rj†rkjXelserl†rmjsj»†rnjsX				ro†rpjXletrq†rrjsjì†rsjsXvalrt†rujsjì†rvj©j#†rwjsjì†rxjsXmatchstrry†rzj©jô†r{jjö†r|j©jø†r}jsjì†r~jäX+'^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*'r†r€j©jý†rjsj»†r‚jsX			rƒ†r„jXendifr…†r†jsj»†r‡jsX			rˆ†r‰jXifrІr‹jsjì†rŒjsXvalr†rŽjsjì†rj©jê†rj©jw†r‘jsjì†r’jäX''r“†r”jsj»†r•jsX				r–†r—jXletr˜†r™jsjì†ršjsXint_varsr›†rœjsj…†rjsX	adddollarrž†rŸe(jsj|†r jsXvalr¡†r¢jsj‹†r£jsjì†r¤j©j#†r¥jsjì†r¦jäX''r§†r¨jsj»†r©jsX			rª†r«jXendifr¬†r­jsj»†r®jsX		r¯†r°jXendforr±†r²jsj»†r³hX?
		" ctags has good support for PHP, use tags file for externalr´†rµjsj»†r¶hX
		" variablesr·†r¸jsj»†r¹jsX		rº†r»jXletr¼†r½jsjì†r¾jsXfnamesr¿†rÀjsjì†rÁj©j#†rÂjsjì†rÃjXjoinrĆrÅj©jô†rÆjsXmaprdžrÈj©jô†rÉjsXtagfilesrʆrËj©jô†rÌj©jý†rÍj©jø†rÎjsjì†rÏjäX'escape(v:val, " \\#%")'rІrÑj©jý†rÒj©jý†rÓjsj»†rÔjsX		rÕ†rÖjXletr׆rØjsjì†rÙjsXext_varsrÚ†rÛjsjì†rÜj©j#†rÝjsjì†rÞjsjì†rßjsjî†ràjsj»†rájsX		râ†rãjXifrä†råjsjì†ræjsXfnamesrç†rèjsjì†réj©jê†rêj©j#†rëjsjì†rìjäX''rí†rîjsj»†rïjsX			rð†rñjXletrò†rójsjì†rôjsXsbaserõ†röjsjì†r÷j©j#†røjsjì†rùjsX
substituterú†rûj©jô†rüjj†rýjsj†rþjsXbaserÿ†rj©jø†rjsjì†rjäX'^\$'r†rj©jø†rjsjì†rjäX''r†rj©jø†r	jsjì†r
jäX''r†rj©jý†r
jsj»†rjsX			r†rjsXexer†rjsjì†rjäX'silent! vimgrep /^'r†rjsj|†rjsXsbaser†rjsj|†rjäX'.*\tv\(\t\|$\)/j 'r†rjsj|†rjsXfnamesr†rjsj»†rjsX			r †r!jXletr"†r#jsjì†r$jsXqflistr%†r&jsjì†r'j©j#†r(jsjì†r)jsX	getqflistr*†r+j©jô†r,j©jý†r-jsj»†r.jsX			r/†r0jXifr1†r2jsjì†r3jsXlenr4†r5j©jô†r6jsXqflistr7†r8j©jý†r9jsjì†r:j©jb†r;jsjì†r<jbj‡†r=jsj»†r>jsX				r?†r@jXforrA†rBjsjì†rCjsXfieldrD†rEjsjì†rFjXinrG†rHjsjì†rIjsXqflistrJ†rKjsj»†rLjsX					rM†rNjXletrO†rPjsjì†rQjsXitemrR†rSjsjì†rTj©j#†rUjsjì†rVjsXmatchstrrW†rXj©jô†rYjsXfieldrZ†r[jsj…†r\jäX'text'r]†r^jsj‹†r_j©jø†r`jsjì†rajäX'^[^[:space:]]\+'rb†rcj©jý†rdjsj»†rehX2					" Add -> if it is possible object declarationrf†rgjsj»†rhjsX					ri†rjjXletrk†rljsjì†rmjsX	classnamern†rojsjì†rpj©j#†rqjsjì†rrjäX''rs†rtjsj»†rujsX					rv†rwjXifrx†ryjsjì†rzjsXfieldr{†r|jsj…†r}jäX'text'r~†rjsj‹†r€jsjì†rj©j#†r‚j©jw†rƒjsjì†r„jsXitemr…†r†jsj|†r‡jäX'\s*=\s*new\s\+'rˆ†r‰jsj»†rŠjsX						r‹†rŒjXletr†rŽjsjì†rjsXitemr†r‘jsjì†r’j©j#†r“jsjì†r”jsXitemr•†r–jsj|†r—jäX'->'r˜†r™jsj»†ršjsX						r›†rœjXletr†ržjsjì†rŸjsX	classnamer †r¡jsjì†r¢j©j#†r£jsjì†r¤jsXmatchstrr¥†r¦j©jô†r§jsXfieldr¨†r©jsj…†rªjäX'text'r«†r¬jsj‹†r­j©jø†r®jsj»†r¯jsX								r°†r±jsjL†r²jsjì†r³jäX*'=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze'r´†rµj©jý†r¶jsj»†r·jsX					r¸†r¹jXendifrº†r»jsj»†r¼jsX					r½†r¾jXletr¿†rÀjsjì†rÁjsXext_varsr†rÃjsj…†rÄjsX	adddollarrņrÆjsj|†rÇjsXitemrȆrÉjsj‹†rÊjsjì†rËj©j#†rÌjsjì†rÍjsX	classnamerΆrÏjsj»†rÐjsX				rцrÒjXendforrÓ†rÔjsj»†rÕjsX			rÖ†r×jXendifr؆rÙjsj»†rÚjsX		rÛ†rÜjXendifr݆rÞjsj»†rßhX5
		" Now we have all variables in int_vars dictionaryrà†rájsj»†râjsX		rã†räjXcallrå†ræjsjì†rçjsXextendrè†réj©jô†rêjsXint_varsrë†rìj©jø†ríjsjì†rîjsXext_varsrï†rðj©jý†rñjsj»†ròhX=
		" Internal solution for finding functions in current file.ró†rôjsj»†rõjsX		rö†r÷jXletrø†rùjsjì†rújXfilerû†rüjsjì†rýj©j#†rþjsjì†rÿjsXgetliner†rj©jô†rjbj±†rj©jø†rjsjì†rjäX'$'r†rj©jý†rjsj»†r	jsX		r
†rjXcallr†r
jsjì†rjsXfilterr†rj©jô†rjXfiler†rj©jø†rjsj»†rjsX				r†rjsjL†rjsjì†rjäXP'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("'r†rj©jý†rjsj»†rjsX		r†rjXletr †r!jsjì†r"jsXfnamesr#†r$jsjì†r%j©j#†r&jsjì†r'jXjoinr(†r)j©jô†r*jsXmapr+†r,j©jô†r-jsXtagfilesr.†r/j©jô†r0j©jý†r1j©jø†r2jsjì†r3jäX'escape(v:val, " \\#%")'r4†r5j©jý†r6j©jý†r7jsj»†r8jsX		r9†r:jXletr;†r<jsjì†r=jsXjfiler>†r?jsjì†r@j©j#†rAjsjì†rBjXjoinrC†rDj©jô†rEjXfilerF†rGj©jø†rHjsjì†rIjäX' 'rJ†rKj©jý†rLjsj»†rMjsX		rN†rOjXletrP†rQjsjì†rRjsX
int_valuesrS†rTjsjì†rUj©j#†rVjsjì†rWjsXsplitrX†rYj©jô†rZjsXjfiler[†r\j©jø†r]jsjì†r^jäX'function\s\+'r_†r`j©jý†rajsj»†rbjsX		rc†rdjXletre†rfjsjì†rgjsX
int_functionsrh†rijsjì†rjj©j#†rkjsjì†rljsjì†rmjsjî†rnjsj»†rojsX		rp†rqjXforrr†rsjsjì†rtjjö†rujsjì†rvjXinrw†rxjsjì†ryjsX
int_valuesrz†r{jsj»†r|jsX			r}†r~jXletr†r€jsjì†rjsXf_namer‚†rƒjsjì†r„j©j#†r…jsjì†r†jsXmatchstrr‡†rˆj©jô†r‰jjö†rŠj©jø†r‹jsj»†rŒjsX					r†rŽjsjL†rjsjì†rjäX4'^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze'r‘†r’j©jý†r“jsj»†r”jsX			r•†r–jXletr—†r˜jsjì†r™jsXf_argsrš†r›jsjì†rœj©j#†rjsjì†ržjsXmatchstrrŸ†r j©jô†r¡jjö†r¢j©jø†r£jsj»†r¤jsX					r¥†r¦jsjL†r§jsjì†r¨jäXC'^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)\_s*{'r©†rªj©jý†r«jsj»†r¬jsX			r­†r®jXletr¯†r°jsjì†r±jsX
int_functionsr²†r³jsj…†r´jsXf_namerµ†r¶jsj|†r·jäX'('r¸†r¹jsj‹†rºjsjì†r»j©j#†r¼jsjì†r½jsXf_argsr¾†r¿jsj|†rÀjäX')'rÁ†rÂjsj»†rÃjsX		rĆrÅjXendforrƆrÇjsj»†rÈhX-
		" Prepare list of functions from tags filerɆrÊjsj»†rËjsX		r̆rÍjXletrΆrÏjsjì†rÐjsX
ext_functionsrцrÒjsjì†rÓj©j#†rÔjsjì†rÕjsjì†rÖjsjî†r×jsj»†rØjsX		rÙ†rÚjXifrÛ†rÜjsjì†rÝjsXfnamesrÞ†rßjsjì†ràj©jê†ráj©j#†râjsjì†rãjäX''rä†råjsj»†ræjsX			rç†rèjsXexeré†rêjsjì†rëjäX'silent! vimgrep /^'rì†ríjsj|†rîjj†rïjsj†rðjsXbaserñ†ròjsj|†rójäX'.*\tf\(\t\|$\)/j 'rô†rõjsj|†röjsXfnamesr÷†røjsj»†rùjsX			rú†rûjXletrü†rýjsjì†rþjsXqflistrÿ†rjsjì†rj©j#†rjsjì†rjsX	getqflistr†rj©jô†rj©jý†rjsj»†rjsX			r	†r
jXifr†rjsjì†r
jsXlenr†rj©jô†rjsXqflistr†rj©jý†rjsjì†rj©jb†rjsjì†rjbj‡†rjsj»†rjsX				r†rjXforr†rjsjì†rjsXfieldr†rjsjì†r jXinr!†r"jsjì†r#jsXqflistr$†r%jsj»†r&hX					" File namer'†r(jsj»†r)jsX					r*†r+jXletr,†r-jsjì†r.jsXitemr/†r0jsjì†r1j©j#†r2jsjì†r3jsXmatchstrr4†r5j©jô†r6jsXfieldr7†r8jsj…†r9jäX'text'r:†r;jsj‹†r<j©jø†r=jsjì†r>jäX'^[^[:space:]]\+'r?†r@j©jý†rAjsj»†rBjsX					rC†rDjXletrE†rFjsjì†rGjsXfnamerH†rIjsjì†rJj©j#†rKjsjì†rLjsXmatchstrrM†rNj©jô†rOjsXfieldrP†rQjsj…†rRjäX'text'rS†rTjsj‹†rUj©jø†rVjsjì†rWjäX'\t\zs\f\+\ze'rX†rYj©jý†rZjsj»†r[jsX					r\†r]jXletr^†r_jsjì†r`jsX	prototypera†rbjsjì†rcj©j#†rdjsjì†rejsXmatchstrrf†rgj©jô†rhjsXfieldri†rjjsj…†rkjäX'text'rl†rmjsj‹†rnj©jø†rojsj»†rpjsX							rq†rrjsjL†rsjsjì†rtjäX;'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?'ru†rvj©jý†rwjsj»†rxjsX					ry†rzjXletr{†r|jsjì†r}jsX
ext_functionsr~†rjsj…†r€jsXitemr†r‚jsj|†rƒjäX'('r„†r…jsj‹†r†jsjì†r‡j©j#†rˆjsjì†r‰jsX	prototyperІr‹jsj|†rŒjäX') - 'r†rŽjsj|†rjsXfnamer†r‘jsj»†r’jsX				r“†r”jXendforr•†r–jsj»†r—jsX			r˜†r™jXendifrš†r›jsj»†rœjsX		r†ržjXendifrŸ†r jsj»†r¡jsj»†r¢jsX		r£†r¤jXletr¥†r¦jsjì†r§jsX
all_valuesr¨†r©jsjì†rªj©j#†r«jsjì†r¬jsjì†r­jsjî†r®jsj»†r¯jsX		r°†r±jXcallr²†r³jsjì†r´jsXextendrµ†r¶j©jô†r·jsX
all_valuesr¸†r¹j©jø†rºjsjì†r»jsX
int_functionsr¼†r½j©jý†r¾jsj»†r¿jsX		rÀ†rÁjXcallr†rÃjsjì†rÄjsXextendrņrÆj©jô†rÇjsX
all_valuesrȆrÉj©jø†rÊjsjì†rËjsX
ext_functionsr̆rÍj©jý†rÎjsj»†rÏjsX		rІrÑjXcallrÒ†rÓjsjì†rÔjsXextendrÕ†rÖj©jô†r×jsX
all_valuesr؆rÙj©jø†rÚjsjì†rÛjsXint_varsr܆rÝj©jý†rÞjsjì†rßhX#" external variables are already inrà†rájsj»†râjsX		rã†räjXcallrå†ræjsjì†rçjsXextendrè†réj©jô†rêjsX
all_valuesrë†rìj©jø†ríjsjì†rîjj
†rïjsj†rðjsXphp_builtin_object_functionsrñ†ròj©jý†rójsj»†rôjsj»†rõjsX		rö†r÷jXforrø†rùjsjì†rújj¢†rûjsjì†rüjXinrý†rþjsjì†rÿjXsortr†rj©jô†rjsXkeysr†rj©jô†rjsX
all_valuesr†rj©jý†rj©jý†r	jsj»†r
jsX			r†rjXifr
†rjsjì†rjj¢†rjsjì†rj©j#†rj©jw†rjsjì†rjäX'\(^\|::\)'r†rjsj|†rjj†rjsj†rjsXbaser†rjsj»†rjsX				r†rjXcallr†r jsjì†r!jsXaddr"†r#j©jô†r$jXresr%†r&j©jø†r'jsjì†r(jj¢†r)j©jý†r*jsj»†r+jsX			r,†r-jXendifr.†r/jsj»†r0jsX		r1†r2jXendforr3†r4jsj»†r5jsj»†r6jsX		r7†r8jXletr9†r:jsjì†r;jsX
start_listr<†r=jsjì†r>j©j#†r?jsjì†r@jXresrA†rBjsj»†rCjsj»†rDjsX		rE†rFjXletrG†rHjsjì†rIjsX
final_listrJ†rKjsjì†rLj©j#†rMjsjì†rNjsj…†rOjsj‹†rPjsj»†rQjsX		rR†rSjXforrT†rUjsjì†rVjjö†rWjsjì†rXjXinrY†rZjsjì†r[jsX
start_listr\†r]jsj»†r^jsX			r_†r`jXifra†rbjsjì†rcjsXhas_keyrd†rej©jô†rfjsXint_varsrg†rhj©jø†rijsjì†rjjjö†rkj©jý†rljsj»†rmjsX				rn†rojXletrp†rqjsjì†rrjsXclassrs†rtjsjì†ruj©j#†rvjsjì†rwjäX' 'rx†ryjsj»†rzjsX				r{†r|jXifr}†r~jsjì†rjsX
all_valuesr€†rjsj…†r‚jjö†rƒjsj‹†r„jsjì†r…j©jê†r†j©j#†r‡jsjì†rˆjäX''r‰†rŠjsj»†r‹jsX					rŒ†rjXletrކrjsjì†rjsXclassr‘†r’jsjì†r“j©j#†r”jsjì†r•jjö†r–jsj|†r—jäX	' class 'r˜†r™jsj»†ršjsX				r›†rœjXendifr†ržjsj»†rŸjsX				r †r¡jXletr¢†r£jsjì†r¤jsX
final_listr¥†r¦jsjì†r§j©ju†r¨j©j#†r©jsjì†rªjsj…†r«jsjì†r¬jäX'word'r­†r®jsj†r¯jjö†r°j©jø†r±jsjì†r²jäX'info'r³†r´jsj†rµjsXclassr¶†r·jsj|†r¸jsX
all_valuesr¹†rºjsj…†r»jjö†r¼jsj‹†r½j©jø†r¾jsjì†r¿jäX'kind'rÀ†rÁjsj†rÂjäX'v'rÆrÄjsjî†rÅjsj‹†rÆjsj»†rÇjsX			rȆrÉjXelserʆrËjsj»†rÌjsX				r͆rÎjXletrφrÐjsjì†rÑjsX
final_listrÒ†rÓjsjì†rÔj©ju†rÕj©j#†rÖjsj»†r×jsX						r؆rÙjsjL†rÚjsjì†rÛjsj…†rÜjsjì†rÝjäX'word'rÞ†rßjsj†ràjsX
substituterá†râj©jô†rãjjö†räj©jø†råjsjì†ræjäX'.*::'rç†rèj©jø†réjsjì†rêjäX''rë†rìj©jø†ríjsjì†rîjäX''rï†rðj©jý†rñj©jø†ròjsj»†rójsX						rô†rõjsjL†röjsX   r÷†røjäX'info'rù†rújsj†rûjjö†rüjsj|†rýjsX
all_valuesrþ†rÿjsj…†rjjö†rjsj‹†rj©jø†rjsj»†rjsX						r†rjsjL†rjsX   r†r	jäX'kind'r
†rjsj†rjäX'f'r
†rjsjî†rjsj‹†rjsj»†rjsX			r†rjXendifr†rjsj»†rjsX		r†rjXendforr†rjsj»†rjsj»†rjsX		r†rjXreturnr†r jsjì†r!jsX
final_listr"†r#jsj»†r$jsj†r%jXendifr&†r'jsj»†r(jsj»†r)jsj†r*jXifr+†r,jsjì†r-jj†r.jsj†r/jsXbaser0†r1jsjì†r2j©j#†r3j©jw†r4jsjì†r5jäX'^\$'r6†r7jsj»†r8hX		" Complete variablesr9†r:jsj»†r;hX		" Built-in variables {{{r<†r=jsj»†r>jsX		r?†r@jXletrA†rBjsjì†rCjj
†rDjsj†rEjsXphp_builtin_varsrF†rGjsjì†rHj©j#†rIjsjì†rJjsjì†rKjäX
'$GLOBALS'rL†rMjsj†rNjäX''rO†rPj©jø†rQjsj»†rRjsX								rS†rTjsjL†rUjsjì†rVjäX
'$_SERVER'rW†rXjsj†rYjäX''rZ†r[j©jø†r\jsj»†r]jsX								r^†r_jsjL†r`jsjì†rajäX'$_GET'rb†rcjsj†rdjäX''re†rfj©jø†rgjsj»†rhjsX								ri†rjjsjL†rkjsjì†rljäX'$_POST'rm†rnjsj†rojäX''rp†rqj©jø†rrjsj»†rsjsX								rt†rujsjL†rvjsjì†rwjäX
'$_COOKIE'rx†ryjsj†rzjäX''r{†r|j©jø†r}jsj»†r~jsX								r†r€jsjL†rjsjì†r‚jäX	'$_FILES'rƒ†r„jsj†r…jäX''r††r‡j©jø†rˆjsj»†r‰jsX								rІr‹jsjL†rŒjsjì†rjäX'$_ENV'rކrjsj†rjäX''r‘†r’j©jø†r“jsj»†r”jsX								r•†r–jsjL†r—jsjì†r˜jäX'$_REQUEST'r™†ršjsj†r›jäX''rœ†rj©jø†ržjsj»†rŸjsX								r †r¡jsjL†r¢jsjì†r£jäX'$_SESSION'r¤†r¥jsj†r¦jäX''r§†r¨j©jø†r©jsj»†rªjsX								r«†r¬jsjL†r­jsjì†r®jäX'$HTTP_SERVER_VARS'r¯†r°jsj†r±jäX''r²†r³j©jø†r´jsj»†rµjsX								r¶†r·jsjL†r¸jsjì†r¹jäX'$HTTP_ENV_VARS'rº†r»jsj†r¼jäX''r½†r¾j©jø†r¿jsj»†rÀjsX								rÁ†rÂjsjL†rÃjsjì†rÄjäX'$HTTP_COOKIE_VARS'rņrÆjsj†rÇjäX''rȆrÉj©jø†rÊjsj»†rËjsX								r̆rÍjsjL†rÎjsjì†rÏjäX'$HTTP_GET_VARS'rІrÑjsj†rÒjäX''rÓ†rÔj©jø†rÕjsj»†rÖjsX								r׆rØjsjL†rÙjsjì†rÚjäX'$HTTP_POST_VARS'rÛ†rÜjsj†rÝjäX''rÞ†rßj©jø†ràjsj»†rájsX								râ†rãjsjL†räjsjì†råjäX'$HTTP_POST_FILES'ræ†rçjsj†rèjäX''ré†rêj©jø†rëjsj»†rìjsX								rí†rîjsjL†rïjsjì†rðjäX'$HTTP_SESSION_VARS'rñ†ròjsj†rójäX''rô†rõj©jø†röjsj»†r÷jsX								rø†rùjsjL†rújsjì†rûjäX'$php_errormsg'rü†rýjsj†rþjäX''rÿ†rj©jø†rjsj»†rjsX								r†rjsjL†rjsjì†rjäX'$this'r†rjsj†r	jäX''r
†rjsj»†rjsX								r
†rjsjL†re(jsjì†rjsjî†rjsj»†rhX		" }}}r†rjsj»†rhX(
		" Internal solution for current file.r†rjsj»†rjsX		r†rjXletr†rjsjì†rjXfiler†rjsjì†r j©j#†r!jsjì†r"jsXgetliner#†r$j©jô†r%jbj±†r&j©jø†r'jsjì†r(jäX'$'r)†r*j©jý†r+jsj»†r,jsX		r-†r.jXletr/†r0jsjì†r1jsXjfiler2†r3jsjì†r4j©j#†r5jsjì†r6jXjoinr7†r8j©jô†r9jXfiler:†r;j©jø†r<jsjì†r=jäX' 'r>†r?j©jý†r@jsj»†rAjsX		rB†rCjXletrD†rEjsjì†rFjsXint_valsrG†rHjsjì†rIj©j#†rJjsjì†rKjsXsplitrL†rMj©jô†rNjsXjfilerO†rPj©jø†rQjsjì†rRjäX'\ze\$'rS†rTj©jý†rUjsj»†rVjsX		rW†rXjXletrY†rZjsjì†r[jsXint_varsr\†r]jsjì†r^j©j#†r_jsjì†r`jsjì†rajsjî†rbjsj»†rcjsX		rd†rejXforrf†rgjsjì†rhjjö†rijsjì†rjjXinrk†rljsjì†rmjsXint_valsrn†rojsj»†rpjsX			rq†rrjXifrs†rtjsjì†rujjö†rvjsjì†rwj©j#†rxj©jw†ryjsjì†rzjäX7'^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new'r{†r|jsj»†r}jsX				r~†rjXletr€†rjsjì†r‚jsXvalrƒ†r„jsjì†r…j©j#†r†jsjì†r‡jsXmatchstrrˆ†r‰j©jô†rŠjjö†r‹j©jø†rŒjsj»†rjsX						rކrjsjL†rjsjì†r‘jäX-'^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*'r’†r“j©jý†r”jsj|†r•jäX'->'r–†r—jsj»†r˜jsX			r™†ršjXelser›†rœjsj»†rjsX				rž†rŸjXletr †r¡jsjì†r¢jsXvalr£†r¤jsjì†r¥j©j#†r¦jsjì†r§jsXmatchstrr¨†r©j©jô†rªjjö†r«j©jø†r¬jsj»†r­jsX						r®†r¯jsjL†r°jsjì†r±jäX-'^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*'r²†r³j©jý†r´jsj»†rµjsX			r¶†r·jXendifr¸†r¹jsj»†rºjsX			r»†r¼jXifr½†r¾jsjì†r¿jsXvalrÀ†rÁjsjì†rÂj©jê†rÃj©j#†rÄjsjì†rÅjäX''rƆrÇjsj»†rÈjsX				rɆrÊjXletrˆrÌjsjì†rÍjsXint_varsrΆrÏjsj…†rÐjsXvalrцrÒjsj‹†rÓjsjì†rÔj©j#†rÕjsjì†rÖjäX''r׆rØjsj»†rÙjsX			rÚ†rÛjXendifr܆rÝjsj»†rÞjsX		r߆ràjXendforrá†râjsj»†rãjsj»†räjsX		rå†ræjXcallrç†rèjsjì†réjsXextendrê†rëj©jô†rìjsXint_varsrí†rîj©jø†rïjj
†rðjsj†rñjsXphp_builtin_varsrò†rój©jý†rôjsj»†rõhXD
		" ctags has support for PHP, use tags file for external variablesrö†r÷jsj»†røjsX		rù†rújXletrû†rüjsjì†rýjsXfnamesrþ†rÿjsjì†rj©j#†rjsjì†rjXjoinr†rj©jô†rjsXmapr†rj©jô†rjsXtagfilesr	†r
j©jô†rj©jý†rj©jø†r
jsjì†rjäX'escape(v:val, " \\#%")'r†rj©jý†rj©jý†rjsj»†rjsX		r†rjXletr†rjsjì†rjsXext_varsr†rjsjì†rj©j#†rjsjì†rjsjì†rjsjî†rjsj»†r jsX		r!†r"jXifr#†r$jsjì†r%jsXfnamesr&†r'jsjì†r(j©jê†r)j©j#†r*jsjì†r+jäX''r,†r-jsj»†r.jsX			r/†r0jXletr1†r2jsjì†r3jsXsbaser4†r5jsjì†r6j©j#†r7jsjì†r8jsX
substituter9†r:j©jô†r;jj†r<jsj†r=jsXbaser>†r?j©jø†r@jsjì†rAjäX'^\$'rB†rCj©jø†rDjsjì†rEjäX''rF†rGj©jø†rHjsjì†rIjäX''rJ†rKj©jý†rLjsj»†rMjsX			rN†rOjsXexerP†rQjsjì†rRjäX'silent! vimgrep /^'rS†rTjsj|†rUjsXsbaserV†rWjsj|†rXjäX'.*\tv\(\t\|$\)/j 'rY†rZjsj|†r[jsXfnamesr\†r]jsj»†r^jsX			r_†r`jXletra†rbjsjì†rcjsXqflistrd†rejsjì†rfj©j#†rgjsjì†rhjsX	getqflistri†rjj©jô†rkj©jý†rljsj»†rmjsX			rn†rojXifrp†rqjsjì†rrjsXlenrs†rtj©jô†rujsXqflistrv†rwj©jý†rxjsjì†ryj©jb†rzjsjì†r{jbj‡†r|jsj»†r}jsX				r~†rjXforr€†rjsjì†r‚jsXfieldrƒ†r„jsjì†r…jXinr††r‡jsjì†rˆjsXqflistr‰†rŠjsj»†r‹jsX					rŒ†rjXletrކrjsjì†rjsXitemr‘†r’jsjì†r“j©j#†r”jsjì†r•jäX'$'r–†r—jsj|†r˜jsXmatchstrr™†ršj©jô†r›jsXfieldrœ†rjsj…†ržjäX'text'rŸ†r jsj‹†r¡j©jø†r¢jsjì†r£jäX'^[^[:space:]]\+'r¤†r¥j©jý†r¦jsj»†r§jsX					r¨†r©jXletrª†r«jsjì†r¬jsXm_menur­†r®jsjì†r¯j©j#†r°jsjì†r±jäX''r²†r³jsj»†r´hX2					" Add -> if it is possible object declarationrµ†r¶jsj»†r·jsX					r¸†r¹jXifrº†r»jsjì†r¼jsXfieldr½†r¾jsj…†r¿jäX'text'rÀ†rÁjsj‹†rÂjsjì†rÃj©j#†rÄj©jw†rÅjsjì†rÆjsXitemrdžrÈjsj|†rÉjäX'\s*=\s*new\s\+'rʆrËjsj»†rÌjsX						r͆rÎjXletrφrÐjsjì†rÑjsXitemrÒ†rÓjsjì†rÔj©j#†rÕjsjì†rÖjsXitemr׆rØjsj|†rÙjäX'->'rÚ†rÛjsj»†rÜjsX						r݆rÞjXletr߆ràjsjì†rájsXm_menurâ†rãjsjì†räj©j#†råjsjì†ræjsXmatchstrrç†rèj©jô†réjsXfieldrê†rëjsj…†rìjäX'text'rí†rîjsj‹†rïj©jø†rðjsj»†rñjsX								rò†rójsjL†rôjsjì†rõjäX*'=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze'rö†r÷j©jý†røjsj»†rùjsX					rú†rûjXendifrü†rýjsj»†rþjsX					rÿ†rjXletr†rjsjì†rjsXext_varsr†rjsj…†rjsXitemr†rjsj‹†r	jsjì†r
j©j#†rjsjì†rjsXm_menur
†rjsj»†rjsX				r†rjXendforr†rjsj»†rjsX			r†rjXendifr†rjsj»†rjsX		r†rjXendifr†rjsj»†rjsj»†rjsX		r †r!jXcallr"†r#jsjì†r$jsXextendr%†r&j©jô†r'jsXint_varsr(†r)j©jø†r*jsjì†r+jsXext_varsr,†r-j©jý†r.jsj»†r/jsX		r0†r1jXletr2†r3jsjì†r4jj
†r5jsj†r6jsXa0r7†r8jsjì†r9j©j#†r:jsjì†r;jsXkeysr<†r=j©jô†r>jsXint_varsr?†r@j©jý†rAjsj»†rBjsj»†rCjsX		rD†rEjXforrF†rGjsjì†rHjj¢†rIjsjì†rJjXinrK†rLjsjì†rMjXsortrN†rOj©jô†rPjsXkeysrQ†rRj©jô†rSjsXint_varsrT†rUj©jý†rVj©jý†rWjsj»†rXjsX			rY†rZjXifr[†r\jsjì†r]jj¢†r^jsjì†r_j©j#†r`j©jw†rajsjì†rbjäX'^\'rc†rdjsj|†rejj†rfjsj†rgjsXbaserh†rijsj»†rjjsX				rk†rljXcallrm†rnjsjì†rojsXaddrp†rqj©jô†rrjXresrs†rtj©jø†rujsjì†rvjj¢†rwj©jý†rxjsj»†ryjsX			rz†r{jXendifr|†r}jsj»†r~jsX		r†r€jXendforr†r‚jsj»†rƒjsj»†r„jsX		r…†r†jXletr‡†rˆjsjì†r‰jsXint_listrІr‹jsjì†rŒj©j#†rjsjì†rŽjXresr†rjsj»†r‘jsj»†r’jsX		r“†r”jXletr•†r–jsjì†r—jsXint_dictr˜†r™jsjì†ršj©j#†r›jsjì†rœjsj…†rjsj‹†ržjsj»†rŸjsX		r †r¡jXforr¢†r£jsjì†r¤jjö†r¥jsjì†r¦jXinr§†r¨jsjì†r©jsXint_listrª†r«jsj»†r¬jsX			r­†r®jXifr¯†r°jsjì†r±jsXint_varsr²†r³jsj…†r´jjö†rµjsj‹†r¶jsjì†r·j©jê†r¸j©j#†r¹jsjì†rºjäX''r»†r¼jsj»†r½jsX				r¾†r¿jXletrÀ†rÁjsjì†rÂjsXclassrÆrÄjsjì†rÅj©j#†rÆjsjì†rÇjäX' 'rȆrÉjsj»†rÊjsX				rˆrÌjXifr͆rÎjsjì†rÏjsXint_varsrІrÑjsj…†rÒjjö†rÓjsj‹†rÔjsjì†rÕj©jê†rÖj©j#†r×jsjì†rØjäX''rÙ†rÚjsj»†rÛjsX					r܆rÝjXletrÞ†rßjsjì†ràjsXclassrá†râjsjì†rãj©j#†räjsjì†råjjö†ræjsj|†rçjäX	' class 'rè†réjsj»†rêjsX				rë†rìjXendifrí†rîjsj»†rïjsX				rð†rñjXletrò†rójsjì†rôjsXint_dictrõ†röjsjì†r÷j©ju†røj©j#†rùjsjì†rújsj…†rûjsjì†rüjäX'word'rý†rþjsj†rÿjjö†rj©jø†rjsjì†rjäX'info'r†rjsj†rjsXclassr†rjsj|†rjsXint_varsr	†r
jsj…†rjjö†rjsj‹†r
j©jø†rjsjì†rjäX'kind'r†rjsj†rjäX'v'r†rjsjî†rjsj‹†rjsj»†rjsX			r†rjXelser†rjsj»†rjsX				r†rjXletr†r jsjì†r!jsXint_dictr"†r#jsjì†r$j©ju†r%j©j#†r&jsjì†r'jsj…†r(jsjì†r)jäX'word'r*†r+jsj†r,jjö†r-j©jø†r.jsjì†r/jäX'kind'r0†r1jsj†r2jäX'v'r3†r4jsjî†r5jsj‹†r6jsj»†r7jsX			r8†r9jXendifr:†r;jsj»†r<jsX		r=†r>jXendforr?†r@jsj»†rAjsj»†rBjsX		rC†rDjXreturnrE†rFjsjì†rGjsXint_dictrH†rIjsj»†rJjsj»†rKjsj†rLjXelserM†rNjsj»†rOhX		" Complete everything else -rP†rQjsj»†rRhX		"  + functions,  DONErS†rTjsj»†rUhX 		"  + keywords of language DONErV†rWjsj»†rXhX+		"  + defines (constant definitions), DONErY†rZjsj»†r[hX5		"  + extend keywords for predefined constants, DONEr\†r]jsj»†r^hX 		"  + classes (after new), DONEr_†r`jsj»†rahX:		"  + limit choice after -> and :: to funcs and vars DONErb†rcjsj»†rdhX=
		" Internal solution for finding functions in current file.re†rfjsj»†rgjsX		rh†rijXletrj†rkjsjì†rljXfilerm†rnjsjì†roj©j#†rpjsjì†rqjsXgetlinerr†rsj©jô†rtjbj±†ruj©jø†rvjsjì†rwjäX'$'rx†ryj©jý†rzjsj»†r{jsX		r|†r}jXcallr~†rjsjì†r€jsXfilterr†r‚j©jô†rƒjXfiler„†r…j©jø†r†jsj»†r‡jsX				rˆ†r‰jsjL†rŠjsjì†r‹jäXP'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("'rŒ†rj©jý†rŽjsj»†rjsX		r†r‘jXletr’†r“jsjì†r”jsXfnamesr•†r–jsjì†r—j©j#†r˜jsjì†r™jXjoinrš†r›j©jô†rœjsXmapr†ržj©jô†rŸjsXtagfilesr †r¡j©jô†r¢j©jý†r£j©jø†r¤jsjì†r¥jäX'escape(v:val, " \\#%")'r¦†r§j©jý†r¨j©jý†r©jsj»†rªjsX		r«†r¬jXletr­†r®jsjì†r¯jsXjfiler°†r±jsjì†r²j©j#†r³jsjì†r´jXjoinrµ†r¶j©jô†r·jXfiler¸†r¹j©jø†rºjsjì†r»jäX' 'r¼†r½j©jý†r¾jsj»†r¿jsX		rÀ†rÁjXletr†rÃjsjì†rÄjsX
int_valuesrņrÆjsjì†rÇj©j#†rÈjsjì†rÉjsXsplitrʆrËj©jô†rÌjsXjfiler͆rÎj©jø†rÏjsjì†rÐjäX'function\s\+'rцrÒj©jý†rÓjsj»†rÔjsX		rÕ†rÖjXletr׆rØjsjì†rÙjsX
int_functionsrÚ†rÛjsjì†rÜj©j#†rÝjsjì†rÞjsjì†rßjsjî†ràjsj»†rájsX		râ†rãjXforrä†råjsjì†ræjjö†rçjsjì†rèjXinré†rêjsjì†rëjsX
int_valuesrì†ríjsj»†rîjsX			rï†rðjXletrñ†ròjsjì†rójsXf_namerô†rõjsjì†röj©j#†r÷jsjì†røjsXmatchstrrù†rúj©jô†rûjjö†rüj©jø†rýjsj»†rþjsX					rÿ†rjsjL†rjsjì†rjäX4'^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze'r†rj©jý†rjsj»†rjsX			r†rjXletr	†r
jsjì†rjsXf_argsr†r
jsjì†rj©j#†rjsjì†rjsXmatchstrr†rj©jô†rjjö†rj©jø†rjsj»†rjsX					r†rjsjL†rjsjì†rjäXI'^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\s*\zs.\{-}\ze\s*)\_s*{'r†rj©jý†rjsj»†rjsX			r†r jXletr!†r"jsjì†r#jsX
int_functionsr$†r%jsj…†r&jsXf_namer'†r(jsj|†r)jäX'('r*†r+jsj‹†r,jsjì†r-j©j#†r.jsjì†r/jsXf_argsr0†r1jsj|†r2jäX')'r3†r4jsj»†r5jsX		r6†r7jXendforr8†r9jsj»†r:hX-
		" Prepare list of functions from tags filer;†r<jsj»†r=jsX		r>†r?jXletr@†rAjsjì†rBjsX
ext_functionsrC†rDjsjì†rEj©j#†rFjsjì†rGjsjì†rHjsjî†rIjsj»†rJjsX		rK†rLjXifrM†rNjsjì†rOjsXfnamesrP†rQjsjì†rRj©jê†rSj©j#†rTjsjì†rUjäX''rV†rWjsj»†rXjsX			rY†rZjsXexer[†r\jsjì†r]jäX'silent! vimgrep /^'r^†r_jsj|†r`jj†rajsj†rbjsXbaserc†rdjsj|†rejäX'.*\tf\(\t\|$\)/j 'rf†rgjsj|†rhjsXfnamesri†rjjsj»†rkjsX			rl†rmjXletrn†rojsjì†rpjsXqflistrq†rrjsjì†rsj©j#†rtjsjì†rujsX	getqflistrv†rwj©jô†rxj©jý†ryjsj»†rzjsX			r{†r|jXifr}†r~jsjì†rjsXlenr€†rj©jô†r‚jsXqflistrƒ†r„j©jý†r…jsjì†r†j©jb†r‡jsjì†rˆjbj‡†r‰jsj»†rŠjsX				r‹†rŒjXforr†rŽjsjì†rjsXfieldr†r‘jsjì†r’jXinr“†r”jsjì†r•jsXqflistr–†r—jsj»†r˜hX					" File namer™†ršjsj»†r›jsX					rœ†rjXletrž†rŸjsjì†r jsXitemr¡†r¢jsjì†r£j©j#†r¤jsjì†r¥jsXmatchstrr¦†r§j©jô†r¨jsXfieldr©†rªjsj…†r«jäX'text'r¬†r­jsj‹†r®j©jø†r¯jsjì†r°jäX'^[^[:space:]]\+'r±†r²j©jý†r³jsj»†r´jsX					rµ†r¶jXletr·†r¸jsjì†r¹jsXfnamerº†r»jsjì†r¼j©j#†r½jsjì†r¾jsXmatchstrr¿†rÀj©jô†rÁjsXfieldr†rÃjsj…†rÄjäX'text'rņrÆjsj‹†rÇj©jø†rÈjsjì†rÉjäX'\t\zs\f\+\ze'rʆrËj©jý†rÌjsj»†rÍjsX					rΆrÏjXletrІrÑjsjì†rÒjsX	prototyperÓ†rÔjsjì†rÕj©j#†rÖjsjì†r×jsXmatchstrr؆rÙj©jô†rÚjsXfieldrÛ†rÜjsj…†rÝjäX'text'rÞ†rßjsj‹†ràj©jø†rájsj»†râjsX							rã†räjsjL†råjsjì†ræjäX;'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?'rç†rèj©jý†réjsj»†rêjsX					rë†rìjXletrí†rîjsjì†rïjsX
ext_functionsrð†rñjsj…†ròjsXitemró†rôjsj|†rõjäX'('rö†r÷jsj‹†røjsjì†rùj©j#†rújsjì†rûjsX	prototyperü†rýjsj|†rþjäX') - 'rÿ†rjsj|†rjsXfnamer†rjsj»†rjsX				r†rjXendforr†rjsj»†r	jsX			r
†rjXendifr†r
jsj»†rjsX		r†rjXendifr†rjsj»†rhX
		" All functionsr†rjsj»†rjsX		r†rjXcallr†rjsjì†rjsXextendr†rj©jô†rjsX
int_functionsr†r j©jø†r!jsjì†r"jsX
ext_functionsr#†r$j©jý†r%jsj»†r&jsX		r'†r(jXcallr)†r*jsjì†r+jsXextendr,†r-j©jô†r.jsX
int_functionsr/†r0j©jø†r1jsjì†r2jj
†r3jsj†r4jsXphp_builtin_functionsr5†r6j©jý†r7jsj»†r8hX<
		" Internal solution for finding constants in current filer9†r:jsj»†r;jsX		r<†r=jXletr>†r?jsjì†r@jXfilerA†rBjsjì†rCj©j#†rDjsjì†rEjsXgetlinerF†rGj©jô†rHjbj±†rIj©jø†rJjsjì†rKjäX'$'rL†rMj©jý†rNjsj»†rOjsX		rP†rQjXcallrR†rSjsjì†rTjsXfilterrU†rVj©jô†rWjXfilerX†rYj©jø†rZjsjì†r[jäX'v:val =~ "define\\s*("'r\†r]j©jý†r^jsj»†r_jsX		r`†rajXletrb†rcjsjì†rdjsXjfilere†rfjsjì†rgj©j#†rhjsjì†rijXjoinrj†rkj©jô†rljXfilerm†rnj©jø†rojsjì†rpjäX' 'rq†rrj©jý†rsjsj»†rtjsX		ru†rvjXletrw†rxjsjì†ryjsX
int_valuesrz†r{jsjì†r|j©j#†r}jsjì†r~jsXsplitr†r€j©jô†rjsXjfiler‚†rƒe(j©jø†r„jsjì†r…jäX'define\s*(\s*'r††r‡j©jý†rˆjsj»†r‰jsX		rІr‹jXletrŒ†rjsjì†rŽjsX
int_constantsr†rjsjì†r‘j©j#†r’jsjì†r“jsjì†r”jsjî†r•jsj»†r–jsX		r—†r˜jXforr™†ršjsjì†r›jjö†rœjsjì†rjXinrž†rŸjsjì†r jsX
int_valuesr¡†r¢jsj»†r£jsX			r¤†r¥jXletr¦†r§jsjì†r¨jsXc_namer©†rªjsjì†r«j©j#†r¬jsjì†r­jsXmatchstrr®†r¯j©jô†r°jjö†r±j©jø†r²jsjì†r³jäX;'\(["'']\)\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze\1'r´†rµj©jý†r¶jsj»†r·hX			" let c_value = matchstr(i,r¸†r¹jsj»†rºhXS			" \ '\(["'']\)[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\1\s*,\s*\zs.\{-}\ze\s*)')r»†r¼jsj»†r½jsX			r¾†r¿jXifrÀ†rÁjsjì†rÂjsXc_namerÆrÄjsjì†rÅj©jê†rÆj©j#†rÇjsjì†rÈjäX''rɆrÊjsj»†rËjsX				r̆rÍjXletrΆrÏjsjì†rÐjsX
int_constantsrцrÒjsj…†rÓjsXc_namerÔ†rÕjsj‹†rÖjsjì†r×j©j#†rØjsjì†rÙjäX''rÚ†rÛjsjì†rÜhX	" c_valuer݆rÞjsj»†rßjsX			rà†rájXendifrâ†rãjsj»†räjsX		rå†ræjXendforrç†rèjsj»†réhX-
		" Prepare list of constants from tags filerê†rëjsj»†rìjsX		rí†rîjXletrï†rðjsjì†rñjsXfnamesrò†rójsjì†rôj©j#†rõjsjì†röjXjoinr÷†røj©jô†rùjsXmaprú†rûj©jô†rüjsXtagfilesrý†rþj©jô†rÿj©jý†rj©jø†rjsjì†rjäX'escape(v:val, " \\#%")'r†rj©jý†rj©jý†rjsj»†rjsX		r†r	jXletr
†rjsjì†rjsX
ext_constantsr
†rjsjì†rj©j#†rjsjì†rjsjì†rjsjî†rjsj»†rjsX		r†rjXifr†rjsjì†rjsXfnamesr†rjsjì†rj©jê†rj©j#†rjsjì†rjäX''r †r!jsj»†r"jsX			r#†r$jsXexer%†r&jsjì†r'jäX'silent! vimgrep /^'r(†r)jsj|†r*jj†r+jsj†r,jsXbaser-†r.jsj|†r/jäX'.*\td\(\t\|$\)/j 'r0†r1jsj|†r2jsXfnamesr3†r4jsj»†r5jsX			r6†r7jXletr8†r9jsjì†r:jsXqflistr;†r<jsjì†r=j©j#†r>jsjì†r?jsX	getqflistr@†rAj©jô†rBj©jý†rCjsj»†rDjsX			rE†rFjXifrG†rHjsjì†rIjsXlenrJ†rKj©jô†rLjsXqflistrM†rNj©jý†rOjsjì†rPj©jb†rQjsjì†rRjbj‡†rSjsj»†rTjsX				rU†rVjXforrW†rXjsjì†rYjsXfieldrZ†r[jsjì†r\jXinr]†r^jsjì†r_jsXqflistr`†rajsj»†rbjsX					rc†rdjXletre†rfjsjì†rgjsXitemrh†rijsjì†rjj©j#†rkjsjì†rljsXmatchstrrm†rnj©jô†rojsXfieldrp†rqjsj…†rrjäX'text'rs†rtjsj‹†ruj©jø†rvjsjì†rwjäX'^[^[:space:]]\+'rx†ryj©jý†rzjsj»†r{jsX					r|†r}jXletr~†rjsjì†r€jsX
ext_constantsr†r‚jsj…†rƒjsXitemr„†r…jsj‹†r†jsjì†r‡j©j#†rˆjsjì†r‰jäX''rІr‹jsj»†rŒjsX				r†rŽjXendforr†rjsj»†r‘jsX			r’†r“jXendifr”†r•jsj»†r–jsX		r—†r˜jXendifr™†ršjsj»†r›hX
		" All constantsrœ†rjsj»†ržjsX		rŸ†r jXcallr¡†r¢jsjì†r£jsXextendr¤†r¥j©jô†r¦jsX
int_constantsr§†r¨j©jø†r©jsjì†rªjsX
ext_constantsr«†r¬j©jý†r­jsj»†r®hX		" Treat keywords as constantsr¯†r°jsj»†r±jsj»†r²jsX		r³†r´jXletrµ†r¶jsjì†r·jsX
all_valuesr¸†r¹jsjì†rºj©j#†r»jsjì†r¼jsjì†r½jsjî†r¾jsj»†r¿hX$
		" One big dictionary of functionsrÀ†rÁjsj»†rÂjsX		rÆrÄjXcallrņrÆjsjì†rÇjsXextendrȆrÉj©jô†rÊjsX
all_valuesrˆrÌj©jø†rÍjsjì†rÎjsX
int_functionsrφrÐj©jý†rÑjsj»†rÒhX
		" Add constantsrÓ†rÔjsj»†rÕjsX		rÖ†r×jXcallr؆rÙjsjì†rÚjsXextendrÛ†rÜj©jô†rÝjsX
all_valuesrÞ†rßj©jø†ràjsjì†rájsX
int_constantsrâ†rãj©jý†räjsj»†råhX		" Add keywordsræ†rçjsj»†rèjsX		ré†rêjXcallrë†rìjsjì†ríjsXextendrî†rïj©jô†rðjsX
all_valuesrñ†ròj©jø†rójsjì†rôjj
†rõjsj†röjsXphp_keywordsr÷†røj©jý†rùjsj»†rújsj»†rûjsX		rü†rýjXforrþ†rÿjsjì†rjj¢†rjsjì†rjXinr†rjsjì†rjXsortr†rj©jô†rjsXkeysr	†r
j©jô†rjsX
all_valuesr†r
j©jý†rj©jý†rjsj»†rjsX			r†rjXifr†rjsjì†rjj¢†rjsjì†rj©j#†rj©jw†rjsjì†rjäX'^'r†rjsj|†rjj†rjsj†rjsXbaser †r!jsj»†r"jsX				r#†r$jXcallr%†r&jsjì†r'jsXaddr(†r)j©jô†r*jXresr+†r,j©jø†r-jsjì†r.jj¢†r/j©jý†r0jsj»†r1jsX			r2†r3jXendifr4†r5jsj»†r6jsX		r7†r8jXendforr9†r:jsj»†r;jsj»†r<jsX		r=†r>jXletr?†r@jsjì†rAjsXint_listrB†rCjsjì†rDj©j#†rEjsjì†rFjXresrG†rHjsj»†rIjsj»†rJjsX		rK†rLjXletrM†rNjsjì†rOjsX
final_listrP†rQjsjì†rRj©j#†rSjsjì†rTjsj…†rUjsj‹†rVjsj»†rWjsX		rX†rYjXforrZ†r[jsjì†r\jjö†r]jsjì†r^jXinr_†r`jsjì†rajsXint_listrb†rcjsj»†rdjsX			re†rfjXifrg†rhjsjì†rijsXhas_keyrj†rkj©jô†rljsX
int_functionsrm†rnj©jø†rojsjì†rpjjö†rqj©jý†rrjsj»†rsjsX				rt†rujXletrv†rwjsjì†rxjsX
final_listry†rzjsjì†r{j©ju†r|j©j#†r}jsj»†r~jsX						r†r€jsjL†rjsjì†r‚jsj…†rƒjsjì†r„jäX'word'r…†r†jsj†r‡jjö†rˆj©jø†r‰jsj»†rŠjsX						r‹†rŒjsjL†rjsX   rކrjäX'info'r†r‘jsj†r’jjö†r“jsj|†r”jsX
int_functionsr•†r–jsj…†r—jjö†r˜jsj‹†r™j©jø†ršjsj»†r›jsX						rœ†rjsjL†ržjsX   rŸ†r jäX'kind'r¡†r¢jsj†r£jäX'f'r¤†r¥jsjî†r¦jsj‹†r§jsj»†r¨jsX			r©†rªjXelseifr«†r¬jsjì†r­jsXhas_keyr®†r¯j©jô†r°jsX
int_constantsr±†r²j©jø†r³jsjì†r´jjö†rµj©jý†r¶jsj»†r·jsX				r¸†r¹jXletrº†r»jsjì†r¼jsX
final_listr½†r¾jsjì†r¿j©ju†rÀj©j#†rÁjsjì†rÂjsj…†rÃjsjì†rÄjäX'word'rņrÆjsj†rÇjjö†rÈj©jø†rÉjsjì†rÊjäX'kind'rˆrÌjsj†rÍjäX'd'rΆrÏjsjî†rÐjsj‹†rÑjsj»†rÒjsX			rÓ†rÔjXelserÕ†rÖjsj»†r×jsX				r؆rÙjXletrÚ†rÛjsjì†rÜjsX
final_listr݆rÞjsjì†rßj©ju†ràj©j#†rájsjì†râjsj…†rãjsjì†räjäX'word'rå†ræjsj†rçjjö†rèjsjî†réjsj‹†rêjsj»†rëjsX			rì†ríjXendifrî†rïjsj»†rðjsX		rñ†ròjXendforró†rôjsj»†rõjsj»†röjsX		r÷†røjXreturnrù†rújsjì†rûjsX
final_listrü†rýjsj»†rþjsj»†rÿjsj†rjXendifr†rjsj»†rjsj»†rjXendfunctionr†rjsj»†rhX" vim:set foldmethod=marker:r†r	jsj»†r
e.