summaryrefslogtreecommitdiff
path: root/nix_archive/files/nvim/local/autoload/Juliana.vim
blob: 1b684b9e19824c4c8dfc4a75adf7e32159a33c5a (plain)
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
" https://github.com/neitanod/vim-clevertab

function! Juliana#Init()
  let g:Juliana#has_selection = 0
  augroup JulianaPersistAu
    autocmd ModeChanged [V\x16]*:i let g:Juliana#has_selection = 1
    autocmd InsertLeave * let g:Juliana#has_selection = 0
  augroup END
endfunction

function! Juliana#CompleteTab(type)
  if a:type == "START"
    let g:Juliana#stop=0
    return ""
  endif

  if !g:Juliana#stop
    " Vanilla <Tab> if we are at the front of a line.
    if a:type == "TAB" && col(".") >= col("$") && !pumvisible()
      let g:Juliana#stop=1
      return "\<Tab>"
    elseif a:type == "ALIGN" && !pumvisible() " Align if !pumvisible().
      let g:Juliana#stop=1
      if g:Juliana#has_selection
        return "\<ESC>gv=i"
      else
        return "\<ESC>\<C-v>=i"
      endif
    elseif a:type == "NEXT" " If pumvisible(), goto the next result.
      let g:Juliana#stop=1
      return "\<C-n>"
    endif
  endif

  return ""
endfunction

function! Juliana#CompleteSTab(type)
  if a:type == "PREV"
    if pumvisible() " If pumvisible(), goto the previous result.
      return "\<C-p>"
    else
      return "\<Tab>" " <S-Tab> = <Tab>
    endif
  endif
endfunction