/usr/share/lilypond/2.14.2/vim/indent/lilypond.vim is in lilypond-data 2.14.2-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | " LilyPond indent file
" Language: LilyPond
" Maintainer: Heikki Junes <hjunes@cc.hut.fi>
" Last Change: 2010 Jul 26
"
" Installed As: vim/indent/lilypond.vim
"
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal indentexpr=GetLilyPondIndent()
setlocal indentkeys=o,O,},>>,!^F
" Only define the function once.
if exists("*GetLilyPondIndent")
finish
endif
function GetLilyPondIndent()
if v:lnum == 1
return 0
endif
"Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
"Check if a block was started: '{' or '<<' is the last non-blank character of the previous line.
if getline(lnum) =~ '^.*\({\|<<\)\s*$'
let ind = indent(lnum) + &sw
else
let ind = indent(lnum)
endif
"Check if a block was ended: '}' or '>>' is the first non-blank character of the current line.
if getline(v:lnum) =~ '^\s*\(}\|>>\)'
let ind = ind - &sw
endif
" Check if the first character from the previous line is within
" a `lilyScheme' region, and if so, use lisp-style indentation
" for the current line.
"
" TODO:
" - Only works in version 7.1.215 or later, though it should
" silently fail in older versions.
" - We should support `lilyScheme' regions that begin in the
" middle of the line, too.
for id in synstack(lnum, 1)
if synIDattr(id, "name") == "lilyScheme"
let ind = lispindent(v:lnum)
endif
endfor
return ind
endfunction
"
"
"
|