" Matlab indent file" Language: Matlab" Maintainer: Christophe Poucet <christophe.poucet@pandora.be>" Last Change: 6 January, 2001" Only load this indent file when no other was loaded.if exists("b:did_indent") finishendiflet b:did_indent = 1" Some preliminary settingsetlocal indentkeys=!,o,O=end,=case,=else,=elseif,=otherwise,=catchsetlocal indentexpr=GetMatlabIndent(v:lnum)" Only define the function once.if exists("*GetMatlabIndent") finishendiffunction GetMatlabIndent(lnum) " Give up if this line is explicitly joined. if getline(a:lnum - 1) =~ '\\$' return -1 endif " Search backwards for the first non-empty line. let plnum = a:lnum - 1 while plnum > 0 && getline(plnum) =~ '^\s*$' let plnum = plnum - 1 endwhile if plnum == 0 " This is the first non-empty line, use zero indent. return 0 endif let curind = indent(plnum) " If the current line is a stop-block statement... if getline(v:lnum) =~ '^\s*\(end\|else\|elseif\|case\|otherwise\|catch\)\>' " See if this line does not follow the line right after an openblock if getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>' " See if the user has already dedented elseif indent(v:lnum) > curind - &sw " If not, recommend one dedent let curind = curind - &sw else " Otherwise, trust the user return -1 endif" endif " If the previous line opened a block elseif getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>' " See if the user has already indented if indent(v:lnum) < curind + &sw "If not, recommend indent let curind = curind + &sw else " Otherwise, trust the user return -1 endif endif " If we got to here, it means that the user takes the standardversion, so we return it return curindendfunction" vim:sw=2
" Matlab indent file
" Language: Matlab
" Maintainer: Christophe Poucet <christophe.poucet@pandora.be>
" Last Change: 6 January, 2001
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
" Some preliminary setting
setlocal indentkeys=!,o,O=end,=case,=else,=elseif,=otherwise,=catch
setlocal indentexpr=GetMatlabIndent(v:lnum)
" Only define the function once.
if exists("*GetMatlabIndent")
finish
endif
function GetMatlabIndent(lnum)
" Give up if this line is explicitly joined.
if getline(a:lnum - 1) =~ '\\$'
return -1
endif
" Search backwards for the first non-empty line.
let plnum = a:lnum - 1
while plnum > 0 && getline(plnum) =~ '^\s*$'
let plnum = plnum - 1
endwhile
if plnum == 0
" This is the first non-empty line, use zero indent.
return 0
endif
let curind = indent(plnum)
" If the current line is a stop-block statement...
if getline(v:lnum) =~ '^\s*\(end\|else\|elseif\|case\|otherwise\|catch\)\>'
" See if this line does not follow the line right after an openblock
if getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
" See if the user has already dedented
elseif indent(v:lnum) > curind - &sw
" If not, recommend one dedent
let curind = curind - &sw
else
" Otherwise, trust the user
return -1
endif
" endif
" If the previous line opened a block
elseif getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
" See if the user has already indented
if indent(v:lnum) < curind + &sw
"If not, recommend indent
let curind = curind + &sw
else
" Otherwise, trust the user
return -1
endif
endif
" If we got to here, it means that the user takes the standardversion, so we return it
return curind
endfunction
" vim:sw=2