OVH Cloud OVH Cloud

Parenthèses, retour à la ligne, indentation etc

1 réponse
Avatar
Jean-Marc Bouché
Bonjour,

dans le cadre du boulot, j'abandonne un antique éditeur pour emacs (je
n'arrive pas à convertir mes collègues aux joies d'un éditeur en mode
texte :).
J'avoue qu'emacs est plus puissant (ne serait-ce que la souris :D mais il me
manque quelques trucs. Voilà le topo sous mon éditeur, ça se passe lors du
codage en C/C++ ou en Perl (ou autres).
Je tape la ligne de code suivante :
if (toto)
Ensuite, j'ai en général deux cas de figures :
1/ je tape la parenthèse ouvrante juste après. Mon vieil éditeur me rajoute
deux espaces, la parenthèse fermante puis repositionne mon curseur entre
les deux espaces. Ca donne ça (le '|' est mon curseur) :
if (toto) {<space>|<space>}
2/ je passe à la ligne (indentation sous le 'i' du 'if'), je tape ma
parenthèse ouvrante puis entrée. Mon éditeur me rajoute alors une ligne,
une indentation, puis une autre ligne avec la parenthèse fermante
correctement alignée avec celle ouvrante puis repositionne mon curseur sur
la ligne entre les deux parenthèses. Ca donne ça (le '|' est mon curseur) :
if (toto)
{
<tab>|
}

Comme je n'invente rien de neuf, je me dis que ça dois forcément exister
sous emacs. Pour le 1er, je pense avoir trouver avec
skeleton-pair-insert-maybe raccroché à une redéfinition des touches
parenthèses (et autres '(' et '['). Par contre, pour le deuxième cas, je
sèche. De plus, j'ai l'impression que seule une approche prenant en compte
les deux cas de figures simultanément peut fonctionner (dans le 1er cas, on
détecte la frappe de la parenthèse ouvrante alors que dans le 2ème cas, on
ne fait rien sur la frappe de la parenthèse ouvrante mais uniquement sur la
frappe de la touche entrée qui suit juste cette frappe !

Si vos lumières peuvent m'éclairer un peu, merci par avance.

--
JM
Inverser mes prénoms et faites du 9 à partir du NEUF

1 réponse

Avatar
raloupower
Voilà du code récupéré sur le net, peut être pouvez vous vous en
inspirer, sait on jamais :

;; On ouvre {([, emacs ferme tout seul.
(defun insert-parentheses () "insert parentheses and go between them" (interactive)
(insert "()")
(backward-char 1))
(defun insert-brackets () "insert brackets and go between them" (interactive)
(insert "[]")
(backward-char 1))
(defun insert-braces () "insert curly braces and go between them" (interactive)
(insert "{}")
(backward-char 1))
(defun insert-quotes () "insert quotes and go between them" (interactive)
(insert """")
(backward-char 1))
(defun insert-guillemets () "insert parentheses and go between them" (interactive)
(insert "« »")
(backward-char 2))
(global-set-key "(" 'insert-parentheses) ;;inserts "()"
(global-set-key "[" 'insert-brackets)
(global-set-key "{" 'insert-braces)
(global-set-key """ 'insert-quotes)
(global-set-key "«" 'insert-guillemets)



--
ralou - email & jabber : raloupower dot free.fr - ralou dot fritalk.com
PGP/GnuPG key : 0xDA96B10A
Don't use MSN ! PREFER JABBER ! http://www.jabber.org/
Don't send me doc files, please !