Rebonjour
Puisque j'ai mis les doigts dans l'Elisp je me suis fait happer ...
J'=E9cris une fonction qui remplace des expressions r=E9guli=E8res dans mon
code VHDL mais ne doit pas toucher aux commentaires.
Par exemple, je ne veux qu'une instruction par ligne. Je recherche
donc tout ; (qui marque la fin d'une instruction) qui soit suivi par
un caract=E8re alphab=E9tique \w. Le probl=E8me c'est que =E7a ne fait pas =
la
distinction entre le code et les commentaires. Il faut donc que
j'ajoute dans l'expression que le ; ne doit pas =EAtre pr=E9c=E9d=E9
(n'importe o=F9 dans la ligne) par -- (c'est ainsi qu'on d=E9signe les
commentaires en VHDL)
Comment fait-on pour =E9crire "not --".*; ?
"^(-?[^-n])*-?;" (effectivement, c'était [^-n] pour interdire les sauts de ligne)
Ah ben oui, évidemment ...
[1] comment, ne me dis pas que tu n'utilises pas Gnus ?!?
Ben ... non. J'utilise Thunderbird sous Windows (et en plus je peux pas poster dans les news depuis le boulot, donc Google)
Nicolas
nic_o_mat
On 22 mar, 11:49, "" wrote:
On 22 mar, 11:04, Matthieu Moy wrote:
> Essayes avec ceci
> "^(-?[^-n])*-?;" > (effectivement, c'était [^-n] pour interdire les sauts de ligne)
Ah ben oui, évidemment ...
Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne remplace que le premier.
Il faut donc que j'écrive ma fonction différemment : rechercher l'expression régulière, la remplacer, déplacer le pointeur et recommencer jusqu'à la fin du fichier, au lieu d'un replace-regexp bête et méchant. Ca doit faire un truc du style: (re-search-forward "mon-expression" nil t) (replace-match "expression-de-remplacement" nil nil) le tout dans une boucle (while ... ) que je ne sais pas trop comment écrire.
Nicolas
On 22 mar, 11:49, "nic_o_...@msn.com" <nic_o_...@msn.com> wrote:
On 22 mar, 11:04, Matthieu Moy <MatthieuNOSPAM....@imag.fr.invalid>
wrote:
> Essayes avec ceci
> "^\(-?[^-n]\)*-?;"
> (effectivement, c'était [^-n] pour interdire les sauts de ligne)
Ah ben oui, évidemment ...
Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de
plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne
remplace que le premier.
Il faut donc que j'écrive ma fonction différemment : rechercher
l'expression régulière, la remplacer, déplacer le pointeur et
recommencer jusqu'à la fin du fichier, au lieu d'un replace-regexp
bête et méchant.
Ca doit faire un truc du style:
(re-search-forward "mon-expression" nil t)
(replace-match "expression-de-remplacement" nil nil)
le tout dans une boucle (while ... ) que je ne sais pas trop comment
écrire.
> "^(-?[^-n])*-?;" > (effectivement, c'était [^-n] pour interdire les sauts de ligne)
Ah ben oui, évidemment ...
Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne remplace que le premier.
Il faut donc que j'écrive ma fonction différemment : rechercher l'expression régulière, la remplacer, déplacer le pointeur et recommencer jusqu'à la fin du fichier, au lieu d'un replace-regexp bête et méchant. Ca doit faire un truc du style: (re-search-forward "mon-expression" nil t) (replace-match "expression-de-remplacement" nil nil) le tout dans une boucle (while ... ) que je ne sais pas trop comment écrire.
Nicolas
Matthieu Moy
"" writes:
On 22 mar, 11:49, "" wrote:
On 22 mar, 11:04, Matthieu Moy wrote:
> Essayes avec ceci
> "^(-?[^-n])*-?;" > (effectivement, c'était [^-n] pour interdire les sauts de ligne)
Ah ben oui, évidemment ...
Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne remplace que le premier.
Déjà, il va falloir [^-n;] pour ne pas matcher les ; sauf à la fin de l'expression. Ensuite, j'avais mis un ^ pour dire « début de ligne », mais il n'est pas forcément pertinent.
-- Matthieu
"nic_o_mat@msn.com" <nic_o_mat@msn.com> writes:
On 22 mar, 11:49, "nic_o_...@msn.com" <nic_o_...@msn.com> wrote:
On 22 mar, 11:04, Matthieu Moy <MatthieuNOSPAM....@imag.fr.invalid>
wrote:
> Essayes avec ceci
> "^\(-?[^-n]\)*-?;"
> (effectivement, c'était [^-n] pour interdire les sauts de ligne)
Ah ben oui, évidemment ...
Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de
plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne
remplace que le premier.
Déjà, il va falloir [^-n;] pour ne pas matcher les ; sauf à la fin de
l'expression. Ensuite, j'avais mis un ^ pour dire « début de ligne »,
mais il n'est pas forcément pertinent.
> "^(-?[^-n])*-?;" > (effectivement, c'était [^-n] pour interdire les sauts de ligne)
Ah ben oui, évidemment ...
Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne remplace que le premier.
Déjà, il va falloir [^-n;] pour ne pas matcher les ; sauf à la fin de l'expression. Ensuite, j'avais mis un ^ pour dire « début de ligne », mais il n'est pas forcément pertinent.
-- Matthieu
nic_o_mat
On 22 mar, 17:18, Matthieu Moy wrote:
"" writes: > Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de > plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne > remplace que le premier.
Déjà, il va falloir [^-n;] pour ne pas matcher les ; sauf à la fin de l'expression. Ensuite, j'avais mis un ^ pour dire « début de ligne », mais il n'est pas forcément pertinent.
Mon problème c'est que je veux "couper" la ligne après un ; Je veux donc insérer un n après le ; s'il est suivi d'un caractère alphabétique w (une expression VHDL commence toujours par un caractère alphabétique) Et je veux faire ça pour tous les ; *w (hors commentaires, évidemment) Je vais y réfléchir ...
Nicolas
On 22 mar, 17:18, Matthieu Moy <MatthieuNOSPAM....@imag.fr.invalid>
wrote:
"nic_o_...@msn.com" <nic_o_...@msn.com> writes:
> Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de
> plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne
> remplace que le premier.
Déjà, il va falloir [^-n;] pour ne pas matcher les ; sauf à la fin de
l'expression. Ensuite, j'avais mis un ^ pour dire « début de ligne »,
mais il n'est pas forcément pertinent.
Mon problème c'est que je veux "couper" la ligne après un ;
Je veux donc insérer un n après le ; s'il est suivi d'un caractère
alphabétique w (une expression VHDL commence toujours par un
caractère alphabétique)
Et je veux faire ça pour tous les ; *w (hors commentaires,
évidemment)
Je vais y réfléchir ...
"" writes: > Finalement, à l'usage, c'est foireux. Ca détecte très mal le cas de > plusieurs ";" (non consécutifs) sur une même ligne et pire, ça ne > remplace que le premier.
Déjà, il va falloir [^-n;] pour ne pas matcher les ; sauf à la fin de l'expression. Ensuite, j'avais mis un ^ pour dire « début de ligne », mais il n'est pas forcément pertinent.
Mon problème c'est que je veux "couper" la ligne après un ; Je veux donc insérer un n après le ; s'il est suivi d'un caractère alphabétique w (une expression VHDL commence toujours par un caractère alphabétique) Et je veux faire ça pour tous les ; *w (hors commentaires, évidemment) Je vais y réfléchir ...
Nicolas
nic_o_mat
On 22 mar, 17:40, "" wrote:
Mon problème c'est que je veux "couper" la ligne après un ; Je veux donc insérer un n après le ; s'il est suivi d'un caractère alphabétique w (une expression VHDL commence toujours par un caractère alphabétique) Et je veux faire ça pour tous les ; *w (hors commentaires, évidemment) Je vais y réfléchir ...
On 22 mar, 17:40, "nic_o_...@msn.com" <nic_o_...@msn.com> wrote:
Mon problème c'est que je veux "couper" la ligne après un ;
Je veux donc insérer un n après le ; s'il est suivi d'un caractère
alphabétique w (une expression VHDL commence toujours par un
caractère alphabétique)
Et je veux faire ça pour tous les ; *w (hors commentaires,
évidemment)
Je vais y réfléchir ...
Mon problème c'est que je veux "couper" la ligne après un ; Je veux donc insérer un n après le ; s'il est suivi d'un caractère alphabétique w (une expression VHDL commence toujours par un caractère alphabétique) Et je veux faire ça pour tous les ; *w (hors commentaires, évidemment) Je vais y réfléchir ...