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     

Répondre à