diff options
Diffstat (limited to 'indent/yacc.vim')
| -rw-r--r-- | indent/yacc.vim | 45 | 
1 files changed, 45 insertions, 0 deletions
diff --git a/indent/yacc.vim b/indent/yacc.vim new file mode 100644 index 00000000..9ebb7f49 --- /dev/null +++ b/indent/yacc.vim @@ -0,0 +1,45 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'yacc') == -1 + +" Vim indent file +" Language:             YACC input file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2006-12-20 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") +  finish +endif + +let b:did_indent = 1 + +setlocal indentexpr=GetYaccIndent() +setlocal indentkeys=!^F,o,O +setlocal nosmartindent + +" Only define the function once. +if exists("*GetYaccIndent") +  finish +endif + +function GetYaccIndent() +  if v:lnum == 1 +    return 0 +  endif + +  let ind = indent(v:lnum - 1) +  let line = getline(v:lnum - 1) + +  if line == '' +    let ind = 0 +  elseif line =~ '^\w\+\s*:' +    let ind = ind + matchend(line, '^\w\+\s*') +  elseif line =~ '^\s*;' +    let ind = 0 +  else +    let ind = indent(v:lnum) +  endif + +  return ind +endfunction + +endif  | 
