Estoy buscando escribir una función a la que pueda llamar desde un mapa. La idea es redimensionar una ventana para que se ajuste al contenido del buffer. Esto no es demasiado difícil:¿Cómo cambiar el tamaño de una ventana para que encaje, teniendo en cuenta solo las líneas lógicas?
fu! ResizeWindow(vert) "{{{
if a:vert
let longest = max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
exec "vertical resize " . (longest+4)
else
exec 'resize ' . line('$')
1
endif
endfu "}}}
Quisiera, sin embargo, al igual que la función de tomar las líneas lógicas en cuenta al calcular la altura (no estoy demasiado preocupado por la anchura).
Por ejemplo, una línea que se ha envuelto (debido a :set wrap
) se contará como dos o más líneas. Un bloque de 37 líneas que están dobladas solo contaría como una.
¿Alguien sabe de una forma conveniente de obtener este 'recuento de líneas lógicas' sin tener que intentar calcularlo manualmente? Si necesito hacer esto manualmente, ¿hay algún otro caso que me falta que pueda representar una línea con un número potencialmente diferente de líneas?
Gracias! Eso es exactamente lo que estaba buscando. –