diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2020-08-06 13:22:17 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-08-06 13:22:17 +0200 | 
| commit | 1e533e5982a9c80f262b09fbe94e1ac4555ad915 (patch) | |
| tree | ed573a3e399a95c2c3baeb6a1371d4753357cecc /autoload | |
| parent | 56121b4e27cb48efb17be55a969b2f0d725266f8 (diff) | |
| download | vim-polyglot-1e533e5982a9c80f262b09fbe94e1ac4555ad915.tar.gz vim-polyglot-1e533e5982a9c80f262b09fbe94e1ac4555ad915.zip | |
Update
Diffstat (limited to 'autoload')
| -rw-r--r-- | autoload/fish.vim | 40 | 
1 files changed, 29 insertions, 11 deletions
| diff --git a/autoload/fish.vim b/autoload/fish.vim index 33b03e6b..6d8af013 100644 --- a/autoload/fish.vim +++ b/autoload/fish.vim @@ -1,25 +1,43 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fish') == -1  function! fish#Indent() -    let l:shiftwidth = shiftwidth()      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>' -        return indent(l:prevlnum) + l:shiftwidth -    elseif l:prevline =~# '\v^\s*%(begin|if|else|while|for|function|case)>' -        let l:indent = l:shiftwidth -    endif      let l:line = getline(v:lnum) +    let l:shiftwidth = shiftwidth() +    let l:previndent = indent(l:prevlnum) +    let l:indent = l:previndent +    if l:prevline =~# '\v^\s*%(begin|if|else|while|for|function|switch|case)>' +        let l:indent += l:shiftwidth +    endif      if l:line =~# '\v^\s*end>' -        return indent(l:prevlnum) - (l:indent ==# 0 ? l:shiftwidth : l:indent) -    elseif l:line =~# '\v^\s*%(case|else)>' -        return indent(l:prevlnum) - l:shiftwidth +        let l:indent -= l:shiftwidth +        " If we're inside a case, dedent twice because it ends the switch. +        if l:prevline =~# '\v^\s*case>' +            " Previous line starts the case. +            let l:indent -= l:shiftwidth +        else +            " Scan back to a dedented line to find whether we're in a case. +            let l:i = l:prevlnum +            while l:i >= 1 && indent(l:i) >= l:previndent +                let l:i = prevnonblank(l:i - 1) +            endwhile +            if indent(l:i) < l:previndent && getline(l:i) =~# '\v^\s*case>' +                let l:indent -= l:shiftwidth +            endif +        endif +    elseif l:line =~# '\v^\s*else>' +        let l:indent -= l:shiftwidth +    elseif l:prevline !~# '\v^\s*switch>' && l:line =~# '\v^\s*case>' +        let l:indent -= l:shiftwidth +    endif +    if l:indent < 0 +        return 0      endif -    return indent(l:prevlnum) + l:indent +    return l:indent  endfunction  function! fish#Format() | 
