cohama / lexima.vim

Auto close parentheses and repeat by dot dot dot...
1.01k stars 46 forks source link

Do not insert right parentheses when there is an unmatched right parenthess #58

Open zhou13 opened 8 years ago

zhou13 commented 8 years ago

Example:

fuinction(|b))

If you press (, the result should be

fuinction((|b))

rather than

fuinction(()|b))

.

cohama commented 8 years ago

It would be difficult to implement this feature. Please use <C-v>(.

cohama commented 8 years ago

How does lexima\ decide whether the following case has matched paren or not?

var a = [1,2,3].reduce(function(acc, x) {
  return acc + x
}, calcInitValue(|b));

It is easy for human but Vim not.

zhou13 commented 8 years ago

The reason I hope lexima has this feature is because delimitMate won't insert the right parentheses in that case. You can read the section 3.4 and 3.5 in https://github.com/Raimondi/delimitMate/blob/master/doc/delimitMate.txt

In delimitMate, it has two heuristics:

  1. Try to match the right of your cursor using regex from b/g:delimitMate_smart_matchpairs. If that matches, it won't insert the right parentheses. I find the default g:delimitMate_smart_matchpairs works quite good in practice.
  2. If delimitMate_balance_matchpairs is set, it will try to balance the matching pairs in current line.
petRUShka commented 8 years ago

I have to confirm: current behavior is very annoying. It would be great to have such functionality.

cohama commented 8 years ago

Sorry for slow responce. I will try to solve this problem.