diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2017-09-27 20:43:42 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2017-09-27 20:43:42 +0200 | 
| commit | 5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1 (patch) | |
| tree | 965ae5128797f3d42d78d02692e62d24a4596e19 /indent/prolog.vim | |
| parent | 8148255ef1c416f414c3a78405eff08fe149d16e (diff) | |
| download | vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.tar.gz vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.zip | |
Add syntax files from upstream vim repository
Diffstat (limited to 'indent/prolog.vim')
| -rw-r--r-- | indent/prolog.vim | 62 | 
1 files changed, 62 insertions, 0 deletions
| diff --git a/indent/prolog.vim b/indent/prolog.vim new file mode 100644 index 00000000..8f66554e --- /dev/null +++ b/indent/prolog.vim @@ -0,0 +1,62 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +"  vim: set sw=4 sts=4: +"  Maintainer	: Gergely Kontra <kgergely@mcl.hu> +"  Revised on	: 2002.02.18. 23:34:05 +"  Language	: Prolog + +" TODO: +"   checking with respect to syntax highlighting +"   ignoring multiline comments +"   detecting multiline strings + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") +    finish +endif + +let b:did_indent = 1 + +setlocal indentexpr=GetPrologIndent() +setlocal indentkeys-=:,0# +setlocal indentkeys+=0%,-,0;,>,0) + +" Only define the function once. +"if exists("*GetPrologIndent") +"    finish +"endif + +function! GetPrologIndent() +    " Find a non-blank line above the current line. +    let pnum = prevnonblank(v:lnum - 1) +    " Hit the start of the file, use zero indent. +    if pnum == 0 +       return 0 +    endif +    let line = getline(v:lnum) +    let pline = getline(pnum) + +    let ind = indent(pnum) +    " Previous line was comment -> use previous line's indent +    if pline =~ '^\s*%' +	retu ind +    endif +    " Check for clause head on previous line +    if pline =~ ':-\s*\(%.*\)\?$' +	let ind = ind + shiftwidth() +    " Check for end of clause on previous line +    elseif pline =~ '\.\s*\(%.*\)\?$' +	let ind = ind - shiftwidth() +    endif +    " Check for opening conditional on previous line +    if pline =~ '^\s*\([(;]\|->\)' +	let ind = ind + shiftwidth() +    endif +    " Check for closing an unclosed paren, or middle ; or -> +    if line =~ '^\s*\([);]\|->\)' +	let ind = ind - shiftwidth() +    endif +    return ind +endfunction + +endif | 
