1" Vim indent file 2" Language: YACC input file 3" Maintainer: Nikolai Weibull <now@bitwi.se> 4" Latest Revision: 2006-12-20 5 6" Only load this indent file when no other was loaded. 7if exists("b:did_indent") 8 finish 9endif 10 11let b:did_indent = 1 12 13setlocal indentexpr=GetYaccIndent() 14setlocal indentkeys=!^F,o,O 15setlocal nosmartindent 16 17" Only define the function once. 18if exists("*GetYaccIndent") 19 finish 20endif 21 22function GetYaccIndent() 23 if v:lnum == 1 24 return 0 25 endif 26 27 let ind = indent(v:lnum - 1) 28 let line = getline(v:lnum - 1) 29 30 if line == '' 31 let ind = 0 32 elseif line =~ '^\w\+\s*:' 33 let ind = ind + matchend(line, '^\w\+\s*') 34 elseif line =~ '^\s*;' 35 let ind = 0 36 else 37 let ind = indent(v:lnum) 38 endif 39 40 return ind 41endfunction 42