Sto cercando di scrivere una funzione che posso chiamare da una mappa. L'idea è di ridimensionare una finestra per adattarla al contenuto del buffer. Questo non è troppo difficile:Come ridimensionare una finestra per adattarla, prendendo in considerazione solo le linee logiche?
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 "}}}
Vorrei, tuttavia, come la funzione di prendere linee logiche in considerazione nel calcolo l'altezza (io non sono eccessivamente preoccupato di larghezza).
Ad esempio, una linea che ha spostato (a causa di :set wrap
) conterà come due o più righe. Un blocco di 37 linee che sono piegate conterebbe solo come uno.
Qualcuno sa di un modo conveniente per ottenere questo "conteggio logico" senza dover provare a calcolarlo manualmente? Se devo farlo manualmente, ci sono altri casi che mi mancano che potrebbero far rappresentare una linea con un numero potenzialmente diverso di linee?
Grazie! Questo è esattamente quello che stavo cercando. –