xref: /vim-8.2.3635/runtime/indent/yacc.vim (revision 214641f7)
1" Vim indent file
2" Language:             YACC input file
3" Previous Maintainer:  Nikolai Weibull <[email protected]>
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