Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

alignements de caracteres

11 réponses
Avatar
Mancini Stephane
Bonjour à tous,
Existe t il une fonction emacs/xemacs qui permette d'aligner un caractère
(ou une chaine) sur différentes lignes.
Par exemple, je voudrais que tous les premiers ':' ou '<=' ou '=>' de
chaque ligne soient alignés.

Merci d'avance pour vos réponses.

Stéphane

10 réponses

1 2
Avatar
Sebastien Kirche
Le 8 Nov 2004, Mancini Stephane vraute :

Bonjour à tous,



Bonjour,

Existe t il une fonction emacs/xemacs qui permette d'aligner un caractère
(ou une chaine) sur différentes lignes.
Par exemple, je voudrais que tous les premiers ':' ou '<=' ou '=>' de
chaque ligne soient alignés.



Sélectionner les lignes à aligner, et M-x align ça irait ?

Si oui, voir du côté de C-h align TAB TAB pour les autres possibilité.

Merci d'avance pour vos réponses.



De rien.

Sébastien Kirche
Avatar
Sebastien Kirche
Le 8 Nov 2004, Mancini Stephane vraute :

Bonjour à tous,



Bonjour,

Existe t il une fonction emacs/xemacs qui permette d'aligner un caractère
(ou une chaine) sur différentes lignes.
Par exemple, je voudrais que tous les premiers ':' ou '<=' ou '=>' de
chaque ligne soient alignés.



Sélectionner les lignes à aligner, et M-x align ça irait ?

Si oui, voir du côté de C-h align TAB TAB pour les autres possibilités.

Merci d'avance pour vos réponses.



De rien.

Sébastien Kirche
Avatar
Matthieu Moy
Sebastien Kirche writes:

Si oui, voir du côté de C-h align TAB TAB pour les autres possibilités.



C-h f align TAB TAB, je suppose ...
^

(ou alors, C-h a ^align RET)

--
Matthieu
Avatar
Sebastien Kirche
Le 8 Nov 2004, Matthieu Moy a formulé :

> Si oui, voir du côté de C-h align TAB TAB pour les autres possibilités.

C-h f align TAB TAB, je suppose ...
^



Évidemment :)
Je n'ai pas voulu jouer au pédant et balancer boxquote-describe-function et
j'ai raté une touche dans mon exemple.

(ou alors, C-h a ^align RET)



C'est strictement identique à «C-h a align RET» ou ça ne proposerait que des
fonctions dont le nom commence par align ? J'ai un doute maintenant...

Il y a aussi M-x apropos à ne pas négliger non plus.

Sébastien Kirche
Avatar
Mancini Stephane
Je crois que je me suis mal exprimé.
J'ai en entree des lignes du type

tototot : azaz
bolob : eze
zzreretet, edfsdfdsf : rororo

et je voudrais obtenir

tototot : azaz
bolob : eze
zzreretet, edfsdfdsf : rororo


les : sont alignes......

quelle est la fonction e-lisp qui le permet - les C-h align et compagnie
ne me sont pas d'une grande utilité parce que ca varie d'une installation
à l'autre ;-(

Merci de votre aide



On Mon, 08 Nov 2004 14:08:20 +0100, Sebastien Kirche wrote:

Le 8 Nov 2004, Mancini Stephane vraute :

Bonjour à tous,



Bonjour,

Existe t il une fonction emacs/xemacs qui permette d'aligner un caractère
(ou une chaine) sur différentes lignes.
Par exemple, je voudrais que tous les premiers ':' ou '<=' ou '=>' de
chaque ligne soient alignés.



Sélectionner les lignes à aligner, et M-x align ça irait ?

Si oui, voir du côté de C-h align TAB TAB pour les autres possibilités.

Merci d'avance pour vos réponses.



De rien.

Sébastien Kirche
Avatar
Sebastien Kirche
Le 8 Nov 2004, Mancini Stephane a dit :

Je crois que je me suis mal exprimé.
J'ai en entree des lignes du type

tototot : azaz
bolob : eze
zzreretet, edfsdfdsf : rororo

et je voudrais obtenir

tototot : azaz
bolob : eze
zzreretet, edfsdfdsf : rororo


les : sont alignes......

quelle est la fonction e-lisp qui le permet -



Il me semble que les fonctions align-xxx sont justement adaptées pour cela.

les C-h align et compagnie ne me sont pas d'une grande utilité parce que
ca varie d'une installation à l'autre ;-(



Je ne suis pas sûr de comprendre la phrase, mais je crois que align-regexp
est ce que vous cherchez.

Merci de votre aide



C'est mieux comme cela ?

Sébastien Kirche
Avatar
Matthieu Moy
Sebastien Kirche writes:

(ou alors, C-h a ^align RET)



C'est strictement identique à «C-h a align RET»



Non

ou ça ne proposerait que des fonctions dont le nom commence par
align ?



Oui

C-h a te demande une expression régulière, et te donne tout ce qui
contient une chaine qui matche l'expression. Faire l'essai avec

C-h a al
C-h a ^al

pour s'en convaincre.

--
Matthieu
Avatar
Mancini Stephane
Finalement je me suis fait une fonction lisp.
Si ça vous branche :

(defun mon-aligne (start-point end-point)
(interactive "r")
(goto-char start-point)
(let* ((debut start-point)
(maxi 0)
(refs "^([^:=<]*S-)s-*(:|(=>)|(<=))"))
(while (re-search-forward refs end-point t)
(goto-char (match-end 1))
(delete-region (match-end 1) (match-beginning 2))
(setq maxi (max maxi (current-column)))
)
(goto-char debut)
(while (re-search-forward refs end-point t)
(let ((lm (- (match-end 2) (match-beginning 2))))
(goto-char (match-beginning 2))
(let ((l (- maxi (current-column))))
(if (>= l 0)
(insert-char ? l)
(delete-char (- 0 l))
)
)
)
)
)
)
On Mon, 08 Nov 2004 12:16:14 +0100, Mancini Stephane wrote:

Bonjour à tous,
Existe t il une fonction emacs/xemacs qui permette d'aligner un caractère
(ou une chaine) sur différentes lignes.
Par exemple, je voudrais que tous les premiers ':' ou '<=' ou '=>' de
chaque ligne soient alignés.

Merci d'avance pour vos réponses.

Stéphane
Avatar
Matthieu Moy
Mancini Stephane writes:

Finalement je me suis fait une fonction lisp.
Si ça vous branche :

(defun mon-aligne (start-point end-point)



Il me semble que ça fait la même chose que

M-x align-regexp RET ^([^:=<]*S-)s-*(:|(=>)|(<=)) RET

--
Matthieu
Avatar
Sebastien Kirche
Le 9 Nov 2004, Mancini Stephane a formulé :

Finalement je me suis fait une fonction lisp.
Si ça vous branche :



Pourtant une fois les lignes sélectionnées, M-x align-regexp avec «:» en
argument produit exactement le résultat que vous montriez dans votre
exemple... :)

Sébastien Kirche
1 2