neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

yacc.vim (858B)


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