@@ -467,10 +467,12 @@ func! autopairs#AutoPairsDelete()
467
467
end
468
468
469
469
let [before, after, ig] = s: getline ()
470
+
470
471
for [open , close , opt ] in b: AutoPairsList
471
472
let rest_of_line = opt [' multiline' ] ? after : ig
472
473
let b = matchstr (before, ' \V' .open .' \v\s?$' )
473
474
let a = matchstr (rest_of_line, ' ^\v\s*\V' .close )
475
+
474
476
if b != ' ' && a != ' '
475
477
if b [-1 :-1 ] == ' '
476
478
if a [0 ] == ' '
@@ -483,12 +485,30 @@ func! autopairs#AutoPairsDelete()
483
485
end
484
486
endfor
485
487
486
- return " \<BS> "
487
488
" delete the pair foo[]| <BS> to foo
488
489
for [open , close , opt ] in b: AutoPairsList
489
490
let m = s: matchend (before, ' \V' .open .' \v\s*' .' \V' .close .' \v$' )
491
+
490
492
if len (m ) > 0
491
493
return s: backspace (m [2 ])
494
+ else
495
+ let m = matchstr (before, ' ^\v\s*\V' . close )
496
+ if m != ' '
497
+ let b = " "
498
+ let offset = 1
499
+ " a = m
500
+ while getline (line (' .' ) - offset) = ~ " ^\s *$"
501
+ let b .= getline (line (' .' ) - offset) . ' '
502
+ let offset += 1
503
+ if (line (' .' ) - offset == 0 )
504
+ return " \<BS> "
505
+ endif
506
+ endwhile
507
+ let a = matchstr (getline (line (' .' ) - offset), ' \V' . open . ' \v\s*$' ) . ' '
508
+ if a != ' ' || b != ' '
509
+ return s: backspace (a ) . s: backspace (b ) . s: backspace (m )
510
+ endif
511
+ endif
492
512
end
493
513
endfor
494
514
return " \<BS> "
@@ -656,7 +676,7 @@ func! autopairs#AutoPairsReturn()
656
676
end
657
677
658
678
let b: autopairs_return_pos = 0
659
- let before = getline (line (' .' )- 1 )
679
+ let before = getline (line (' .' ) - 1 )
660
680
let [ig, ig, afterline] = s: getline ()
661
681
662
682
for [open , close , opt ] in b: AutoPairsList
0 commit comments