autoclose_quotes.vim 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "let g:delimitMate_quotes = '" '' ` ” « |'
  2. let g:delimitMate_quotes = '" '' ` « |'
  3. let lines = readfile(expand('<sfile>:t:r').'.txt')
  4. call vimtest#StartTap()
  5. let testsnumber = len(filter(copy(lines), 'v:val =~ ''^"'''))
  6. let itemsnumber = len(split(g:delimitMate_quotes, ' '))
  7. call vimtap#Plan(testsnumber * itemsnumber)
  8. let reload = 1
  9. let tcount = 1
  10. let linenr = 0
  11. for item in lines
  12. let linenr += 1
  13. if item =~ '^#\|^\s*$'
  14. " A comment or empty line.
  15. continue
  16. endif
  17. if item !~ '^"'
  18. " A command.
  19. exec item
  20. call vimtap#Diag(item)
  21. let reload = 1
  22. continue
  23. endif
  24. if reload
  25. DelimitMateReload
  26. call vimtap#Diag('DelimitMateReload')
  27. let reload = 0
  28. endif
  29. let quotes = split(g:delimitMate_quotes, '\s')
  30. for quote in quotes
  31. if vimtap#Skip(1, tcount != 26, "This test is invalid for double quote.")
  32. let tcount += 1
  33. continue
  34. endif
  35. let [input, output] = split(item, '"\%(\\.\|[^\\"]\)*"\zs\s*\ze"\%(\\.\|[^\\"]\)*"')
  36. let input_q = substitute(input,"'" , escape(escape(quote, '"'), '\'), 'g')
  37. let output_q = substitute(output,"'" , escape(escape(quote, '"'), '\'), 'g')
  38. %d
  39. exec 'normal i'.eval(input_q)."\<Esc>"
  40. if quote == '”'
  41. call vimtap#Todo(1)
  42. endif
  43. call vimtap#Is(getline('.'), eval(output_q), 'Line '.linenr.': '.eval(substitute(input_q, '\\<', '<','g')))
  44. let tcount += 1
  45. endfor
  46. endfor
  47. call vimtest#Quit()