Guest User

Untitled

a guest
Jan 16th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. " save this as complete_flicker.vim
  2. " vim -u complete_flicker.vim -c "startinsert"
  3.  
  4. let s:months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
  5. let s:cycle = 1
  6.  
  7. let s:last_tick = []
  8.  
  9. function! s:current_tick()
  10. return [b:changedtick, getcurpos()]
  11. endfunction
  12.  
  13. function! s:check_changes(...)
  14. let l:current_tick = s:current_tick()
  15. if s:last_tick != l:current_tick
  16. let s:last_tick = l:current_tick
  17. call s:on_changed()
  18. endif
  19. endfunction
  20.  
  21. function! s:start_check_changes_timer()
  22. let s:last_tick = []
  23. let s:check_change_timer = timer_start(30, function('s:check_changes'), {'repeat': -1})
  24. endfunction
  25.  
  26. function! s:stop_check_changes_timer()
  27. if exists('s:check_change_timer')
  28. call timer_stop(s:check_change_timer)
  29. unlet s:check_change_timer
  30. endif
  31. endfunction
  32.  
  33. function! s:on_changed()
  34. if mode() != 'i'
  35. return
  36. endif
  37. setlocal completeopt-=longest
  38. setlocal completeopt+=menuone
  39. setlocal completeopt-=menu
  40. setlocal completeopt+=noselect
  41. call complete(1, s:months[: s:cycle])
  42. let s:cycle = (s:cycle + 3) % len(s:months)
  43. endfunction
  44.  
  45. autocmd TextChangedI * call s:check_changes()
  46. autocmd InsertEnter * call s:start_check_changes_timer()
  47. autocmd InsertLeave * call s:stop_check_changes_timer()
Add Comment
Please, Sign In to add comment