From 189738a11cab0657724d853ba1b0bb85a034e3bc Mon Sep 17 00:00:00 2001 From: Adam Hovorka Date: Wed, 18 Jul 2018 11:16:36 -0600 Subject: Open JSON folds by default --- base/vim/indent/php.vim | 240 ++++++++++++++++++++++-------------------------- 1 file changed, 108 insertions(+), 132 deletions(-) (limited to 'base/vim/indent/php.vim') diff --git a/base/vim/indent/php.vim b/base/vim/indent/php.vim index c5cba58..3eeb884 100644 --- a/base/vim/indent/php.vim +++ b/base/vim/indent/php.vim @@ -1,34 +1,10 @@ -" Vim indent file -" Language: Php -" Authors: Miles Lott , Johannes Zellner , Pim Snel -" URL: http://lingewoud.nl/downloads.php -" Last Change: 23 feb 2004 -" Version: 0.3 -" Notes: This is a combination of the PHP indent file of Miles Lott with -" the HTML indent file of Johannes Zellner. Usefull for editing -" php-files with html parts in it. -" -" Changelog: -" 0.3 - 25 mar 2004 -" - fixed wrong indention when a php-tag is opened and closed on -" one single line. -" 0.2 - 23 feb 2004 -" - applied patch from Holger Dzeik -" - added changelog -" - added default indention of 3 spaces after the ,<>>,,{,} " Only define the function once. if exists("*GetPhpIndent") - finish + finish endif " Handle option(s) if exists("php_noindent_switch") - let b:php_noindent_switch=1 + let b:php_noindent_switch=1 endif if exists('g:html_indent_tags') - unlet g:html_indent_tags + unlet g:html_indent_tags endif function GetPhpIndent() - " Find a non-empty line above the current line. - let lnum = prevnonblank(v:lnum - 1) - - " Hit the start of the file, use zero indent. - if lnum == 0 - return 0 - endif - - let line = getline(lnum) " last line - let cline = getline(v:lnum) " current line - let pline = getline(lnum - 1) " previous to last line - let ind = indent(lnum) - - let restore_ic=&ic - let &ic=1 " ignore case - - let ind = HtmlIndentSum(lnum, -1) - let ind = ind + HtmlIndentSum(v:lnum, 0) - - let &ic=restore_ic - - let ind = indent(lnum) + (&sw * ind) - - " Indent after php open tags - if line =~ '' - let ind = ind + &sw - endif - if cline =~ '^\s*[?>]' " // Fix from Holger Dzeik Thanks! - let ind = ind - &sw - endif - - - if exists("b:php_noindent_switch") " version 1 behavior, diy switch/case,etc - " Indent blocks enclosed by {} or () - if line =~ '[{(]\s*\(#[^)}]*\)\=$' - let ind = ind + &sw - endif - if cline =~ '^\s*[)}]' - let ind = ind - &sw - endif - return ind - else " Try to indent switch/case statements as well - " Indent blocks enclosed by {} or () or case statements, with some anal requirements - if line =~ 'case.*:\|[{(]\s*\(#[^)}]*\)\=$' - let ind = ind + &sw - " return if the current line is not another case statement of the previous line is a bracket open - if cline !~ '.*case.*:\|default:' || line =~ '[{(]\s*\(#[^)}]*\)\=$' - return ind - endif - endif - if cline =~ '^\s*case.*:\|^\s*default:\|^\s*[)}]' - let ind = ind - &sw - " if the last line is a break or return, or the current line is a close bracket, - " or if the previous line is a default statement, subtract another - if line =~ '^\s*break;\|^\s*return\|' && cline =~ '^\s*[)}]' && pline =~ 'default:' - let ind = ind - &sw - endif - endif - - if line =~ 'default:' - let ind = ind + &sw - endif - return ind - endif + " Find a non-empty line above the current line. + let lnum = prevnonblank(v:lnum - 1) + + " Hit the start of the file, use zero indent. + if lnum == 0 + return 0 + endif + + let line = getline(lnum) " last line + let cline = getline(v:lnum) " current line + let pline = getline(lnum - 1) " previous to last line + let ind = indent(lnum) + + let restore_ic=&ic + let &ic=1 " ignore case + + let ind = HtmlIndentSum(lnum, -1) + let ind = ind + HtmlIndentSum(v:lnum, 0) + + let &ic=restore_ic + + let ind = indent(lnum) + (&sw * ind) + + " Indent after php open tags + if line =~ '' + let ind = ind + &sw + endif + if cline =~ '^\s*[?>]' " // Fix from Holger Dzeik Thanks! + let ind = ind - &sw + endif + + + if exists("b:php_noindent_switch") " version 1 behavior, diy switch/case,etc + " Indent blocks enclosed by {} or () + if line =~ '[{(]\s*\(#[^)}]*\)\=$' + let ind = ind + &sw + endif + if cline =~ '^\s*[)}]' + let ind = ind - &sw + endif + return ind + else " Try to indent switch/case statements as well + " Indent blocks enclosed by {} or () or case statements, with some anal requirements + if line =~ 'case.*:\|[{(]\s*\(#[^)}]*\)\=$' + let ind = ind + &sw + " return if the current line is not another case statement of the previous line is a bracket open + if cline !~ '.*case.*:\|default:' || line =~ '[{(]\s*\(#[^)}]*\)\=$' + return ind + endif + endif + if cline =~ '^\s*case.*:\|^\s*default:\|^\s*[)}]' + let ind = ind - &sw + " if the last line is a break or return, or the current line is a close bracket, + " or if the previous line is a default statement, subtract another + if line =~ '^\s*break;\|^\s*return\|' && cline =~ '^\s*[)}]' && pline =~ 'default:' + let ind = ind - &sw + endif + endif + + if line =~ 'default:' + let ind = ind + &sw + endif + return ind + endif endfunction @@ -126,11 +102,11 @@ endfunction " [-- helper function to assemble tag list --] fun! HtmlIndentPush(tag) - if exists('g:html_indent_tags') - let g:html_indent_tags = g:html_indent_tags.'\|'.a:tag - else - let g:html_indent_tags = a:tag - endif + if exists('g:html_indent_tags') + let g:html_indent_tags = g:html_indent_tags.'\|'.a:tag + else + let g:html_indent_tags = a:tag + endif endfun @@ -201,20 +177,20 @@ call HtmlIndentPush('var') " [-- --] if !exists('g:html_indent_strict') - call HtmlIndentPush('body') - call HtmlIndentPush('head') - call HtmlIndentPush('html') - call HtmlIndentPush('tbody') + call HtmlIndentPush('body') + call HtmlIndentPush('head') + call HtmlIndentPush('html') + call HtmlIndentPush('tbody') endif " [-- --] if !exists('g:html_indent_strict_table') - call HtmlIndentPush('th') - call HtmlIndentPush('td') - call HtmlIndentPush('tr') - call HtmlIndentPush('tfoot') - call HtmlIndentPush('thead') + call HtmlIndentPush('th') + call HtmlIndentPush('td') + call HtmlIndentPush('tr') + call HtmlIndentPush('tfoot') + call HtmlIndentPush('thead') endif delfun HtmlIndentPush @@ -223,50 +199,50 @@ set cpo-=C " [-- count indent-increasing tags of line a:lnum --] fun! HtmlIndentOpen(lnum) - let s = substitute('x'.getline(a:lnum), - \ '.\{-}\(\(<\)\('.g:html_indent_tags.'\)\>\)', "\1", 'g') - let s = substitute(s, "[^\1].*$", '', '') - return strlen(s) + let s = substitute('x'.getline(a:lnum), + \ '.\{-}\(\(<\)\('.g:html_indent_tags.'\)\>\)', "\1", 'g') + let s = substitute(s, "[^\1].*$", '', '') + return strlen(s) endfun " [-- count indent-decreasing tags of line a:lnum --] fun! HtmlIndentClose(lnum) - let s = substitute('x'.getline(a:lnum), - \ '.\{-}\(\(<\)/\('.g:html_indent_tags.'\)\>>\)', "\1", 'g') - let s = substitute(s, "[^\1].*$", '', '') - return strlen(s) + let s = substitute('x'.getline(a:lnum), + \ '.\{-}\(\(<\)/\('.g:html_indent_tags.'\)\>>\)', "\1", 'g') + let s = substitute(s, "[^\1].*$", '', '') + return strlen(s) endfun " [-- count indent-increasing '{' of (java|css) line a:lnum --] fun! HtmlIndentOpenAlt(lnum) - return strlen(substitute(getline(a:lnum), '[^{]\+', '', 'g')) + return strlen(substitute(getline(a:lnum), '[^{]\+', '', 'g')) endfun " [-- count indent-decreasing '}' of (java|css) line a:lnum --] fun! HtmlIndentCloseAlt(lnum) - return strlen(substitute(getline(a:lnum), '[^}]\+', '', 'g')) + return strlen(substitute(getline(a:lnum), '[^}]\+', '', 'g')) endfun " [-- return the sum of indents respecting the syntax of a:lnum --] fun! HtmlIndentSum(lnum, style) - if a:style == match(getline(a:lnum), '^\s*') - let open = HtmlIndentOpen(a:lnum) - let close = HtmlIndentClose(a:lnum) - if 0 != open || 0 != close - return open - close - endif - endif + if a:style == match(getline(a:lnum), '^\s*') + let open = HtmlIndentOpen(a:lnum) + let close = HtmlIndentClose(a:lnum) + if 0 != open || 0 != close + return open - close + endif endif - if '' != &syntax && - \ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\(css\|java\).*' && - \ synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name') - \ =~ '\(css\|java\).*' - if a:style == match(getline(a:lnum), '^\s*}') - return HtmlIndentOpenAlt(a:lnum) - HtmlIndentCloseAlt(a:lnum) - endif + endif + if '' != &syntax && + \ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\(css\|java\).*' && + \ synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name') + \ =~ '\(css\|java\).*' + if a:style == match(getline(a:lnum), '^\s*}') + return HtmlIndentOpenAlt(a:lnum) - HtmlIndentCloseAlt(a:lnum) endif - return 0 + endif + return 0 endfun " vim: set ts=3 sw=3: -- cgit v1.2.3-70-g09d2