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

variables locales

5 réponses
Avatar
Didier Couderc
Bonjour,

Je travaille sur plusieurs projets qui utilisent des conventions
différentes et c'est un peu pénible.

Je voudrais utiliser les variables locales pour positionner, par
exemple, tab-width. Donc, à la fin de machin.cpp (c'est du C++) je
rajoute ces 3 lignes :

// Local Variables:
// tab-width: 4
// End:

Je recharge le fichier, fume, toujours 8.

La syntaxe est valide car si je change l'extension du fichier, en
machin.blorf par exemple, j'ai bien 4.

Je suppose donc que c'est c-mode qui change la valeur.

Est-ce qu'il y a un moyen de lui faire respecter la valeur spécifiée
dans les variables locales ?

Au cas ou :
XEmacs 21.4 patch 12
CC Mode version 5.30.10 (venant des packages XEmacs)

--
Mog

5 réponses

Avatar
Alain Ketterlin
Didier Couderc writes:

Je voudrais utiliser les variables locales pour positionner, par
exemple, tab-width. Donc, à la fin de machin.cpp (c'est du C++) je
rajoute ces 3 lignes :

// Local Variables:
// tab-width: 4
// End:

Je recharge le fichier, fume, toujours 8.



CC Mode utilise c-basic-offset (4 par défaut il me semble) pour calcul er
son indentation.

Pour ce qui est de l'interaction avec les tabs, tu trouveras peut-être
des infos là : http://www.emacswiki.org/emacs/IndentingC (la partie
"Tabs Instead of Spaces"). Peut-être indent-tabs-mode ? Sais pas, je
n'utilise jamais de tabulation.

[...]
Au cas ou :
XEmacs 21.4 patch 12
CC Mode version 5.30.10 (venant des packages XEmacs)



Ouch. Je ne sais pas si tout cela est valable pour cette version.

-- Alain.
Avatar
Didier Couderc
Bonjour,

Alain Ketterlin writes:

Didier Couderc writes:

Je voudrais utiliser les variables locales pour positionner, par
exemple, tab-width. Donc, à la fin de machin.cpp (c'est du C++) je
rajoute ces 3 lignes :

// Local Variables:
// tab-width: 4
// End:

Je recharge le fichier, fume, toujours 8.



CC Mode utilise c-basic-offset (4 par défaut il me semble) pour calculer
son indentation.



Il me semble que cette valeur sert pour la saisie de code nouveau.

Mon pb est essentiellement avec le code existant, qui contient des
TAB, qui occupent tab-width espaces à l'écran et que quand je charge
un fichier, tab-width vaut 8 et l'indentation est foireuse. Je change
la valeur de tab-width à 4 et ça corrige l'affichage.

Pour ce qui est de l'interaction avec les tabs, tu trouveras peut-être
des infos là : http://www.emacswiki.org/emacs/IndentingC (la partie
"Tabs Instead of Spaces"). Peut-être indent-tabs-mode ? Sais pas, je
n'utilise jamais de tabulation.



Pareil. Seulement je ne suis pas seul :-)

Merci pour le lien, je vais fouiller.

--
Mog
Avatar
vincent.belaiche
Didier Couderc writes:


[...]


Pareil. Seulement je ne suis pas seul :-)

Merci pour le lien, je vais fouiller.



Est-ce que par hasard tu n'aurais pas une fonction crochet appelée en
mode c, et qui remettrait le tab à 8.

Est-ce que tu as essayé d'ouvrir le même fichier en lançant Emacs sans
fichier d'init, c.-à-d. "emacs -q" en ligne de commande.

Sinon je trouve qu'utiliser les variables locales pour ce genre de chose
n'est pas une très bonne pratique --- avis personnel... On peut dans une
fonction crochet discriminer le chemin du fichier et régler la
tabulation en fonction.

Vincent.
Avatar
sokobania.01
Le mardi 16 septembre 2014 18:15:27 UTC+2, Didier Couderc a écrit  :
Bonjour,

Je travaille sur plusieurs projets qui utilisent des conventions
diff�rentes et c'est un peu p�nible.

Je voudrais utiliser les variables locales pour positionner, par
exemple, tab-width. Donc, � la fin de machin.cpp (c'est du C++) je
rajoute ces 3 lignes :

// Local Variables:
// tab-width: 4
// End:



As-tu connaissance de l'existence de variables locales à un réper toire (et non à un fichier)

https://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variabl es.html

Ce qui ne résout pas ton autre problème...
Avatar
Nicolas Richard
Didier Couderc writes:
Je voudrais utiliser les variables locales pour positionner, par
exemple, tab-width. Donc, à la fin de machin.cpp (c'est du C++) je
rajoute ces 3 lignes :

// Local Variables:
// tab-width: 4
// End:



J'ai essayé en créant un fichier foo.cpp qui contient

/* Local Variables: */
/* tab-width: 31 */
/* End: */

je l'ouvre, j'évalue tab-width (avec M-: tab-width RET) et j'obtiens
bien 31.

Au cas ou :
XEmacs 21.4 patch 12
CC Mode version 5.30.10 (venant des packages XEmacs)



J'utilise GNU emacs et CC Mode version 5.32.5

Regarde si tu as le même problème en n'utilisant pas tes fichiers
d'init. Si oui, tente un grep sur "tab-width" dans les différents
cc-*.el

a+

--
Nicolas Richard