diff options
Diffstat (limited to 'autoload')
| -rw-r--r-- | autoload/fish.vim | 70 | 
1 files changed, 70 insertions, 0 deletions
| diff --git a/autoload/fish.vim b/autoload/fish.vim new file mode 100644 index 00000000..ac422a42 --- /dev/null +++ b/autoload/fish.vim @@ -0,0 +1,70 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1 +   +function! fish#Indent() +    let l:prevlnum = prevnonblank(v:lnum - 1) +    if l:prevlnum ==# 0 +        return 0 +    endif +    let l:indent = 0 +    let l:prevline = getline(l:prevlnum) +    if l:prevline =~# '\v^\s*switch>' +        let l:indent = &shiftwidth * 2 +    elseif l:prevline =~# '\v^\s*%(begin|if|else|while|for|function|case)>' +        let l:indent = &shiftwidth +    endif +    let l:line = getline(v:lnum) +    if l:line =~# '\v^\s*end>' +        return indent(v:lnum) - (l:indent ==# 0 ? &shiftwidth : l:indent) +    elseif l:line =~# '\v^\s*%(case|else)>' +        return indent(v:lnum) - &shiftwidth +    endif +    return indent(l:prevlnum) + l:indent +endfunction + +function! fish#Format() +    if mode() =~# '\v^%(i|R)$' +        return 1 +    else +        let l:command = v:lnum.','.(v:lnum+v:count-1).'!fish_indent' +        echo l:command +        execute l:command +    endif +endfunction + +function! fish#Fold() +    let l:line = getline(v:lnum) +    if l:line =~# '\v^\s*%(begin|if|while|for|function|switch)>' +        return 'a1' +    elseif l:line =~# '\v^\s*end>' +        return 's1' +    else +        return '=' +    end +endfunction + +function! fish#Complete(findstart, base) +    if a:findstart +        return getline('.') =~# '\v^\s*$' ? -1 : 0 +    else +        if empty(a:base) +            return [] +        endif +        let l:results = [] +        let l:completions = +                    \ system('fish -c "complete -C'.shellescape(a:base).'"') +        let l:cmd = substitute(a:base, '\v\S+$', '', '') +        for l:line in split(l:completions, '\n') +            let l:tokens = split(l:line, '\t') +            call add(l:results, {'word': l:cmd.l:tokens[0], +                                \'abbr': l:tokens[0], +                                \'menu': get(l:tokens, 1, '')}) +        endfor +        return l:results +    endif +endfunction + +function! fish#errorformat() +    return '%Afish: %m,%-G%*\\ ^,%-Z%f (line %l):%s' +endfunction + +endif | 
