Estoy escribiendo una función VIML que, en el modo de inserción, permite una <BS>a través de la parte inicial de un par ( [, {, etc.) para eliminar la parte de cierre del par si es el siguiente carácter después del cursor (como auto-pares y vim-autoclose ). Esta función será diferente porque la parte de cierre del par no se eliminará si hay pares desequilibrados.
Ejemplos:
El formato es <initial> => <result-after-backspace>donde mi cursor está delante de |.
((|) => (|)
((|)) => (|)
(|) => |
(defn => (defn
(|) |)
¿Cómo puedo determinar si los pares están desequilibrados o no antes de continuar y eliminar el par de cierre?
He probado ambos pares automáticos y vim-autoclose . Con ambos complementos, la parte de cierre del par siempre se elimina.