제출 #1136407

#제출 시각아이디문제언어결과실행 시간메모리
1136407horiseunFish 3 (JOI24_fish3)C++20
컴파일 에러
0 ms0 KiB
" Insert or delete brackets, parens, quotes in pairs. " Maintainer: JiangMiao <[email protected]> " Contributor: camthompson " Last Change: 2019-02-02 " Version: 2.0.0 " Homepage: http://www.vim.org/scripts/script.php?script_id=3599 " Repository: https://github.com/jiangmiao/auto-pairs " License: MIT if exists('g:AutoPairsLoaded') || &cp finish end let g:AutoPairsLoaded = 1 if !exists('g:AutoPairs') let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"', '```':'```', '"""':'"""', "'''":"'''", "`":"`"} end " default pairs base on filetype func! AutoPairsDefaultPairs() if exists('b:autopairs_defaultpairs') return b:autopairs_defaultpairs end let r = copy(g:AutoPairs) let allPairs = { \ 'vim': {'\v^\s*\zs"': ''}, \ 'rust': {'\w\zs<': '>', '&\zs''': ''}, \ 'php': {'<?': '?>//k]', '<?php': '?>//k]'} \ } for [filetype, pairs] in items(allPairs) if &filetype == filetype for [open, close] in items(pairs) let r[open] = close endfor end endfor let b:autopairs_defaultpairs = r return r endf if !exists('g:AutoPairsMapBS') let g:AutoPairsMapBS = 1 end " Map <C-h> as the same BS if !exists('g:AutoPairsMapCh') let g:AutoPairsMapCh = 1 end if !exists('g:AutoPairsMapCR') let g:AutoPairsMapCR = 1 end if !exists('g:AutoPairsWildClosedPair') let g:AutoPairsWildClosedPair = '' end if !exists('g:AutoPairsMapSpace') let g:AutoPairsMapSpace = 1 end if !exists('g:AutoPairsCenterLine') let g:AutoPairsCenterLine = 1 end if !exists('g:AutoPairsShortcutToggle') let g:AutoPairsShortcutToggle = '<M-p>' end if !exists('g:AutoPairsShortcutFastWrap') let g:AutoPairsShortcutFastWrap = '<M-e>' end if !exists('g:AutoPairsMoveCharacter') let g:AutoPairsMoveCharacter = "()[]{}\"'" end if !exists('g:AutoPairsShortcutJump') let g:AutoPairsShortcutJump = '<M-n>' endif " Fly mode will for closed pair to jump to closed pair instead of insert. " also support AutoPairsBackInsert to insert pairs where jumped. if !exists('g:AutoPairsFlyMode') let g:AutoPairsFlyMode = 0 endif " When skipping the closed pair, look at the current and " next line as well. if !exists('g:AutoPairsMultilineClose') let g:AutoPairsMultilineClose = 1 endif " Work with Fly Mode, insert pair where jumped if !exists('g:AutoPairsShortcutBackInsert') let g:AutoPairsShortcutBackInsert = '<M-b>' endif if !exists('g:AutoPairsSmartQuotes') let g:AutoPairsSmartQuotes = 1 endif " 7.4.849 support <C-G>U to avoid breaking '.' " Issue talk: https://github.com/jiangmiao/auto-pairs/issues/3 " Vim note: https://github.com/vim/vim/releases/tag/v7.4.849 if v:version > 704 || v:version == 704 && has("patch849") let s:Go = "\<C-G>U" else let s:Go = "" endif let s:Left = s:Go."\<LEFT>" let s:Right = s:Go."\<RIGHT>" " unicode len func! s:ulen(s) return len(split(a:s, '\zs')) endf func! s:left(s) return repeat(s:Left, s:ulen(a:s)) endf func! s:right(s) return repeat(s:Right, s:ulen(a:s)) endf func! s:delete(s) return repeat("\<DEL>", s:ulen(a:s)) endf func! s:backspace(s) return repeat("\<BS>", s:ulen(a:s)) endf func! s:getline() let line = getline('.') let pos = col('.') - 1 let before = strpart(line, 0, pos) let after = strpart(line, pos) let afterline = after if g:AutoPairsMultilineClose let n = line('$') let i = line('.')+1 while i <= n let line = getline(i) let after = after.' '.line if !(line =~ '\v^\s*$') break end let i = i+1 endwhile end return [before, after, afterline] endf " split text to two part " returns [orig, text_before_open, open] func! s:matchend(text, open) let m = matchstr(a:text, '\V'.a:open.'\v$') if m == "" return [] end return [a:text, strpart(a:text, 0, len(a:text)-len(m)), m] endf " returns [orig, close, text_after_close] func! s:matchbegin(text, close) let m = matchstr(a:text, '^\V'.a:close) if m == "" return [] end return [a:text, m, strpart(a:text, len(m), len(a:text)-len(m))] endf " add or delete pairs base on g:AutoPairs " AutoPairsDefine(addPairs:dict[, removeOpenPairList:list]) " " eg: " au FileType html let b:AutoPairs = AutoPairsDefine({'<!--' : '-->'}, ['{']) " add <!-- --> pair and remove '{' for html file func! AutoPairsDefine(pairs, ...) let r = AutoPairsDefaultPairs() if a:0 > 0 for open in a:1 unlet r[open] endfor end for [open, close] in items(a:pairs) let r[open] = close endfor return r endf func! AutoPairsInsert(key) if !b:autopairs_enabled return a:key end let b:autopairs_saved_pair = [a:key, getpos('.')] let [before, after, afterline] = s:getline() " Ignore auto close if prev character is \ if before[-1:-1] == '\' return a:key end " check open pairs for [open, close, opt] in b:AutoPairsList let ms = s:matchend(before.a:key, open) let m = matchstr(afterline, '^\v\s*\zs\V'.close) if len(ms) > 0 " process the open pair " remove inserted pair " eg: if the pairs include < > and <!-- --> " when <!-- is detected the inserted pair < > should be clean up let target = ms[1] let openPair = ms[2] if len(openPair) == 1 && m == openPair break end let bs = '' let del = '' while len(before) > len(target) let found = 0 " delete pair for [o, c, opt] in b:AutoPairsList let os = s:matchend(before, o) if len(os) && len(os[1]) < len(target) " any text before openPair should not be deleted continue end let cs = s:matchbegin(afterline, c) if len(os) && len(cs) let found = 1 let before = os[1] let afterline = cs[2] let bs = bs.s:backspace(os[2]) let del = del.s:delete(cs[1]) break end endfor if !found " delete charactor let ms = s:matchend(before, '\v.') if len(ms) let before = ms[1] let bs = bs.s:backspace(ms[2]) end end endwhile return bs.del.openPair.close.s:left(close) end endfor " check close pairs for [open, close, opt] in b:AutoPairsList if close == '' continue end if a:key == g:AutoPairsWildClosedPair || opt['mapclose'] && opt['key'] == a:key " the close pair is in the same line let m = matchstr(afterline, '^\v\s*\V'.close) if m != '' if before =~ '\V'.open.'\v\s*$' && m[0] =~ '\v\s' " remove the space we inserted if the text in pairs is blank return "\<DEL>".s:right(m[1:]) else return s:right(m) end end let m = matchstr(after, '^\v\s*\zs\V'.close) if m != '' if a:key == g:AutoPairsWildClosedPair || opt['multiline'] if b:autopairs_return_pos == line('.') && getline('.') =~ '\v^\s*$' normal! ddk$ end call search(m, 'We') return "\<Right>" else break end end end endfor " Fly Mode, and the key is closed-pairs, search closed-pair and jump if g:AutoPairsFlyMode && a:key =~ '\v[\}\]\)]' if search(a:key, 'We') return "\<Right>" endif endif return a:key endf func! AutoPairsDelete() if !b:autopairs_enabled return "\<BS>" end let [before, after, ig] = s:getline() for [open, close, opt] in b:AutoPairsList let b = matchstr(before, '\V'.open.'\v\s?$') let a = matchstr(after, '^\v\s*\V'.close) if b != '' && a != '' if b[-1:-1] == ' ' if a[0] == ' ' return "\<BS>\<DELETE>" else return "\<BS>" end end return s:backspace(b).s:delete(a) end endfor return "\<BS>" " delete the pair foo[]| <BS> to foo for [open, close, opt] in b:AutoPairsList let m = s:matchend(before, '\V'.open.'\v\s*'.'\V'.close.'\v$') if len(m) > 0 return s:backspace(m[2]) end endfor return "\<BS>" endf " Fast wrap the word in brackets func! AutoPairsFastWrap() let c = @" normal! x let [before, after, ig] = s:getline() if after[0] =~ '\v[\{\[\(\<]' normal! % normal! p else for [open, close, opt] in b:AutoPairsList if close == '' continue end if after =~ '^\s*\V'.open call search(close, 'We') normal! p let @" = c return "" end endfor if after[1:1] =~ '\v\w' normal! e normal! p else normal! p end end let @" = c return "" endf func! AutoPairsJump() call search('["\]'')}]','W') endf func! AutoPairsMoveCharacter(key) let c = getline(".")[col(".")-1] let escaped_key = substitute(a:key, "'", "''", 'g') return "\<DEL>\<ESC>:call search("."'".escaped_key."'".")\<CR>a".c."\<LEFT>" endf func! AutoPairsBackInsert() let pair = b:autopairs_saved_pair[0] let pos = b:autopairs_saved_pair[1] call setpos('.', pos) return pair endf func! AutoPairsReturn() if b:autopairs_enabled == 0 return '' end let b:autopairs_return_pos = 0 let before = getline(line('.')-1) let [ig, ig, afterline] = s:getline() let cmd = '' for [open, close, opt] in b:AutoPairsList if close == '' continue end if before =~ '\V'.open.'\v\s*$' && afterline =~ '^\s*\V'.close let b:autopairs_return_pos = line('.') if g:AutoPairsCenterLine && winline() * 3 >= winheight(0) * 2 " Recenter before adding new line to avoid replacing line content let cmd = "zz" end " If equalprg has been set, then avoid call = " https://github.com/jiangmiao/auto-pairs/issues/24 if &equalprg != '' return "\<ESC>".cmd."O" endif " conflict with javascript and coffee " javascript need indent new line " coffeescript forbid indent new line if &filetype == 'coffeescript' || &filetype == 'coffee' return "\<ESC>".cmd."k==o" else return "\<ESC>".cmd."=ko" endif end endfor return '' endf func! AutoPairsSpace() if !b:autopairs_enabled return "\<SPACE>" end let [before, after, ig] = s:getline() for [open, close, opt] in b:AutoPairsList if close == '' continue end if before =~ '\V'.open.'\v$' && after =~ '^\V'.close if close =~ '\v^[''"`]$' return "\<SPACE>" else return "\<SPACE>\<SPACE>".s:Left end end endfor return "\<SPACE>" endf func! AutoPairsMap(key) " | is special key which separate map command from text let key = a:key if key == '|' let key = '<BAR>' end let escaped_key = substitute(key, "'", "''", 'g') " use expr will cause search() doesn't work execute 'inoremap <buffer> <silent> '.key." <C-R>=AutoPairsInsert('".escaped_key."')<CR>" endf func! AutoPairsToggle() if b:autopairs_enabled let b:autopairs_enabled = 0 echo 'AutoPairs Disabled.' else let b:autopairs_enabled = 1 echo 'AutoPairs Enabled.' end return '' endf func! s:sortByLength(i1, i2) return len(a:i2[0])-len(a:i1[0]) endf func! AutoPairsInit() let b:autopairs_loaded = 1 if !exists('b:autopairs_enabled') let b:autopairs_enabled = 1 end if !exists('b:AutoPairs') let b:AutoPairs = AutoPairsDefaultPairs() end if !exists('b:AutoPairsMoveCharacter') let b:AutoPairsMoveCharacter = g:AutoPairsMoveCharacter end let b:autopairs_return_pos = 0 let b:autopairs_saved_pair = [0, 0] let b:AutoPairsList = [] " buffer level map pairs keys " n - do not map the first charactor of closed pair to close key " m - close key jumps through multi line " s - close key jumps only in the same line for [open, close] in items(b:AutoPairs) let o = open[-1:-1] let c = close[0] let opt = {'mapclose': 1, 'multiline':1} let opt['key'] = c if o == c let opt['multiline'] = 0 end let m = matchlist(close, '\v(.*)//(.*)$') if len(m) > 0 if m[2] =~ 'n' let opt['mapclose'] = 0 end if m[2] =~ 'm' let opt['multiline'] = 1 end if m[2] =~ 's' let opt['multiline'] = 0 end let ks = matchlist(m[2], '\vk(.)') if len(ks) > 0 let opt['key'] = ks[1] let c = opt['key'] end let close = m[1] end call AutoPairsMap(o) if o != c && c != '' && opt['mapclose'] call AutoPairsMap(c) end let b:AutoPairsList += [[open, close, opt]] endfor " sort pairs by length, longer pair should have higher priority let b:AutoPairsList = sort(b:AutoPairsList, "s:sortByLength") for item in b:AutoPairsList let [open, close, opt] = item if open == "'" && open == close let item[0] = '\v(^|\W)\zs''' end endfor for key in split(b:AutoPairsMoveCharacter, '\s*') let escaped_key = substitute(key, "'", "''", 'g') execute 'inoremap <silent> <buffer> <M-'.key."> <C-R>=AutoPairsMoveCharacter('".escaped_key."')<CR>" endfor " Still use <buffer> level mapping for <BS> <SPACE> if g:AutoPairsMapBS " Use <C-R> instead of <expr> for issue #14 sometimes press BS output strange words execute 'inoremap <buffer> <silent> <BS> <C-R>=AutoPairsDelete()<CR>' end if g:AutoPairsMapCh execute 'inoremap <buffer> <silent> <C-h> <C-R>=AutoPairsDelete()<CR>' endif if g:AutoPairsMapSpace " Try to respect abbreviations on a <SPACE> let do_abbrev = "" if v:version == 703 && has("patch489") || v:version > 703 let do_abbrev = "<C-]>" endif execute 'inoremap <buffer> <silent> <SPACE> '.do_abbrev.'<C-R>=AutoPairsSpace()<CR>' end if g:AutoPairsShortcutFastWrap != '' execute 'inoremap <buffer> <silent> '.g:AutoPairsShortcutFastWrap.' <C-R>=AutoPairsFastWrap()<CR>' end if g:AutoPairsShortcutBackInsert != '' execute 'inoremap <buffer> <silent> '.g:AutoPairsShortcutBackInsert.' <C-R>=AutoPairsBackInsert()<CR>' end if g:AutoPairsShortcutToggle != '' " use <expr> to ensure showing the status when toggle execute 'inoremap <buffer> <silent> <expr> '.g:AutoPairsShortcutToggle.' AutoPairsToggle()' execute 'noremap <buffer> <silent> '.g:AutoPairsShortcutToggle.' :call AutoPairsToggle()<CR>' end if g:AutoPairsShortcutJump != '' execute 'inoremap <buffer> <silent> ' . g:AutoPairsShortcutJump. ' <ESC>:call AutoPairsJump()<CR>a' execute 'noremap <buffer> <silent> ' . g:AutoPairsShortcutJump. ' :call AutoPairsJump()<CR>' end if &keymap != '' let l:imsearch = &imsearch let l:iminsert = &iminsert let l:imdisable = &imdisable execute 'setlocal keymap=' . &keymap execute 'setlocal imsearch=' . l:imsearch execute 'setlocal iminsert=' . l:iminsert if l:imdisable execute 'setlocal imdisable' else execute 'setlocal noimdisable' end end endf func! s:ExpandMap(map) let map = a:map let map = substitute(map, '\(<Plug>\w\+\)', '\=maparg(submatch(1), "i")', 'g') let map = substitute(map, '\(<Plug>([^)]*)\)', '\=maparg(submatch(1), "i")', 'g') return map endf func! AutoPairsTryInit() if exists('b:autopairs_loaded') return end " for auto-pairs starts with 'a', so the priority is higher than supertab and vim-endwise " " vim-endwise doesn't support <Plug>AutoPairsReturn " when use <Plug>AutoPairsReturn will cause <Plug> isn't expanded " " supertab doesn't support <SID>AutoPairsReturn " when use <SID>AutoPairsReturn will cause Duplicated <CR> " " and when load after vim-endwise will cause unexpected endwise inserted. " so always load AutoPairs at last " Buffer level keys mapping " comptible with other plugin if g:AutoPairsMapCR if v:version == 703 && has('patch32') || v:version > 703 " VIM 7.3 supports advancer maparg which could get <expr> info " then auto-pairs could remap <CR> in any case. let info = maparg('<CR>', 'i', 0, 1) if empty(info) let old_cr = '<CR>' let is_expr = 0 else let old_cr = info['rhs'] let old_cr = s:ExpandMap(old_cr) let old_cr = substitute(old_cr, '<SID>', '<SNR>' . info['sid'] . '_', 'g') let is_expr = info['expr'] let wrapper_name = '<SID>AutoPairsOldCRWrapper73' endif else " VIM version less than 7.3 " the mapping's <expr> info is lost, so guess it is expr or not, it's " not accurate. let old_cr = maparg('<CR>', 'i') if old_cr == '' let old_cr = '<CR>' let is_expr = 0 else let old_cr = s:ExpandMap(old_cr) " old_cr contain (, I guess the old cr is in expr mode let is_expr = old_cr =~ '\V(' && toupper(old_cr) !~ '\V<C-R>' " The old_cr start with " it must be in expr mode let is_expr = is_expr || old_cr =~ '\v^"' let wrapper_name = '<SID>AutoPairsOldCRWrapper' end end if old_cr !~ 'AutoPairsReturn' if is_expr " remap <expr> to `name` to avoid mix expr and non-expr mode execute 'inoremap <buffer> <expr> <script> '. wrapper_name . ' ' . old_cr let old_cr = wrapper_name end " Always silent mapping execute 'inoremap <script> <buffer> <silent> <CR> '.old_cr.'<SID>AutoPairsReturn' end endif call AutoPairsInit() endf " Always silent the command inoremap <silent> <SID>AutoPairsReturn <C-R>=AutoPairsReturn()<CR> imap <script> <Plug>AutoPairsReturn <SID>AutoPairsReturn au BufEnter * :call AutoPairsTryInit()

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp:1:1: warning: missing terminating " character
    1 | " Insert or delete brackets, parens, quotes in pairs.
      | ^
Main.cpp:1:1: error: missing terminating " character
    1 | " Insert or delete brackets, parens, quotes in pairs.
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:2:1: warning: missing terminating " character
    2 | " Maintainer:   JiangMiao <[email protected]>
      | ^
Main.cpp:2:1: error: missing terminating " character
    2 | " Maintainer:   JiangMiao <[email protected]>
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:3:1: warning: missing terminating " character
    3 | " Contributor: camthompson
      | ^
Main.cpp:3:1: error: missing terminating " character
    3 | " Contributor: camthompson
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:4:1: warning: missing terminating " character
    4 | " Last Change:  2019-02-02
      | ^
Main.cpp:4:1: error: missing terminating " character
    4 | " Last Change:  2019-02-02
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:5:1: warning: missing terminating " character
    5 | " Version: 2.0.0
      | ^
Main.cpp:5:1: error: missing terminating " character
    5 | " Version: 2.0.0
      | ^~~~~~~~~~~~~~~~
Main.cpp:6:1: warning: missing terminating " character
    6 | " Homepage: http://www.vim.org/scripts/script.php?script_id=3599
      | ^
Main.cpp:6:1: error: missing terminating " character
    6 | " Homepage: http://www.vim.org/scripts/script.php?script_id=3599
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:7:1: warning: missing terminating " character
    7 | " Repository: https://github.com/jiangmiao/auto-pairs
      | ^
Main.cpp:7:1: error: missing terminating " character
    7 | " Repository: https://github.com/jiangmiao/auto-pairs
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:8:1: warning: missing terminating " character
    8 | " License: MIT
      | ^
Main.cpp:8:1: error: missing terminating " character
    8 | " License: MIT
      | ^~~~~~~~~~~~~~
Main.cpp:10:11: warning: character constant too long for its type
   10 | if exists('g:AutoPairsLoaded') || &cp
      |           ^~~~~~~~~~~~~~~~~~~
Main.cpp:15:12: warning: character constant too long for its type
   15 | if !exists('g:AutoPairs')
      |            ^~~~~~~~~~~~~
Main.cpp:16:65: warning: multi-character character constant [-Wmultichar]
   16 |   let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"', '```':'```', '"""':'"""', "'''":"'''", "`":"`"}
      |                                                                 ^~~~~
Main.cpp:16:71: warning: multi-character character constant [-Wmultichar]
   16 |   let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"', '```':'```', '"""':'"""', "'''":"'''", "`":"`"}
      |                                                                       ^~~~~
Main.cpp:16:78: warning: multi-character character constant [-Wmultichar]
   16 |   let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"', '```':'```', '"""':'"""', "'''":"'''", "`":"`"}
      |                                                                              ^~~~~
Main.cpp:16:84: warning: multi-character character constant [-Wmultichar]
   16 |   let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"', '```':'```', '"""':'"""', "'''":"'''", "`":"`"}
      |                                                                                    ^~~~~
Main.cpp:19:1: warning: missing terminating " character
   19 | " default pairs base on filetype
      | ^
Main.cpp:19:1: error: missing terminating " character
   19 | " default pairs base on filetype
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:21:13: warning: character constant too long for its type
   21 |   if exists('b:autopairs_defaultpairs')
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:26:9: error: stray '\' in program
   26 |         \ 'vim': {'\v^\s*\zs"': ''},
      |         ^
Main.cpp:26:11: warning: multi-character character constant [-Wmultichar]
   26 |         \ 'vim': {'\v^\s*\zs"': ''},
      |           ^~~~~
Main.cpp:26:19: warning: unknown escape sequence: '\s'
   26 |         \ 'vim': {'\v^\s*\zs"': ''},
      |                   ^~~~~~~~~~~~
Main.cpp:26:19: warning: unknown escape sequence: '\z'
Main.cpp:26:19: warning: character constant too long for its type
Main.cpp:26:33: error: empty character constant
   26 |         \ 'vim': {'\v^\s*\zs"': ''},
      |                                 ^~
Main.cpp:27:9: error: stray '\' in program
   27 |         \ 'rust': {'\w\zs<': '>', '&\zs''': ''},
      |         ^
Main.cpp:27:11: warning: multi-character character constant [-Wmultichar]
   27 |         \ 'rust': {'\w\zs<': '>', '&\zs''': ''},
      |           ^~~~~~
Main.cpp:27:20: warning: unknown escape sequence: '\w'
   27 |         \ 'rust': {'\w\zs<': '>', '&\zs''': ''},
      |                    ^~~~~~~~
Main.cpp:27:20: warning: unknown escape sequence: '\z'
Main.cpp:27:20: warning: multi-character character constant [-Wmultichar]
Main.cpp:27:35: warning: unknown escape sequence: '\z'
   27 |         \ 'rust': {'\w\zs<': '>', '&\zs''': ''},
      |                                   ^~~~~~
Main.cpp:27:35: warning: multi-character character constant [-Wmultichar]
Main.cpp:27:41: error: empty character constant
   27 |         \ 'rust': {'\w\zs<': '>', '&\zs''': ''},
      |                                         ^~
Main.cpp:27:45: error: empty character constant
   27 |         \ 'rust': {'\w\zs<': '>', '&\zs''': ''},
      |                                             ^~
Main.cpp:28:9: error: stray '\' in program
   28 |         \ 'php': {'<?': '?>//k]', '<?php': '?>//k]'}
      |         ^
Main.cpp:28:11: warning: multi-character character constant [-Wmultichar]
   28 |         \ 'php': {'<?': '?>//k]', '<?php': '?>//k]'}
      |           ^~~~~
Main.cpp:28:19: warning: multi-character character constant [-Wmultichar]
   28 |         \ 'php': {'<?': '?>//k]', '<?php': '?>//k]'}
      |                   ^~~~
Main.cpp:28:25: warning: character constant too long for its type
   28 |         \ 'php': {'<?': '?>//k]', '<?php': '?>//k]'}
      |                         ^~~~~~~~
Main.cpp:28:35: warning: character constant too long for its type
   28 |         \ 'php': {'<?': '?>//k]', '<?php': '?>//k]'}
      |                                   ^~~~~~~
Main.cpp:28:44: warning: character constant too long for its type
   28 |         \ 'php': {'<?': '?>//k]', '<?php': '?>//k]'}
      |                                            ^~~~~~~~
Main.cpp:29:9: error: stray '\' in program
   29 |         \ }
      |         ^
Main.cpp:41:12: warning: character constant too long for its type
   41 | if !exists('g:AutoPairsMapBS')
      |            ^~~~~~~~~~~~~~~~~~
Main.cpp:45:1: warning: missing terminating " character
   45 | " Map <C-h> as the same BS
      | ^
Main.cpp:45:1: error: missing terminating " character
   45 | " Map <C-h> as the same BS
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:46:12: warning: character constant too long for its type
   46 | if !exists('g:AutoPairsMapCh')
      |            ^~~~~~~~~~~~~~~~~~
Main.cpp:50:12: warning: character constant too long for its type
   50 | if !exists('g:AutoPairsMapCR')
      |            ^~~~~~~~~~~~~~~~~~
Main.cpp:54:12: warning: character constant too long for its type
   54 | if !exists('g:AutoPairsWildClosedPair')
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:55:35: error: empty character constant
   55 |   let g:AutoPairsWildClosedPair = ''
      |                                   ^~
Main.cpp:58:12: warning: character constant too long for its type
   58 | if !exists('g:AutoPairsMapSpace')
      |            ^~~~~~~~~~~~~~~~~~~~~
Main.cpp:62:12: warning: character constant too long for its type
   62 | if !exists('g:AutoPairsCenterLine')
      |            ^~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:66:12: warning: character constant too long for its type
   66 | if !exists('g:AutoPairsShortcutToggle')
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:67:35: warning: character constant too long for its type
   67 |   let g:AutoPairsShortcutToggle = '<M-p>'
      |                                   ^~~~~~~
Main.cpp:70:12: warning: character constant too long for its type
   70 | if !exists('g:AutoPairsShortcutFastWrap')
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:71:37: warning: character constant too long for its type
   71 |   let g:AutoPairsShortcutFastWrap = '<M-e>'
      |                                     ^~~~~~~
Main.cpp:74:12: warning: character constant too long for its type
   74 | if !exists('g:AutoPairsMoveCharacter')
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:78:12: warning: character constant too long for its type
   78 | if !exists('g:AutoPairsShortcutJump')
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:79:33: warning: character constant too long for its type
   79 |   let g:AutoPairsShortcutJump = '<M-n>'
      |                                 ^~~~~~~
Main.cpp:82:1: warning: missing terminating " character
   82 | " Fly mode will for closed pair to jump to closed pair instead of insert.
      | ^
Main.cpp:82:1: error: missing terminating " character
   82 | " Fly mode will for closed pair to jump to closed pair instead of insert.
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:83:1: warning: missing terminating " character
   83 | " also support AutoPairsBackInsert to insert pairs where jumped.
      | ^
Main.cpp:83:1: error: missing terminating " character
   83 | " also support AutoPairsBackInsert to insert pairs where jumped.
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:84:12: warning: character constant too long for its type
   84 | if !exists('g:AutoPairsFlyMode')
      |            ^~~~~~~~~~~~~~~~~~~~
Main.cpp:88:1: warning: missing terminating " character
   88 | " When skipping the closed pair, look at the current and
      | ^
Main.cpp:88:1: error: missing terminating " character
   88 | " When skipping the closed pair, look at the current and
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:89:1: warning: missing terminating " character
   89 | " next line as well.
      | ^
Main.cpp:89:1: error: missing terminating " character
   89 | " next line as well.
      | ^~~~~~~~~~~~~~~~~~~~
Main.cpp:90:12: warning: character constant too long for its type
   90 | if !exists('g:AutoPairsMultilineClose')
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:94:1: warning: missing terminating " character
   94 | " Work with Fly Mode, insert pair where jumped
      | ^
Main.cpp:94:1: error: missing terminating " character
   94 | " Work with Fly Mode, insert pair where jumped
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:95:12: warning: character constant too long for its type
   95 | if !exists('g:AutoPairsShortcutBackInsert')
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:96:39: warning: character constant too long for its type
   96 |   let g:AutoPairsShortcutBackInsert = '<M-b>'
      |                                       ^~~~~~~
Main.cpp:99:12: warning: character constant too long for its type
   99 | if !exists('g:AutoPairsSmartQuotes')
      |            ^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:103:1: warning: missing terminating " character
  103 | " 7.4.849 support <C-G>U to avoid breaking '.'
      | ^
Main.cpp:103:1: error: missing terminating " character
  103 | " 7.4.849 support <C-G>U to avoid breaking '.'
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:104:1: warning: missing terminating " character
  104 | " Issue talk: https://github.com/jiangmiao/auto-pairs/issues/3
      | ^
Main.cpp:104:1: error: missing terminating " character
  104 | " Issue talk: https://github.com/jiangmiao/auto-pairs/issues/3
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:105:1: warning: missing terminating " character
  105 | " Vim note: https://github.com/vim/vim/releases/tag/v7.4.849
      | ^
Main.cpp:105:1: error: missing terminating " character
  105 | " Vim note: https://github.com/vim/vim/releases/tag/v7.4.849
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:118:1: warning: missing terminating " character
  118 | " unicode len
      | ^
Main.cpp:118:1: error: missing terminating " character
  118 | " unicode len
      | ^~~~~~~~~~~~~
Main.cpp:120:25: warning: unknown escape sequence: '\z'
  120 |   return len(split(a:s, '\zs'))
      |                         ^~~~~
Main.cpp:120:25: warning: multi-character character constant [-Wmultichar]
Main.cpp:151:20: warning: unknown escape sequence: '\s'
  151 |       if !(line =~ '\v^\s*$')
      |                    ^~~~~~~~~
Main.cpp:151:20: warning: character constant too long for its type
Main.cpp:160:1: warning: missing terminating " character
  160 | " split text to two part
      | ^
Main.cpp:160:1: error: missing terminating " character
  160 | " split text to two part
      | ^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:161:1: warning: missing terminating " character
  161 | " returns [orig, text_before_open, open]
      | ^
Main.cpp:161:1: error: missing terminating " character
  161 | " returns [orig, text_before_open, open]
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:163:30: warning: unknown escape sequence: '\V'
  163 |     let m = matchstr(a:text, '\V'.a:open.'\v$')
      |                              ^~~~
Main.cpp:163:42: warning: multi-character character constant [-Wmultichar]
  163 |     let m = matchstr(a:text, '\V'.a:open.'\v$')
      |                                          ^~~~~
Main.cpp:170:1: warning: missing terminating " character
  170 | " returns [orig, close, text_after_close]
      | ^
Main.cpp:170:1: error: missing terminating " character
  170 | " returns [orig, close, text_after_close]
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:172:30: warning: unknown escape sequence: '\V'
  172 |     let m = matchstr(a:text, '^\V'.a:close)
      |                              ^~~~~
Main.cpp:172:30: warning: multi-character character constant [-Wmultichar]
Main.cpp:179:1: warning: missing terminating " character
  179 | " add or delete pairs base on g:AutoPairs
      | ^
Main.cpp:179:1: error: missing terminating " character
  179 | " add or delete pairs base on g:AutoPairs
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:180:1: warning: missing terminating " character
  180 | " AutoPairsDefine(addPairs:dict[, removeOpenPairList:list])
      | ^
Main.cpp:180:1: error: missing terminating " character
  180 | " AutoPairsDefine(addPairs:dict[, removeOpenPairList:list])
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:181:1: warning: missing terminating " character
  181 | "
      | ^
Main.cpp:181:1: error: missing terminating " character
Main.cpp:182:1: warning: missing terminating " character
  182 | " eg:
      | ^
Main.cpp:182:1: error: missing terminating " character
  182 | " eg:
      | ^~~~~
Main.cpp:183:1: warning: missing terminating " character
  183 | "   au FileType html let b:AutoPairs = AutoPairsDefine({'<!--' : '-->'}, ['{'])
      | ^
Main.cpp:183:1: error: missing terminating " character
  183 | "   au FileType html let b:AutoPairs = AutoPairsDefine({'<!--' : '-->'}, ['{'])
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:184:1: warning: missing terminating " character
  184 | "   add <!-- --> pair and remove '{' for html file
      | ^
Main.cpp:184:1: error: missing terminating " character
  184 | "   add <!-- --> pair and remove '{' for html file
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:207:3: warning: missing terminating " character
  207 |   " Ignore auto close if prev character is \
      |   ^
Main.cpp:207:3: error: missing terminating " character
  207 |   " Ignore auto close if prev character is \
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  208 |   if before[-1:-1] == '\'
      |   ~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:212:3: warning: missing terminating " character
  212 |   " check open pairs
      |   ^
Main.cpp:212:3: error: missing terminating " character
  212 |   " check open pairs
      |   ^~~~~~~~~~~~~~~~~~
Main.cpp:215:33: warning: unknown escape sequence: '\s'
  215 |     let m = matchstr(afterline, '^\v\s*\zs\V'.close)
      |                                 ^~~~~~~~~~~~~
Main.cpp:215:33: warning: unknown escape sequence: '\z'
Main.cpp:215:33: warning: unknown escape sequence: '\V'
Main.cpp:215:33: warning: character constant too long for its type
Main.cpp:217:7: warning: missing terminating " character
  217 |       " process the open pair
      |       ^
Main.cpp:217:7: error: missing terminating " character
  217 |       " process the open pair
      |       ^~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:219:7: warning: missing terminating " character
  219 |       " remove inserted pair
      |       ^
Main.cpp:219:7: error: missing terminating " character
  219 |       " remove inserted pair
      |       ^~~~~~~~~~~~~~~~~~~~~~
Main.cpp:220:7: warning: missing terminating " character
  220 |       " eg: if the pairs include < > and  <!-- -->
      |       ^
Main.cpp:220:7: error: missing terminating " character
  220 |       " eg: if the pairs include < > and  <!-- -->
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Main.cpp:221:7: warning: missing terminating " character
  221 |       " when <!-- is detected the inserted pair < > should be clean up
      |       ^
Main.cpp:221:7: error: missing terminating " character
  221 |       " when <!-- is detected the inserted pair < > should be clean up
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Main.cpp:227:16: error: empty character constant
  227 |       let bs = ''
      |                ^~
Main.cpp:228:17: error: empty character constant
  228 |       let del = ''
      |                 ^~
Main.cpp:231:9: warning: missing terminating " character
  231 |         " delete pair
      |         ^
Main.cpp:231:9: error: missing terminating " character
  231 |         " delete pair
      |         ^~~~~~~~~~~~~
Main.cpp:235:13: warning: missing terminating " character
  235 |             " any text before openPair should not be deleted
      |             ^
Main.cpp:235:13: error: missing terminating " character
  235 |             " any text before openPair should not be deleted
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:249:11: warning: missing terminating " character
  249 |           " delete charactor
      |           ^
Main.cpp:249:11: error: missing terminating " character
  249 |           " delete charactor
      |           ^~~~~~~~~~~~~~~~~~
Main.cpp:250:39: warning: multi-character character constant [-Wmultichar]
  250 |           let ms = s:matchend(before, '\v.')
      |                                       ^~~~~
Main.cpp:261:3: warning: missing terminating " character
  261 |   " check close pairs
      |   ^
Main.cpp:261:3: error: missing terminating " character
  261 |   " check close pairs
      |   ^~~~~~~~~~~~~~~~~~~
Main.cpp:263:17: error: empty character constant
  263 |     if close == ''
      |                 ^~
Main.cpp:266:50: warning: character constant too long for its type
  266 |     if a:key == g:AutoPairsWildClosedPair || opt['mapclose'] && opt['key'] == a:key
      |                                                  ^~~~~~~~~~
Main.cpp:266:69: warning: multi-character character constant [-Wmultichar]
  266 |     if a:key == g:AutoPairsWildClosedPair || opt['mapclose'] && opt['key'] == a:key
      |                                                                     ^~~~~
Main.cpp:267:7: warning: missing terminating " character
  267 |       " the close pair is in the same line
      |       ^
Main.cpp:267:7: error: missing terminating " character
  267 |       " the close pair is in the same line
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:268:35: warning: unknown escape sequence: '\s'
  268 |       let m = matchstr(afterline, '^\v\s*\V'.close)
      |                                   ^~~~~~~~~~
Main.cpp:268:35: warning: unknown escape sequence: '\V'
Main.cpp:268:35: warning: character constant too long for its type
Main.cpp:269:15: error: empty character constant
  269 |       if m != ''
      |               ^~
Main.cpp:270:22: warning: unknown escape sequence: '\V'
  270 |         if before =~ '\V'.open.'\v\s*$' && m[0] =~ '\v\s'
      |                      ^~~~
Main.cpp:270:32: warning: unknown escape sequence: '\s'
  270 |         if before =~ '\V'.open.'\v\s*$' && m[0] =~ '\v\s'
      |                                ^~~~~~~~
Main.cpp:270:32: warning: multi-character character constant [-Wmultichar]
Main.cpp:270:52: warning: unknown escape sequence: '\s'
  270 |         if before =~ '\V'.open.'\v\s*$' && m[0] =~ '\v\s'
      |                                                    ^~~~~~
Main.cpp:270:52: warning: multi-character character constant [-Wmultichar]
Main.cpp:271:11: warning: missing terminating " character
  271 |           " remove the space we inserted if the text in pairs is blank
      |           ^
Main.cpp:271:11: error: missing terminating " character
  271 |           " remove the space we inserted if the text in pairs is blank
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:277:31: warning: unknown escape sequence: '\s'
  277 |       let m = matchstr(after, '^\v\s*\zs\V'.close)
      |                               ^~~~~~~~~~~~~
Main.cpp:277:31: warning: unknown escape sequence: '\z'
Main.cpp:277:31: warning: unknown escape sequence: '\V'
Main.cpp:277:31: warning: character constant too long for its type
Main.cpp:278:15: error: empty character constant
  278 |       if m != ''
      |               ^~
Main.cpp:279:54: warning: character constant too long for its type
  279 |         if a:key == g:AutoPairsWildClosedPair || opt['multiline']
      |                                                      ^~~~~~~~~~~
Main.cpp:280:69: warning: unknown escape sequence: '\s'
  280 |           if b:autopairs_return_pos == line('.') && getline('.') =~ '\v^\s*$'
      |                                                                     ^~~~~~~~~
Main.cpp:280:69: warning: character constant too long for its type
Main.cpp:283:26: warning: multi-character character constant [-Wmultichar]
  283 |           call search(m, 'We')
      |                          ^~~~
Main.cpp:293:3: warning: missing terminating " character
  293 |   " Fly Mode, and the key is closed-pairs, search closed-pair and jump
      |   ^
Main.cpp:293:3: error: missing terminating " character
  293 |   " Fly Mode, and the key is closed-pairs, search closed-pair and jump
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:294:38: warning: unknown escape sequence: '\}'
  294 |   if g:AutoPairsFlyMode &&  a:key =~ '\v[\}\]\)]'
      |                                      ^~~~~~~~~~~~
Main.cpp:294:38: warning: unknown escape sequence: '\]'
Main.cpp:294:38: warning: unknown escape sequence: '\)'
Main.cpp:294:38: warning: character constant too long for its type
Main.cpp:295:22: warning: multi-character character constant [-Wmultichar]
  295 |     if search(a:key, 'We')
      |                      ^~~~
Main.cpp:310:30: warning: unknown escape sequence: '\V'
  310 |     let b = matchstr(before, '\V'.open.'\v\s?$')
      |                              ^~~~
Main.cpp:310:40: warning: unknown escape sequence: '\s'
  310 |     let b = matchstr(before, '\V'.open.'\v\s?$')
      |                                        ^~~~~~~~
Main.cpp:310:40: warning: multi-character character constant [-Wmultichar]
Main.cpp:311:29: warning: unknown escape sequence: '\s'
  311 |     let a = matchstr(after, '^\v\s*\V'.close)
      |                             ^~~~~~~~~~
Main.cpp:311:29: warning: unknown escape sequence: '\V'
Main.cpp:311:29: warning: character constant too long for its type
Main.cpp:312:13: error: empty character constant
  312 |     if b != '' && a != ''
      |             ^~
Main.cpp:312:24: error: empty character constant
  312 |     if b != '' && a != ''
      |                        ^~
Main.cpp:325:3: warning: missing terminating " character
  325 |   " delete the pair foo[]| <BS> to foo
      |   ^
Main.cpp:325:3: error: missing terminating " character
  325 |   " delete the pair foo[]| <BS> to foo
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:327:32: warning: unknown escape sequence: '\V'
  327 |     let m = s:matchend(before, '\V'.open.'\v\s*'.'\V'.close.'\v$')
      |                                ^~~~
Main.cpp:327:42: warning: unknown escape sequence: '\s'
  327 |     let m = s:matchend(before, '\V'.open.'\v\s*'.'\V'.close.'\v$')
      |                                          ^~~~~~~
Main.cpp:327:42: warning: multi-character character constant [-Wmultichar]
Main.cpp:327:50: warning: unknown escape sequence: '\V'
  327 |     let m = s:matchend(before, '\V'.open.'\v\s*'.'\V'.close.'\v$')
      |                                                  ^~~~
Main.cpp:327:61: warning: multi-character character constant [-Wmultichar]
  327 |     let m = s:matchend(before, '\V'.open.'\v\s*'.'\V'.close.'\v$')
      |                                                             ^~~~~
Main.cpp:336:1: warning: missing terminating " character
  336 | " Fast wrap the word in brackets
      | ^
Main.cpp:336:1: error: missing terminating " character
  336 | " Fast wrap the word in brackets
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:338:11: error: stray '@' in program
  338 |   let c = @"
      |           ^
Main.cpp:338:12: warning: missing terminating " character
  338 |   let c = @"
      |            ^
Main.cpp:338:12: error: missing terminating " character
Main.cpp:341:18: warning: unknown escape sequence: '\<'
  341 |   if after[0] =~ '\v[\{\[\(\<]'
      |                  ^~~~~~~~~~~~~~
Main.cpp:341:18: warning: character constant too long for its type
Main.cpp:346:19: error: empty character constant
  346 |       if close == ''
      |                   ^~
Main.cpp:349:19: warning: unknown escape sequence: '\s'
  349 |       if after =~ '^\s*\V'.open
      |                   ^~~~~~~~
Main.cpp:349:19: warning: unknown escape sequence: '\V'
Main.cpp:349:19: warning: multi-character character constant [-Wmultichar]
Main.cpp:350:28: warning: multi-character character constant [-Wmultichar]
  350 |         call search(close, 'We')
      |                            ^~~~
Main.cpp:352:13: error: stray '@' in program
  352 |         let @" = c
      |             ^
Main.cpp:352:14: warning: missing terminating " character
  352 |         let @" = c
      |              ^
Main.cpp:352:14: error: missing terminating " character
  352 |         let @" = c
      |              ^~~~~
Main.cpp:356:22: warning: unknown escape sequence: '\w'
  356 |     if after[1:1] =~ '\v\w'
      |                      ^~~~~~
Main.cpp:356:22: warning: multi-character character constant [-Wmultichar]
Main.cpp:363:7: error: stray '@' in program
  363 |   let @" = c
      |       ^
Main.cpp:363:8: warning: missing terminating " character
  363 |   let @" = c
      |        ^
Main.cpp:363:8: error: missing terminating " character
  363 |   let @" = c
      |        ^~~~~
Main.cpp:368:15: warning: unknown escape sequence: '\]'
  368 |   call search('["\]'')}]','W')
      |               ^~~~~~
Main.cpp:368:15: warning: multi-character character constant [-Wmultichar]
Main.cpp:368:21: warning: multi-character character constant [-Wmultichar]
  368 |   call search('["\]'')}]','W')
      |                     ^~~~~
Main.cpp:386:12: error: empty character constant
  386 |     return ''
      |            ^~
Main.cpp:391:13: error: empty character constant
  391 |   let cmd = ''
      |             ^~
Main.cpp:393:17: error: empty character constant
  393 |     if close == ''
      |                 ^~
Main.cpp:397:18: warning: unknown escape sequence: '\V'
  397 |     if before =~ '\V'.open.'\v\s*$' && afterline =~ '^\s*\V'.close
      |                  ^~~~
Main.cpp:397:28: warning: unknown escape sequence: '\s'
  397 |     if before =~ '\V'.open.'\v\s*$' && afterline =~ '^\s*\V'.close
      |                            ^~~~~~~~
Main.cpp:397:28: warning: multi-character character constant [-Wmultichar]
Main.cpp:397:53: warning: unknown escape sequence: '\s'
  397 |     if before =~ '\V'.open.'\v\s*$' && afterline =~ '^\s*\V'.close
      |                                                     ^~~~~~~~
Main.cpp:397:53: warning: unknown escape sequence: '\V'
Main.cpp:397:53: warning: multi-character character constant [-Wmultichar]
Main.cpp:400:9: warning: missing terminating " character
  400 |         " Recenter before adding new line to avoid replacing line content
      |         ^
Main.cpp:400:9: error: missing terminating " character
  400 |         " Recenter before adding new line to avoid replacing line content
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:404:7: warning: missing terminating " character
  404 |       " If equalprg has been set, then avoid call =
      |       ^
Main.cpp:404:7: error: missing terminating " character
  404 |       " If equalprg has been set, then avoid call =
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:405:7: warning: missing terminating " character
  405 |       " https://github.com/jiangmiao/auto-pairs/issues/24
      |       ^
Main.cpp:405:7: error: missing terminating " character
  405 |       " https://github.com/jiangmiao/auto-pairs/issues/24
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:406:23: error: empty character constant
  406 |       if &equalprg != ''
      |                       ^~
Main.cpp:410:7: warning: missing terminating " character
  410 |       " conflict with javascript and coffee
      |       ^
Main.cpp:410:7: error: missing terminating " character
  410 |       " conflict with javascript and coffee
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:411:7: warning: missing terminating " character
  411 |       " javascript   need   indent new line
      |       ^
Main.cpp:411:7: error: missing terminating " character
  411 |       " javascript   need   indent new line
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:412:7: warning: missing terminating " character
  412 |       " coffeescript forbid indent new line
      |       ^
Main.cpp:412:7: error: missing terminating " character
  412 |       " coffeescript forbid indent new line
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:413:23: warning: character constant too long for its type
  413 |       if &filetype == 'coffeescript' || &filetype == 'coffee'
      |                       ^~~~~~~~~~~~~~
Main.cpp:413:54: warning: character constant too long for its type
  413 |       if &filetype == 'coffeescript' || &filetype == 'coffee'
      |                                                      ^~~~~~~~
Main.cpp:420:10: error: empty character constant
  420 |   return ''
      |          ^~
Main.cpp:431:17: error: empty character constant
  431 |     if close == ''
      |                 ^~
Main.cpp:434:18: warning: unknown escape sequence: '\V'
  434 |     if before =~ '\V'.open.'\v$' && after =~ '^\V'.close
      |                  ^~~~
Main.cpp:434:28: warning: multi-character character constant [-Wmultichar]
  434 |     if before =~ '\V'.open.'\v$' && after =~ '^\V'.close
      |                            ^~~~~
Main.cpp:434:46: warning: unknown escape sequence: '\V'
  434 |     if before =~ '\V'.open.'\v$' && after =~ '^\V'.close
      |                                              ^~~~~
Main.cpp:434:46: warning: multi-character character constant [-Wmultichar]
Main.cpp:435:19: warning: multi-character character constant [-Wmultichar]
  435 |       if close =~ '\v^[''"`]$'
      |                   ^~~~~~
Main.cpp:435:25: warning: multi-character character constant [-Wmultichar]
  435 |       if close =~ '\v^[''"`]$'
      |                         ^~~~~~
Main.cpp:446:3: warning: missing terminating " character
  446 |   " | is special key which separate map command from text
      |   ^
Main.cpp:446:3: error: missing terminating " character
  446 |   " | is special key which separate map command from text
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:449:15: warning: character constant too long for its type
  449 |     let key = '<BAR>'
      |               ^~~~~~~
Main.cpp:452:3: warning: missing terminating " character
  452 |   " use expr will cause search() doesn't work
      |   ^
Main.cpp:452:3: error: missing terminating " character
  452 |   " use expr will cause search() doesn't work
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:453:11: warning: character constant too long for its type
  453 |   execute 'inoremap <buffer> <silent> '.key." <C-R>=AutoPairsInsert('".escaped_key."')<CR>"
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:459:10: warning: character constant too long for its type
  459 |     echo 'AutoPairs Disabled.'
      |          ^~~~~~~~~~~~~~~~~~~~~
Main.cpp:462:10: warning: character constant too long for its type
  462 |     echo 'AutoPairs Enabled.'
      |          ^~~~~~~~~~~~~~~~~~~~
Main.cpp:464:10: error: empty character constant
  464 |   return ''
      |          ^~
Main.cpp:473:14: warning: character constant too long for its type
  473 |   if !exists('b:autopairs_enabled')
      |              ^~~~~~~~~~~~~~~~~~~~~
Main.cpp:477:14: warning: character constant too long for its type
  477 |   if !exists('b:AutoPairs')
      |              ^~~~~~~~~~~~~
Main.cpp:481:14: warning: character constant too long for its type
  481 |   if !exists('b:AutoPairsMoveCharacter')
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:489:3: warning: missing terminating " character
  489 |   " buffer level map pairs keys
      |   ^
Main.cpp:489:3: error: missing terminating " character
  489 |   " buffer level map pairs keys
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:490:3: warning: missing terminating " character
  490 |   " n - do not map the first charactor of closed pair to close key
      |   ^
Main.cpp:490:3: error: missing terminating " character
  490 |   " n - do not map the first charactor of closed pair to close key
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:491:3: warning: missing terminating " character
  491 |   " m - close key jumps through multi line
      |   ^
Main.cpp:491:3: error: missing terminating " character
  491 |   " m - close key jumps through multi line
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:492:3: warning: missing terminating " character
  492 |   " s - close key jumps only in the same line
      |   ^
Main.cpp:492:3: error: missing terminating " character
  492 |   " s - close key jumps only in the same line
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:496:16: warning: character constant too long for its type
  496 |     let opt = {'mapclose': 1, 'multiline':1}
      |                ^~~~~~~~~~
Main.cpp:496:31: warning: character constant too long for its type
  496 |     let opt = {'mapclose': 1, 'multiline':1}
      |                               ^~~~~~~~~~~
Main.cpp:497:13: warning: multi-character character constant [-Wmultichar]
  497 |     let opt['key'] = c
      |             ^~~~~
Main.cpp:499:15: warning: character constant too long for its type
  499 |       let opt['multiline'] = 0
      |               ^~~~~~~~~~~
Main.cpp:501:30: warning: character constant too long for its type
  501 |     let m = matchlist(close, '\v(.*)//(.*)$')
      |                              ^~~~~~~~~~~~~~~
Main.cpp:504:17: warning: character constant too long for its type
  504 |         let opt['mapclose'] = 0
      |                 ^~~~~~~~~~
Main.cpp:507:17: warning: character constant too long for its type
  507 |         let opt['multiline'] = 1
      |                 ^~~~~~~~~~~
Main.cpp:510:17: warning: character constant too long for its type
  510 |         let opt['multiline'] = 0
      |                 ^~~~~~~~~~~
Main.cpp:512:32: warning: character constant too long for its type
  512 |       let ks = matchlist(m[2], '\vk(.)')
      |                                ^~~~~~~~
Main.cpp:514:17: warning: multi-character character constant [-Wmultichar]
  514 |         let opt['key'] = ks[1]
      |                 ^~~~~
Main.cpp:515:21: warning: multi-character character constant [-Wmultichar]
  515 |         let c = opt['key']
      |                     ^~~~~
Main.cpp:520:23: error: empty character constant
  520 |     if o != c && c != '' && opt['mapclose']
      |                       ^~
Main.cpp:520:33: warning: character constant too long for its type
  520 |     if o != c && c != '' && opt['mapclose']
      |                                 ^~~~~~~~~~
Main.cpp:526:3: warning: missing terminating " character
  526 |   " sort pairs by length, longer pair should have higher priority
      |   ^
Main.cpp:526:3: error: missing terminating " character
  526 |   " sort pairs by length, longer pair should have higher priority
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:532:21: warning: unknown escape sequence: '\W'
  532 |       let item[0] = '\v(^|\W)\zs'''
      |                     ^~~~~~~~~~~~~
Main.cpp:532:21: warning: unknown escape sequence: '\z'
Main.cpp:532:21: warning: character constant too long for its type
Main.cpp:532:34: error: empty character constant
  532 |       let item[0] = '\v(^|\W)\zs'''
      |                                  ^~
Main.cpp:537:46: warning: unknown escape sequence: '\s'
  537 |   for key in split(b:AutoPairsMoveCharacter, '\s*')
      |                                              ^~~~~
Main.cpp:537:46: warning: multi-character character constant [-Wmultichar]
Main.cpp:539:13: warning: character constant too long for its type
  539 |     execute 'inoremap <silent> <buffer> <M-'.key."> <C-R>=AutoPairsMoveCharacter('".escaped_key."')<CR>"
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:542:3: warning: missing terminating " character
  542 |   " Still use <buffer> level mapping for <BS> <SPACE>
      |   ^
Main.cpp:542:3: error: missing terminating " character
  542 |   " Still use <buffer> level mapping for <BS> <SPACE>
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:544:5: warning: missing terminating " character
  544 |     " Use <C-R> instead of <expr> for issue #14 sometimes press BS output strange words
      |     ^
Main.cpp:544:5: error: missing terminating " character
  544 |     " Use <C-R> instead of <expr> for issue #14 sometimes press BS output strange words
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:545:13: warning: character constant too long for its type
  545 |     execute 'inoremap <buffer> <silent> <BS> <C-R>=AutoPairsDelete()<CR>'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:549:13: warning: character constant too long for its type
  549 |     execute 'inoremap <buffer> <silent> <C-h> <C-R>=AutoPairsDelete()<CR>'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:553:5: warning: missing terminating " character
  553 |     " Try to respect abbreviations on a <SPACE>
      |     ^
Main.cpp:553:5: error: missing terminating " character
  553 |     " Try to respect abbreviations on a <SPACE>
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:558:13: warning: character constant too long for its type
  558 |     execute 'inoremap <buffer> <silent> <SPACE> '.do_abbrev.'<C-R>=AutoPairsSpace()<CR>'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:558:61: warning: character constant too long for its type
  558 |     execute 'inoremap <buffer> <silent> <SPACE> '.do_abbrev.'<C-R>=AutoPairsSpace()<CR>'
      |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:561:37: error: empty character constant
  561 |   if g:AutoPairsShortcutFastWrap != ''
      |                                     ^~
Main.cpp:562:13: warning: character constant too long for its type
  562 |     execute 'inoremap <buffer> <silent> '.g:AutoPairsShortcutFastWrap.' <C-R>=AutoPairsFastWrap()<CR>'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:562:71: warning: character constant too long for its type
  562 |     execute 'inoremap <buffer> <silent> '.g:AutoPairsShortcutFastWrap.' <C-R>=AutoPairsFastWrap()<CR>'
      |                                                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:565:39: error: empty character constant
  565 |   if g:AutoPairsShortcutBackInsert != ''
      |                                       ^~
Main.cpp:566:13: warning: character constant too long for its type
  566 |     execute 'inoremap <buffer> <silent> '.g:AutoPairsShortcutBackInsert.' <C-R>=AutoPairsBackInsert()<CR>'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:566:73: warning: character constant too long for its type
  566 |     execute 'inoremap <buffer> <silent> '.g:AutoPairsShortcutBackInsert.' <C-R>=AutoPairsBackInsert()<CR>'
      |                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:569:35: error: empty character constant
  569 |   if g:AutoPairsShortcutToggle != ''
      |                                   ^~
Main.cpp:570:5: warning: missing terminating " character
  570 |     " use <expr> to ensure showing the status when toggle
      |     ^
Main.cpp:570:5: error: missing terminating " character
  570 |     " use <expr> to ensure showing the status when toggle
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:571:13: warning: character constant too long for its type
  571 |     execute 'inoremap <buffer> <silent> <expr> '.g:AutoPairsShortcutToggle.' AutoPairsToggle()'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:571:76: warning: character constant too long for its type
  571 |     execute 'inoremap <buffer> <silent> <expr> '.g:AutoPairsShortcutToggle.' AutoPairsToggle()'
      |                                                                            ^~~~~~~~~~~~~~~~~~~~
Main.cpp:572:13: warning: character constant too long for its type
  572 |     execute 'noremap <buffer> <silent> '.g:AutoPairsShortcutToggle.' :call AutoPairsToggle()<CR>'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:572:68: warning: character constant too long for its type
  572 |     execute 'noremap <buffer> <silent> '.g:AutoPairsShortcutToggle.' :call AutoPairsToggle()<CR>'
      |                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:575:33: error: empty character constant
  575 |   if g:AutoPairsShortcutJump != ''
      |                                 ^~
Main.cpp:576:13: warning: character constant too long for its type
  576 |     execute 'inoremap <buffer> <silent> ' . g:AutoPairsShortcutJump. ' <ESC>:call AutoPairsJump()<CR>a'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:576:70: warning: character constant too long for its type
  576 |     execute 'inoremap <buffer> <silent> ' . g:AutoPairsShortcutJump. ' <ESC>:call AutoPairsJump()<CR>a'
      |                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:577:13: warning: character constant too long for its type
  577 |     execute 'noremap <buffer> <silent> ' . g:AutoPairsShortcutJump. ' :call AutoPairsJump()<CR>'
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:577:69: warning: character constant too long for its type
  577 |     execute 'noremap <buffer> <silent> ' . g:AutoPairsShortcutJump. ' :call AutoPairsJump()<CR>'
      |                                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:580:17: error: empty character constant
  580 |   if &keymap != ''
      |                 ^~
Main.cpp:584:13: warning: character constant too long for its type
  584 |     execute 'setlocal keymap=' . &keymap
      |             ^~~~~~~~~~~~~~~~~~
Main.cpp:585:13: warning: character constant too long for its type
  585 |     execute 'setlocal imsearch=' . l:imsearch
      |             ^~~~~~~~~~~~~~~~~~~~
Main.cpp:586:13: warning: character constant too long for its type
  586 |     execute 'setlocal iminsert=' . l:iminsert
      |             ^~~~~~~~~~~~~~~~~~~~
Main.cpp:588:15: warning: character constant too long for its type
  588 |       execute 'setlocal imdisable'
      |               ^~~~~~~~~~~~~~~~~~~~
Main.cpp:590:15: warning: character constant too long for its type
  590 |       execute 'setlocal noimdisable'
      |               ^~~~~~~~~~~~~~~~~~~~~~
Main.cpp:598:29: warning: unknown escape sequence: '\w'
  598 |   let map = substitute(map, '\(<Plug>\w\+\)', '\=maparg(submatch(1), "i")', 'g')
      |                             ^~~~~~~~~~~~~~~~
Main.cpp:598:29: warning: unknown escape sequence: '\+'
Main.cpp:598:29: warning: unknown escape sequence: '\)'
Main.cpp:598:29: warning: character constant too long for its type
Main.cpp:598:47: warning: unknown escape sequence: '\='
  598 |   let map = substitute(map, '\(<Plug>\w\+\)', '\=maparg(submatch(1), "i")', 'g')
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:598:47: warning: character constant too long for its type
Main.cpp:599:29: warning: unknown escape sequence: '\)'
  599 |   let map = substitute(map, '\(<Plug>([^)]*)\)', '\=maparg(submatch(1), "i")', 'g')
      |                             ^~~~~~~~~~~~~~~~~~~
Main.cpp:599:29: warning: character constant too long for its type
Main.cpp:599:50: warning: unknown escape sequence: '\='
  599 |   let map = substitute(map, '\(<Plug>([^)]*)\)', '\=maparg(submatch(1), "i")', 'g')
      |                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:599:50: warning: character constant too long for its type
Main.cpp:604:13: warning: character constant too long for its type
  604 |   if exists('b:autopairs_loaded')
      |             ^~~~~~~~~~~~~~~~~~~~
Main.cpp:608:3: warning: missing terminating " character
  608 |   " for auto-pairs starts with 'a', so the priority is higher than supertab and vim-endwise
      |   ^
Main.cpp:608:3: error: missing terminating " character
  608 |   " for auto-pairs starts with 'a', so the priority is higher than supertab and vim-endwise
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:609:3: warning: missing terminating " character
  609 |   "
      |   ^
Main.cpp:609:3: error: missing terminating " character
Main.cpp:610:3: warning: missing terminating " character
  610 |   " vim-endwise doesn't support <Plug>AutoPairsReturn
      |   ^
Main.cpp:610:3: error: missing terminating " character
  610 |   " vim-endwise doesn't support <Plug>AutoPairsReturn
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:611:3: warning: missing terminating " character
  611 |   " when use <Plug>AutoPairsReturn will cause <Plug> isn't expanded
      |   ^
Main.cpp:611:3: error: missing terminating " character
  611 |   " when use <Plug>AutoPairsReturn will cause <Plug> isn't expanded
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:612:3: warning: missing terminating " character
  612 |   "
      |   ^
Main.cpp:612:3: error: missing terminating " character
Main.cpp:613:3: warning: missing terminating " character
  613 |   " supertab doesn't support <SID>AutoPairsReturn
      |   ^
Main.cpp:613:3: error: missing terminating " character
  613 |   " supertab doesn't support <SID>AutoPairsReturn
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:614:3: warning: missing terminating " character
  614 |   " when use <SID>AutoPairsReturn  will cause Duplicated <CR>
      |   ^
Main.cpp:614:3: error: missing terminating " character
  614 |   " when use <SID>AutoPairsReturn  will cause Duplicated <CR>
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:615:3: warning: missing terminating " character
  615 |   "
      |   ^
Main.cpp:615:3: error: missing terminating " character
Main.cpp:616:3: warning: missing terminating " character
  616 |   " and when load after vim-endwise will cause unexpected endwise inserted.
      |   ^
Main.cpp:616:3: error: missing terminating " character
  616 |   " and when load after vim-endwise will cause unexpected endwise inserted.
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:617:3: warning: missing terminating " character
  617 |   " so always load AutoPairs at last
      |   ^
Main.cpp:617:3: error: missing terminating " character
  617 |   " so always load AutoPairs at last
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:619:3: warning: missing terminating " character
  619 |   " Buffer level keys mapping
      |   ^
Main.cpp:619:3: error: missing terminating " character
  619 |   " Buffer level keys mapping
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:620:3: warning: missing terminating " character
  620 |   " comptible with other plugin
      |   ^
Main.cpp:620:3: error: missing terminating " character
  620 |   " comptible with other plugin
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.c