completion.vim 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. " vim: set fdm=marker et ts=4 sw=4 sts=4:
  2. function! pandoc#completion#Init() abort "{{{1
  3. " set up defaults:
  4. if !exists('g:pandoc#completion#bib#mode')
  5. let g:pandoc#completion#bib#mode = 'fallback'
  6. " Note: in the future citeproc will be the default.
  7. "if executable('pandoc-citeproc')
  8. " let g:pandoc#completion#bib#mode = 'citeproc'
  9. "else
  10. " let g:pandoc#completion#bib#mode = 'fallback'
  11. "endif
  12. endif
  13. if !exists('g:pandoc#completion#bib#use_preview')
  14. if g:pandoc#completion#bib#mode ==# 'citeproc'
  15. let g:pandoc#completion#bib#use_preview = 1
  16. else
  17. let g:pandoc#completion#bib#use_preview = 0
  18. endif
  19. endif
  20. " set the correct omnifunc completion
  21. if has('python3')
  22. setlocal omnifunc=pandoc#completion#Complete
  23. endif
  24. if g:pandoc#completion#bib#use_preview == 1
  25. " handle completeopt, so the preview is enabled
  26. if stridx(&completeopt, 'preview') > -1
  27. let b:pandoc_old_cot = &completeopt
  28. let &completeopt = &completeopt.',preview'
  29. au! VimPandoc BufEnter,WinEnter <buffer> let &completeopt = b:pandoc_old_cot.'.preview'
  30. au! VimPandoc BufLeave,WinLeave <buffer> let &completeopt = b:pandoc_old_cot
  31. endif
  32. " close the preview window when the completion has been inserted
  33. au! VimPandoc CompleteDone <buffer> pclose
  34. endif
  35. endfunction
  36. function! pandoc#completion#Complete(findstart, base) abort "{{{1
  37. if has('python3')
  38. if index(g:pandoc#modules#enabled, 'bibliographies') >= 0
  39. if a:findstart
  40. let l:line = getline('.')
  41. if l:line[:col('.')-1] =~# '@'
  42. let l:pos = searchpos('@', 'Wncb')
  43. if l:pos != [0,0]
  44. return l:pos[1]
  45. endif
  46. endif
  47. else
  48. let suggestions = pandoc#bibliographies#GetSuggestions(a:base)
  49. return suggestions
  50. endif
  51. endif
  52. endif
  53. return -3
  54. endfunction