Je me débrouille pas mal en elisp, si, si ;)
Mais y'a un blème.
replace-regexp et re-search-forward ne me permettent pas de faire des choses
par lignes d'un fichier, ils trouvent et seulement là s'arrêtent.
Il me faudrait une function, par ex:
w:blablabla
w:reblablabla
Oh que celle-là non
w:blabla
Celle-là non plus
Et puis celle là non plus
w:etreblabla
w:reblabla
w:reblabla
je voudrais la chose suivante:
1w:blablabla
2w:reblablabla
Oh que celle-là non
1w:blabla
Celle-là non plus
Et puis celle là non plus
1w:blabla
2w:blabla
3w:blabla
C'est possible? Je sais pas si c'est clair?
Si ça inspire quelqu'un?
Eric
(while (< (point) (point-max)) (setq numligne (+ numligne 1)) (if (equal (re-search-forward "^w:.+$")) <------J'arrive pas à dire"C'est faux" (if (equal (% numligne 3) 0) (progn (beginning-of-line) (insert "%%vocalfont Times-Bold 14n") (forward-line)) (if (equal (% (+ numligne 1) 3) 0) (progn (beginning-of-line) (insert "%%vocalfont Times-Italic 14n") (forward-line)) (progn (beginning-of-line) (insert "%%vocalfont Times 14n") (forward-line)))) (setq numligne 0))) <------et cette ligne ne s'execute jamais
Reprenons:
w:blablabla w:reblablabla Oh que celle-là non w:blabla Celle-là non plus Et puis celle là non plus w:etreblabla w:reblabla w:reblabla w:reblabla
je voudrais la chose suivante:
w:blablabla Times w:reblablabla Times-Italic Oh que celle-là non w:blabla Times Celle-là non plus Et puis celle là non plus w:reblabla Times w:reblabla Times-Italic w:reblabla Times-Bold w:reblabla Times
ca devrait faire 12 1 1231
ce que j'arrive à faire c'est:
w:blablabla Times w:reblablabla Times-Italic Oh que celle-là non w:blabla Times-Bold Celle-là non plus Et puis celle là non plus w:reblabla Times w:reblabla Times-Italic w:reblabla Times-Bold w:reblabla Times
et la ca fait 123 123 123
J'ai bon là? Eric
Bastien <bastien@xxx.fr> writes:
Eric Reinbold <auzain.eric@wanadoo.fr> writes:
je voudrais la chose suivante:
Euh... c'est pas très clair, tu peux la refaire ?
--
Bastien
C'est bien ce que je pensais.
Vala le code:
(while (< (point) (point-max))
(setq numligne (+ numligne 1))
(if (equal (re-search-forward "^w:.+$")) <------J'arrive pas à dire"C'est faux"
(if (equal (% numligne 3) 0)
(progn (beginning-of-line)
(insert "%%vocalfont Times-Bold 14n")
(forward-line))
(if (equal (% (+ numligne 1) 3) 0)
(progn
(beginning-of-line)
(insert "%%vocalfont Times-Italic 14n")
(forward-line))
(progn
(beginning-of-line)
(insert "%%vocalfont Times 14n")
(forward-line))))
(setq numligne 0))) <------et cette ligne ne s'execute jamais
Reprenons:
w:blablabla
w:reblablabla
Oh que celle-là non
w:blabla
Celle-là non plus
Et puis celle là non plus
w:etreblabla
w:reblabla
w:reblabla
w:reblabla
je voudrais la chose suivante:
w:blablabla Times
w:reblablabla Times-Italic
Oh que celle-là non
w:blabla Times
Celle-là non plus
Et puis celle là non plus
w:reblabla Times
w:reblabla Times-Italic
w:reblabla Times-Bold
w:reblabla Times
ca devrait faire 12 1 1231
ce que j'arrive à faire c'est:
w:blablabla Times
w:reblablabla Times-Italic
Oh que celle-là non
w:blabla Times-Bold
Celle-là non plus
Et puis celle là non plus
w:reblabla Times
w:reblabla Times-Italic
w:reblabla Times-Bold
w:reblabla Times
(while (< (point) (point-max)) (setq numligne (+ numligne 1)) (if (equal (re-search-forward "^w:.+$")) <------J'arrive pas à dire"C'est faux" (if (equal (% numligne 3) 0) (progn (beginning-of-line) (insert "%%vocalfont Times-Bold 14n") (forward-line)) (if (equal (% (+ numligne 1) 3) 0) (progn (beginning-of-line) (insert "%%vocalfont Times-Italic 14n") (forward-line)) (progn (beginning-of-line) (insert "%%vocalfont Times 14n") (forward-line)))) (setq numligne 0))) <------et cette ligne ne s'execute jamais
Reprenons:
w:blablabla w:reblablabla Oh que celle-là non w:blabla Celle-là non plus Et puis celle là non plus w:etreblabla w:reblabla w:reblabla w:reblabla
je voudrais la chose suivante:
w:blablabla Times w:reblablabla Times-Italic Oh que celle-là non w:blabla Times Celle-là non plus Et puis celle là non plus w:reblabla Times w:reblabla Times-Italic w:reblabla Times-Bold w:reblabla Times
ca devrait faire 12 1 1231
ce que j'arrive à faire c'est:
w:blablabla Times w:reblablabla Times-Italic Oh que celle-là non w:blabla Times-Bold Celle-là non plus Et puis celle là non plus w:reblabla Times w:reblabla Times-Italic w:reblabla Times-Bold w:reblabla Times
et la ca fait 123 123 123
J'ai bon là? Eric
Matthieu Moy
Eric Reinbold writes:
(if (equal (re-search-forward "^w:.+$")) <------J'arrive pas à dire"C'est faux"
(not (re-search-forward "..." nil t))
?
-- Matthieu
Eric Reinbold <auzain.eric@wanadoo.fr> writes:
(if (equal (re-search-forward "^w:.+$")) <------J'arrive pas à dire"C'est faux"
Il faut positionner BOUND. Par exemple, à (line-end-position).
-- Matthieu
(line-end-position)???
C'est quoi donc?
Matthieu Moy
Eric Reinbold writes:
(line-end-position)???
C'est quoi donc?
,----[ C-h f line-end-position RET ] | line-end-position is a built-in function in `C source code'. | (line-end-position &optional N) | | Return the character position of the last character on the current line. | With argument N not nil or 1, move forward N - 1 lines first. | If scan reaches end of buffer, return that position. | | The scan does not cross a field boundary unless doing so would move | beyond there to a different line; if N is nil or 1, and scan starts at a | field boundary, the scan stops as soon as it starts. To ignore field | boundaries bind `inhibit-field-text-motion' to t. | | This function does not move point. | | [back] `----
(se renseigner de toute urgence sur C-h f, C-h v, M-x apropos, ...)
-- Matthieu
Eric Reinbold <auzain.eric@wanadoo.fr> writes:
(line-end-position)???
C'est quoi donc?
,----[ C-h f line-end-position RET ]
| line-end-position is a built-in function in `C source code'.
| (line-end-position &optional N)
|
| Return the character position of the last character on the current line.
| With argument N not nil or 1, move forward N - 1 lines first.
| If scan reaches end of buffer, return that position.
|
| The scan does not cross a field boundary unless doing so would move
| beyond there to a different line; if N is nil or 1, and scan starts at a
| field boundary, the scan stops as soon as it starts. To ignore field
| boundaries bind `inhibit-field-text-motion' to t.
|
| This function does not move point.
|
| [back]
`----
(se renseigner de toute urgence sur C-h f, C-h v, M-x apropos, ...)
,----[ C-h f line-end-position RET ] | line-end-position is a built-in function in `C source code'. | (line-end-position &optional N) | | Return the character position of the last character on the current line. | With argument N not nil or 1, move forward N - 1 lines first. | If scan reaches end of buffer, return that position. | | The scan does not cross a field boundary unless doing so would move | beyond there to a different line; if N is nil or 1, and scan starts at a | field boundary, the scan stops as soon as it starts. To ignore field | boundaries bind `inhibit-field-text-motion' to t. | | This function does not move point. | | [back] `----
(se renseigner de toute urgence sur C-h f, C-h v, M-x apropos, ...)
-- Matthieu
Eric Reinbold
Matthieu Moy writes:
Eric Reinbold writes:
Je voudrais que le if soit faux quand il ne trouve pas de "w:" dans la LIGNE.
Il faut positionner BOUND. Par exemple, à (line-end-position).
-- Matthieu
.°-/ J'appais 'end-of-position, pas réveillé. Sinon, a-y-est, a marche: Pour le plaisir, il y a encore des choses à refaire (forward-line, etc) mais bon, CA MARCHE.
Il faut positionner BOUND. Par exemple, à (line-end-position).
--
Matthieu
.°-/ J'appais 'end-of-position, pas réveillé.
Sinon, a-y-est, a marche:
Pour le plaisir, il y a encore des choses à refaire (forward-line, etc)
mais bon, CA MARCHE.
Il faut positionner BOUND. Par exemple, à (line-end-position).
-- Matthieu
.°-/ J'appais 'end-of-position, pas réveillé. Sinon, a-y-est, a marche: Pour le plaisir, il y a encore des choses à refaire (forward-line, etc) mais bon, CA MARCHE.
Le progn n'est pas nécessaire ici (mais il n'est pas forcément nuisible).
-- Matthieu
Matthieu Moy
"Florent Georges" writes:
Matthieu Moy wrote:
Il faut positionner BOUND. Par exemple, à (line-end-position).
Mmh, je n'ai fait que survoler le thread, mais il me semble que le PO veut un traitement par ligne (ecrire la boucle qui va bien), et utiliser en debut de ligne un :
(if (looking-at "w:...") ...
Oui, en faisant attention à un détail : looking-at cherche à matcher à partir de (point), donc si on cherche n'importe où dans la ligne, il faut (looking-at ".*w:...").
Attention aussi, looking-at n'est pas forcément par ligne : (looking-at "xny") peut matcher un x en fin de ligne suivi d'un y en début de ligne (mais vu que le `.' ne matche pas "n", le problème ne se pose pas trop).
Il faut positionner BOUND. Par exemple, à (line-end-position).
Mmh, je n'ai fait que survoler le thread, mais il me semble que le PO
veut un traitement par ligne (ecrire la boucle qui va bien), et
utiliser en debut de ligne un :
(if (looking-at "w:...")
...
Oui, en faisant attention à un détail : looking-at cherche à matcher à
partir de (point), donc si on cherche n'importe où dans la ligne, il
faut (looking-at ".*w:...").
Attention aussi, looking-at n'est pas forcément par ligne :
(looking-at "xny") peut matcher un x en fin de ligne suivi d'un y en
début de ligne (mais vu que le `.' ne matche pas "n", le problème ne
se pose pas trop).
Il faut positionner BOUND. Par exemple, à (line-end-position).
Mmh, je n'ai fait que survoler le thread, mais il me semble que le PO veut un traitement par ligne (ecrire la boucle qui va bien), et utiliser en debut de ligne un :
(if (looking-at "w:...") ...
Oui, en faisant attention à un détail : looking-at cherche à matcher à partir de (point), donc si on cherche n'importe où dans la ligne, il faut (looking-at ".*w:...").
Attention aussi, looking-at n'est pas forcément par ligne : (looking-at "xny") peut matcher un x en fin de ligne suivi d'un y en début de ligne (mais vu que le `.' ne matche pas "n", le problème ne se pose pas trop).