Je me replonge dans mon script de remise en forme de mail: mon probleme ce trouve a la ligne 42 de ce script.
function s:Par() " je commence a la premiere ligne vide (après les headers) let pos = search('^$') let oldpos = pos echo "definition de pos:" . pos " je vais a la fin puis remonte au dessus de la signature. normal! G let fin = search('^-- $', 'b')-1 " echo "definition de fin:" . fin if fin <= 0 | let fin = line('$') | endif " echo "redefinition de fin si <0:" . fin exe pos let pos = search('^.\{'.&tw.'\}.\+$', 'W') " je me place au debut de ce que je dois traiter. " echo "position courante:" . line(".") . " Nouvelle position: " . pos . " Ancienne position: " . oldpos . " ligne de fin: " . fin while ( pos < fin && oldpos < pos ) " let fin = search('^-- $', 'b') " if fin <= 0 | let fin = line('$') | endif exe pos let oldpos = pos let pos = search('^.\{'.&tw.'\}.\+$', 'W') echo "position courante:" . line(".") . " Nouvelle position: " . pos . " Ancienne position: " . oldpos . " ligne de fin: " . fin " echo line(".") . " " . pos " normal i -trop grand- " echo pos " Sans le 'W', la function pourrait boucler et revenir à la " section des entêtes. Chose que fait aussi '/' si 'wrapscan' " n'est pas mis à faux. if pos < 1 break endif if pos > fin normal! G let fin = search('^-- $', 'b')-2 exe pos endif " normal! gq) " detection de la fin du paragraphe. let end = pos let end = search('[:\.!?)\/][ ]*$', 'W')+1 if end >= pos "******* c'est la que ça chie ******* " je n'arrive pas a faire le gq entre 'pos' et 'end' " Note: le ':.g!/| /' est pour eviter un probleme avec les " personnes qui utilise | comme quote au lieu de >. lorsque " les quote sont | je ne traite pas car je ne sais pas " encore comment dire a vim de correctement gerer. (set " comments ?) " :.g!/| /normal! gq:&end echo "debut de la selection:" . pos . " fin de la selection: " . end else echo "pas bon ! car debut de la selection:" . pos . " fin de la selection: " . end endif " forme simplifiée sans passer par 'v' vu que 'gq' nous laisse " dans l'/operator-pending mode/, cf |motion.txt| " :normal! gq'} " +--> pour: jusqu'à la fin du paragraphe plutot que le point " suivant. Tout le monde ne pense pas à mettre des points " à la fin ses phrases. Sauter des lignes est plus " fréquent. endwhile endfunction nnoremap ;para gg:call <sid>Par()<cr> -- |\ _,,,---,,_ ZZZzz /,`.-'`' -. ;-;;,_ MichouX |,4- ) )-,_. ,\ ( `'-' [EMAIL PROTECTED] '---''(_/--' `-'\_) http://michoux.born2frag.org