On Fri, 14 Nov 2003 18:35:42 +0100, Edgar Bonet <guilde@???>
wrote:
> ....... Dans ce cas tu peux faire :
>
> :set foldexpr=getline(v:lnum)[0]==\"#\"
> :set foldmethod=expr
>
> Ceci a pour effet de remplacer toute suite de lignes consécutives
> commençant par # par _une_ unique ligne à l'écran. La ligne en question
> est grisée et ressemble à :
>
> +-- 3 lines: # Début du commentaire...-------------------------
>
Ca donne un premier résultat très interessant que l'on peut améliorer avec
un petit peu de programmation à la mode "vim" (rien n'interdit de le faire
en Perl, Python ou Rby selon ça préférene). L'objectif étant :
1 - Traiter également les lignes quand le dièse n'est pas en colonne 1
2 - Masquer la ligne de pliage
3 - Cacher également les lignes isolées
L'algorithme du script "cache_diese4.vim" joint, est en gros le suivant
1 Repérer les series de lignes dont le texte significatif commence par
dièse pour les replier
Rq : on assimile les lignes vides aux lignes commentaires pour limiter
les "trous" lors de l'affichage
2 Cacher les lignes de pliage : il suffit d'utiliser la couleur
d'afficahge du fond pour l'avant-plan
3 Cherche les lignes "dièse" isolées pour leur appliquer la meme technique
de masquage
Seul petit souci : ça marche bien avec "vim" en mode graphique, mais il y
a des petits soucis en mode
"term" selon le type du teminal
Pour utiliser le script il suffit de le charger :
- au lancement de "vim", par exemple :
gview /etc/latex2html -S .vim/cache_diese4.vim
Rq : il 's'agit de -S (Majuscule) et non pas -s (minuscule)
- ou en cours d'édition :
:source .vim/cache_diese4.vim
En cours d'édition on peut faire aparaitre/disparaitre les lignes dièses en
tapant
call AfficheDiese()
call CacheDiese()
C'est un exemple, on peut améliorer par exemple en rendant le script
parametrable.
--
Using M2, Opera's revolutionary e-mail client:
http://www.opera.com/m2/