OVH Cloud OVH Cloud

2 p'tites questions

11 réponses
Avatar
Albert
Bonjour a tous,

2 questions "betes" mais je ne trouvbe pas.
1 - comment numeroter les lignes ?
2 - comment faire que la commande compile propose systematiquement un
"gcc -g -o + fichier en cour" ? j'ai bien mis setq compile-commande
"gcc -g -o" dans man .emacs.el mais ca ne marche pasz.

Merci de vos reponses, et bonne journee a tous
gil

10 réponses

1 2
Avatar
Pascal Bourguignon
Albert writes:

Bonjour a tous,

2 questions "betes" mais je ne trouvbe pas.
1 - comment numeroter les lignes ?



Avec ces commandes:

(defun insert-line-numbers ()
(interactive)
(save-excursion
(save-restriction
(widen)
(let ((fmt (format "%%0%dd "
(1+ (truncate
(log (count-lines (point-min) (point-max))
10)))))
(i 0))
(goto-char (point-min))
(while (< (point) (point-max))
(setq i (1+ i))
(insert (format fmt i))
(forward-line))))))


(defun delete-line-numbers ()
(interactive)
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(while (< (point) (point-max))
(if (looking-at "[0-9][0-9]* ")
(delete-region (match-beginning 0) (match-end 0)))
(forward-line)))))


(defun renumber-lines ()
(interactive)
(delete-line-numbers)
(insert-line-numbers))


; sinon préciser ce que tu entends par numéroter les lignes!


2 - comment faire que la commande compile propose systematiquement
un "gcc -g -o + fichier en cour" ? j'ai bien mis setq
compile-commande "gcc -g -o" dans man .emacs.el mais ca ne marche
pasz.



C-h f compile RET

devrait donner quelques pistes.


--
__Pascal Bourguignon__ http://www.informatimago.com/
Avatar
Albert
Pascal Bourguignon a écrit :
Albert writes:


Bonjour a tous,

2 questions "betes" mais je ne trouvbe pas.
1 - comment numeroter les lignes ?




Avec ces commandes:

(defun insert-line-numbers ()
(interactive)
(save-excursion
(save-restriction
(widen)
(let ((fmt (format "%%0%dd "
(1+ (truncate
(log (count-lines (point-min) (point-max))
10)))))
(i 0))
(goto-char (point-min))
(while (< (point) (point-max))
(setq i (1+ i))
(insert (format fmt i))
(forward-line))))))


(defun delete-line-numbers ()
(interactive)
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(while (< (point) (point-max))
(if (looking-at "[0-9][0-9]* ")
(delete-region (match-beginning 0) (match-end 0)))
(forward-line)))))


(defun renumber-lines ()
(interactive)
(delete-line-numbers)
(insert-line-numbers))


; sinon préciser ce que tu entends par numéroter les lignes!




salut,
J'ai un code C et je voudrais avoir a gauche le n° de ligne correspondant.
d'avance merci
gil





2 - comment faire que la commande compile propose systematiquement
un "gcc -g -o + fichier en cour" ? j'ai bien mis setq
compile-commande "gcc -g -o" dans man .emacs.el mais ca ne marche
pasz.




C-h f compile RET

devrait donner quelques pistes.


Avatar
Albert
Pascal Bourguignon a écrit :
Albert writes:


Bonjour a tous,

2 questions "betes" mais je ne trouvbe pas.
1 - comment numeroter les lignes ?




Avec ces commandes:

(defun insert-line-numbers ()
(interactive)
(save-excursion
(save-restriction
(widen)
(let ((fmt (format "%%0%dd "
(1+ (truncate
(log (count-lines (point-min) (point-max))
10)))))
(i 0))
(goto-char (point-min))
(while (< (point) (point-max))
(setq i (1+ i))
(insert (format fmt i))
(forward-line))))))


(defun delete-line-numbers ()
(interactive)
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(while (< (point) (point-max))
(if (looking-at "[0-9][0-9]* ")
(delete-region (match-beginning 0) (match-end 0)))
(forward-line)))))


(defun renumber-lines ()
(interactive)
(delete-line-numbers)
(insert-line-numbers))


; sinon préciser ce que tu entends par numéroter les lignes!



2 - comment faire que la commande compile propose systematiquement
un "gcc -g -o + fichier en cour" ? j'ai bien mis setq
compile-commande "gcc -g -o" dans man .emacs.el mais ca ne marche
pasz.




C-h f compile RET

devrait donner quelques pistes.





Re,
En fait je viens de trouver un site. Mais ca m'a l'air d'une usine a gaz:
http://homepage1.nifty.com/blankspace/emacs/elisp.html

Qu'en pensez vous ?
A+
Avatar
Pascal Bourguignon
Albert writes:

Pascal Bourguignon a écrit :
Albert writes:

Bonjour a tous,

2 questions "betes" mais je ne trouvbe pas.
1 - comment numeroter les lignes ?


Avec ces commandes:
(defun insert-line-numbers ()
(defun delete-line-numbers ()
(defun renumber-lines ()


salut,
J'ai un code C et je voudrais avoir a gauche le n° de ligne correspondant.
d'avance merci



Essaye mes fonctions. Elles peuvent faire peur car elles insèrent les
numéros de ligne dans le buffer, mais comme on peut les enlever tout
aussi facilement... Le seul problème, c'est l'indentation qu'il
faudrait inhiber. C'est fait pour des langages comme BASIC.


Mais la question, c'est pourquoi aurais tu besoin des numéros de ligne
dans du code C ??? ??? ???
(Je ne sais pas si tu as remarqué, mais ce n'est pas vi, c'est emacs!)


--
__Pascal Bourguignon__ http://www.informatimago.com/

In a World without Walls and Fences,
who needs Windows and Gates?
Avatar
Albert
Pascal Bourguignon a écrit :
Albert writes:


Pascal Bourguignon a écrit :

Albert writes:


Bonjour a tous,

2 questions "betes" mais je ne trouvbe pas.
1 - comment numeroter les lignes ?



Avec ces commandes:
(defun insert-line-numbers ()
(defun delete-line-numbers ()
(defun renumber-lines ()



salut,
J'ai un code C et je voudrais avoir a gauche le n° de ligne correspondant.
d'avance merci




Essaye mes fonctions. Elles peuvent faire peur car elles insèrent les
numéros de ligne dans le buffer, mais comme on peut les enlever tout
aussi facilement... Le seul problème, c'est l'indentation qu'il
faudrait inhiber. C'est fait pour des langages comme BASIC.




J'irais demain car ce soir c'est la fete :-)

Mais la question, c'est pourquoi aurais tu besoin des numéros de ligne
dans du code C ??? ??

(Je ne sais pas si tu as remarqué, mais ce n'est pas vi, c'est emacs!)



?? comprends pas
Bonne soiree
gil

Avatar
Sébastien Kirche
Le 29 novembre 2005 à 15:11, Albert vraute :

1 - comment numeroter les lignes ?



En complément de la réponse de Pascal, il existe également un package
elisp qui permet d'imiter vi sur la numérotation des lignes : setnu.el

Plus d'infos sur ce module, ainsi que des infos supplémentaires sur
l'EmacsWiki : http://www.emacswiki.org/cgi-bin/wiki/LineNumbers

HTH
--
Sébastien Kirche
Avatar
Pascal Bourguignon
Albert writes:
Mais la question, c'est pourquoi aurais tu besoin des numéros de
ligne
dans du code C ??? ??



(Je ne sais pas si tu as remarqué, mais ce n'est pas vi, c'est emacs!)



?? comprends pas



On n'a pas besoin de connaitre les numéros de ligne avec emacs: on
déplace directement le curseur là où on veut travailler.
Penser à utiliser le mode transient: C-u M-x transient-mark-mode RET
s'il n'est pas déjà actif, C-SPC (set-mark-command)
et C-x C-x (exchange-point-and-mark).

Si on veut garder une position en mémoire pour y revenir, on utilise
des registres: C-x r SPC (point-to-register)
et: C-x r j (jump-to-register)

Si un logiciel inférieur nous donne un numéro de ligne, on peut y
aller avec: M-x goto-line RET
mais en général, un coup de compilation-mode suffit (
M-x compile RET
M-x grep RET
etc) pour n'avoir qu'à cliquer pour sauter à la ligne.


Le seul cas où je vois un intérêt à numéroter des lignes de code C,
c'est si on ëcrit un livre d'introduction à la programmation en C,
afin de pouvoir référencer facilement les instructions. Et dans ce
cas, ma fonction insert-line-numbers est parfaite.


--
__Pascal Bourguignon__ http://www.informatimago.com/

"You can tell the Lisp programmers. They have pockets full of punch
cards with close parentheses on them." --> http://tinyurl.com/8ubpf
Avatar
Albert
Pascal Bourguignon a écrit :
Albert writes:

Mais la question, c'est pourquoi aurais tu besoin des numéros de
ligne
dans du code C ??? ??



(Je ne sais pas si tu as remarqué, mais ce n'est pas vi, c'est emacs!)




?? comprends pas




On n'a pas besoin de connaitre les numéros de ligne avec emacs: on
déplace directement le curseur là où on veut travailler.
Penser à utiliser le mode transient: C-u M-x transient-mark-mode RET
s'il n'est pas déjà actif, C-SPC (set-mark-command)
et C-x C-x (exchange-point-and-mark).

Si on veut garder une position en mémoire pour y revenir, on utilise
des registres: C-x r SPC (point-to-register)
et: C-x r j (jump-to-register)

Si un logiciel inférieur nous donne un numéro de ligne, on peut y
aller avec: M-x goto-line RET
mais en général, un coup de compilation-mode suffit (
M-x compile RET
M-x grep RET
etc) pour n'avoir qu'à cliquer pour sauter à la ligne.


Le seul cas où je vois un intérêt à numéroter des lignes de code C,
c'est si on ëcrit un livre d'introduction à la programmation en C,
afin de pouvoir référencer facilement les instructions. Et dans ce
cas, ma fonction insert-line-numbers est parfaite.




Merci de la reponse mais cette fonction "inseert-line-numbers" on la
trouve ou ??
A+
Avatar
Sébastien Kirche
Le 30 novembre 2005 à 11:11, Albert a formulé :

Merci de la reponse mais cette fonction "inseert-line-numbers" on la
trouve ou ??



Ben faut suivre :)
La première réponse de Pascal contient un
(defun insert-line-numbers ()
...

qui justement définit cette fonction, et d'autres. Pour les essayer, il
suffit de se placer après la dernière parenthèse fermante de chaque
defun (le texte étant dans un tampon emacs) et de faire C-x C-e pour
exécuter le code qui définit la fonction (mais ne l'exécute pas).

Ensuite on peut appeler les fonctions (par exemple avec M-x ). Si c'est
concluant, il faut copier les defuns dans le .emacs pour que la prise en
compte soit automatique lors du prochain usage d'Emacs.

HTH.
--
Sébastien Kirche
Avatar
Matthieu Moy
Sébastien Kirche writes:

Ben faut suivre :)
La première réponse de Pascal contient un
(defun insert-line-numbers ()
...



Sinon, "cat -n" fait ça, donc C-u M-| cat -n RET marche.

--
Matthieu
1 2