Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
<https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
Ça marche très bien avec les paramètres de fonctions mais si je fais :
unsigned int a,
b;
Là il me met systématiquement une tabulation avant « b » alors que je
souhaiterai des espaces comme ci dessus. Est-ce possible ?
Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
<https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
Ça marche très bien avec les paramètres de fonctions mais si je fais :
unsigned int a,
b;
Là il me met systématiquement une tabulation avant « b » alors que je
souhaiterai des espaces comme ci dessus. Est-ce possible ?
Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
<https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
Ça marche très bien avec les paramètres de fonctions mais si je fais :
unsigned int a,
b;
Là il me met systématiquement une tabulation avant « b » alors que je
souhaiterai des espaces comme ci dessus. Est-ce possible ?
Je pense qu'il faut un gourou de cc-mode pour répondre ; peux-tu
essayer, si ça ne donne rien ici, de poser la question dans le groupe
gnu.emacs.help ?
Je pense qu'il faut un gourou de cc-mode pour répondre ; peux-tu
essayer, si ça ne donne rien ici, de poser la question dans le groupe
gnu.emacs.help ?
Je pense qu'il faut un gourou de cc-mode pour répondre ; peux-tu
essayer, si ça ne donne rien ici, de poser la question dans le groupe
gnu.emacs.help ?
* Benoit Izac in fr.comp.applications.emacs:
> Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
> <https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
> Ça marche très bien avec les paramètres de fonctions mais si je fais :
> unsigned int a,
> b;
> Là il me met systématiquement une tabulation avant « b » alors que je
> souhaiterai des espaces comme ci dessus. Est-ce possible ?
J'ai essayé d'approfondir un peu via le debugguer mais le cc-mode est
vraiment complexe ; les appels s'empilent... Donc je n'ai pas réussi
à voir pourquoi dans le premier cas c'est un aligement alors que dans
le second une indentation...
* Benoit Izac <use.reply.to@INVALID.ADDRESS> in fr.comp.applications.emacs:
> Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
> <https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
> Ça marche très bien avec les paramètres de fonctions mais si je fais :
> unsigned int a,
> b;
> Là il me met systématiquement une tabulation avant « b » alors que je
> souhaiterai des espaces comme ci dessus. Est-ce possible ?
J'ai essayé d'approfondir un peu via le debugguer mais le cc-mode est
vraiment complexe ; les appels s'empilent... Donc je n'ai pas réussi
à voir pourquoi dans le premier cas c'est un aligement alors que dans
le second une indentation...
* Benoit Izac in fr.comp.applications.emacs:
> Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
> <https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
> Ça marche très bien avec les paramètres de fonctions mais si je fais :
> unsigned int a,
> b;
> Là il me met systématiquement une tabulation avant « b » alors que je
> souhaiterai des espaces comme ci dessus. Est-ce possible ?
J'ai essayé d'approfondir un peu via le debugguer mais le cc-mode est
vraiment complexe ; les appels s'empilent... Donc je n'ai pas réussi
à voir pourquoi dans le premier cas c'est un aligement alors que dans
le second une indentation...
> Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
> <https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
> Ça marche très bien avec les paramètres de fonctions mais si je fais :> unsigned int a,
> b;> Là il me met systématiquement une tabulation avant « b » alors que je
> souhaiterai des espaces comme ci dessus. Est-ce possible ?J'ai essayé d'approfondir un peu via le debugguer mais le cc-mode est
vraiment complexe ; les appels s'empilent... Donc je n'ai pas réussi
à voir pourquoi dans le premier cas c'est un aligement alors que dans
le second une indentation...
Bon, comme ça m'intriguait j'ai quand même approfondi. Et j'ai constaté
que la documentation du cc-mode était très bien faite (bon, j'ai aussi
lu pas mal le code de ce mode...).
Du coup je pense que le comportement observé est conforme au principe de
base du smart-tabs-mode.
En effet, si on (re)lit http://www.emacswiki.org/SmartTabs, l'idée est
que les tabulations marquent le niveau d'intentation et sont situées en
début de ligne uniquement ; tandis que les espaces permettent
d'effectuer des alignements.
Pour une définition de fonction, on est au niveau d'intentation 0, donc
pas de tabulation, et les paramètres sur les lignes suivantes sont
alignés sur la parenthèse ouvrante (pour le cc-mode, il s'agit du
contexte syntaxique "arglist-cont-nonempty", ce que l'on peut voir en
faisant C-c C-s sur la ligne correspondante ; et il est traité par la
fonction c-lineup-arglist). Du coup il n'y a que des espaces, on reste
au niveau d'indentation 0.
Pour la déclaration de variables, *le choix fait dans le cc-mode* est
d'augmenter le niveau d'indentation pour les lignes qui suivent la
première ligne (sauf si on sépare les types des noms). Du coup,
smart-tabs insère une tabulation et pas d'espace puisqu'il ne s'agit pas
d'une continuation (contexte "topmost-intro-cont", traité par la
fonction c-lineup-topmost-intro-cont, qui, en général, indente juste de
c-basic-offset et ne tient donc pas du tout compte d'un point
d'alignement comme dans le cas de la définition de fonction).
Du coup, il n'y a pas de solution directe pour ton problème, à moins de
redéfinir comment se comporte le cc-mode sur topmost-intro-cont, ce qui
est assez complexe
(http://cc-mode.sourceforge.net/html-manual/Custom-Line_002dUp.html ou
http://cc-mode.sourceforge.net/html-manual/Other-Indentation.html)
ou alors lui associer une indentation nulle mais c'est une question de
goût (ou de "style" C) plus que de comportement des modes...
En espérant que ces infos seront utiles...
> Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
> <https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
> Ça marche très bien avec les paramètres de fonctions mais si je fais :
> unsigned int a,
> b;
> Là il me met systématiquement une tabulation avant « b » alors que je
> souhaiterai des espaces comme ci dessus. Est-ce possible ?
J'ai essayé d'approfondir un peu via le debugguer mais le cc-mode est
vraiment complexe ; les appels s'empilent... Donc je n'ai pas réussi
à voir pourquoi dans le premier cas c'est un aligement alors que dans
le second une indentation...
Bon, comme ça m'intriguait j'ai quand même approfondi. Et j'ai constaté
que la documentation du cc-mode était très bien faite (bon, j'ai aussi
lu pas mal le code de ce mode...).
Du coup je pense que le comportement observé est conforme au principe de
base du smart-tabs-mode.
En effet, si on (re)lit http://www.emacswiki.org/SmartTabs, l'idée est
que les tabulations marquent le niveau d'intentation et sont situées en
début de ligne uniquement ; tandis que les espaces permettent
d'effectuer des alignements.
Pour une définition de fonction, on est au niveau d'intentation 0, donc
pas de tabulation, et les paramètres sur les lignes suivantes sont
alignés sur la parenthèse ouvrante (pour le cc-mode, il s'agit du
contexte syntaxique "arglist-cont-nonempty", ce que l'on peut voir en
faisant C-c C-s sur la ligne correspondante ; et il est traité par la
fonction c-lineup-arglist). Du coup il n'y a que des espaces, on reste
au niveau d'indentation 0.
Pour la déclaration de variables, *le choix fait dans le cc-mode* est
d'augmenter le niveau d'indentation pour les lignes qui suivent la
première ligne (sauf si on sépare les types des noms). Du coup,
smart-tabs insère une tabulation et pas d'espace puisqu'il ne s'agit pas
d'une continuation (contexte "topmost-intro-cont", traité par la
fonction c-lineup-topmost-intro-cont, qui, en général, indente juste de
c-basic-offset et ne tient donc pas du tout compte d'un point
d'alignement comme dans le cas de la définition de fonction).
Du coup, il n'y a pas de solution directe pour ton problème, à moins de
redéfinir comment se comporte le cc-mode sur topmost-intro-cont, ce qui
est assez complexe
(http://cc-mode.sourceforge.net/html-manual/Custom-Line_002dUp.html ou
http://cc-mode.sourceforge.net/html-manual/Other-Indentation.html)
ou alors lui associer une indentation nulle mais c'est une question de
goût (ou de "style" C) plus que de comportement des modes...
En espérant que ces infos seront utiles...
> Je suis assez satisfait de smart-tabs-mode.el que l'on trouve ici :
> <https://github.com/jcsalomon/smarttabs/raw/master/smart-tabs-mode.el>
> Ça marche très bien avec les paramètres de fonctions mais si je fais :> unsigned int a,
> b;> Là il me met systématiquement une tabulation avant « b » alors que je
> souhaiterai des espaces comme ci dessus. Est-ce possible ?J'ai essayé d'approfondir un peu via le debugguer mais le cc-mode est
vraiment complexe ; les appels s'empilent... Donc je n'ai pas réussi
à voir pourquoi dans le premier cas c'est un aligement alors que dans
le second une indentation...
Bon, comme ça m'intriguait j'ai quand même approfondi. Et j'ai constaté
que la documentation du cc-mode était très bien faite (bon, j'ai aussi
lu pas mal le code de ce mode...).
Du coup je pense que le comportement observé est conforme au principe de
base du smart-tabs-mode.
En effet, si on (re)lit http://www.emacswiki.org/SmartTabs, l'idée est
que les tabulations marquent le niveau d'intentation et sont situées en
début de ligne uniquement ; tandis que les espaces permettent
d'effectuer des alignements.
Pour une définition de fonction, on est au niveau d'intentation 0, donc
pas de tabulation, et les paramètres sur les lignes suivantes sont
alignés sur la parenthèse ouvrante (pour le cc-mode, il s'agit du
contexte syntaxique "arglist-cont-nonempty", ce que l'on peut voir en
faisant C-c C-s sur la ligne correspondante ; et il est traité par la
fonction c-lineup-arglist). Du coup il n'y a que des espaces, on reste
au niveau d'indentation 0.
Pour la déclaration de variables, *le choix fait dans le cc-mode* est
d'augmenter le niveau d'indentation pour les lignes qui suivent la
première ligne (sauf si on sépare les types des noms). Du coup,
smart-tabs insère une tabulation et pas d'espace puisqu'il ne s'agit pas
d'une continuation (contexte "topmost-intro-cont", traité par la
fonction c-lineup-topmost-intro-cont, qui, en général, indente juste de
c-basic-offset et ne tient donc pas du tout compte d'un point
d'alignement comme dans le cas de la définition de fonction).
Du coup, il n'y a pas de solution directe pour ton problème, à moins de
redéfinir comment se comporte le cc-mode sur topmost-intro-cont, ce qui
est assez complexe
(http://cc-mode.sourceforge.net/html-manual/Custom-Line_002dUp.html ou
http://cc-mode.sourceforge.net/html-manual/Other-Indentation.html)
ou alors lui associer une indentation nulle mais c'est une question de
goût (ou de "style" C) plus que de comportement des modes...
En espérant que ces infos seront utiles...
Pour la déclaration de variables, *le choix fait dans le cc-mode* est
d'augmenter le niveau d'indentation pour les lignes qui suivent la
première ligne (sauf si on sépare les types des noms). Du coup,
smart-tabs insère une tabulation et pas d'espace puisqu'il ne s'agit pas
d'une continuation (contexte "topmost-intro-cont", traité par la
fonction c-lineup-topmost-intro-cont, qui, en général, indente juste
de c-basic-offset et ne tient donc pas du tout compte d'un point
d'alignement comme dans le cas de la définition de fonction).
Pour la déclaration de variables, *le choix fait dans le cc-mode* est
d'augmenter le niveau d'indentation pour les lignes qui suivent la
première ligne (sauf si on sépare les types des noms). Du coup,
smart-tabs insère une tabulation et pas d'espace puisqu'il ne s'agit pas
d'une continuation (contexte "topmost-intro-cont", traité par la
fonction c-lineup-topmost-intro-cont, qui, en général, indente juste
de c-basic-offset et ne tient donc pas du tout compte d'un point
d'alignement comme dans le cas de la définition de fonction).
Pour la déclaration de variables, *le choix fait dans le cc-mode* est
d'augmenter le niveau d'indentation pour les lignes qui suivent la
première ligne (sauf si on sépare les types des noms). Du coup,
smart-tabs insère une tabulation et pas d'espace puisqu'il ne s'agit pas
d'une continuation (contexte "topmost-intro-cont", traité par la
fonction c-lineup-topmost-intro-cont, qui, en général, indente juste
de c-basic-offset et ne tient donc pas du tout compte d'un point
d'alignement comme dans le cas de la définition de fonction).
Merci pour avoir passé de ton temps sur ce "problème", je me doutais
un peu que cela vienne de cc-mode mais je pensais que la solution
serait plus simple à mettre en oeuvre que d'écrire du code ; j'avais
joué avec cc-mode il y déjà quelques années et je me souviens qu'il
y avait la possibilité de configurer assez finement la manière dont il
se comporte.
J'ai posté un message dans gnu.emacs.help comme tu me l'as conseillé,
peut-être existe-t-il une solution plus triviale (en tout cas, je n'ai
plus le temps aujourd'hui pour essayer de coder cela).
[...] Donc, dans le cas à l'origine de ma question, il est préférable
d'écrire :
unsigned int a;
unsigned int b;
Et le problème est réglé. ;-)
Sinon, je trouve ça plutôt bien smart-tabs-mode car ça permet à chacun
d'indenter le code comme il le souhaite juste en changeant tab-width
(ou tabstop pour les vilains ;-)).
Merci pour avoir passé de ton temps sur ce "problème", je me doutais
un peu que cela vienne de cc-mode mais je pensais que la solution
serait plus simple à mettre en oeuvre que d'écrire du code ; j'avais
joué avec cc-mode il y déjà quelques années et je me souviens qu'il
y avait la possibilité de configurer assez finement la manière dont il
se comporte.
J'ai posté un message dans gnu.emacs.help comme tu me l'as conseillé,
peut-être existe-t-il une solution plus triviale (en tout cas, je n'ai
plus le temps aujourd'hui pour essayer de coder cela).
[...] Donc, dans le cas à l'origine de ma question, il est préférable
d'écrire :
unsigned int a;
unsigned int b;
Et le problème est réglé. ;-)
Sinon, je trouve ça plutôt bien smart-tabs-mode car ça permet à chacun
d'indenter le code comme il le souhaite juste en changeant tab-width
(ou tabstop pour les vilains ;-)).
Merci pour avoir passé de ton temps sur ce "problème", je me doutais
un peu que cela vienne de cc-mode mais je pensais que la solution
serait plus simple à mettre en oeuvre que d'écrire du code ; j'avais
joué avec cc-mode il y déjà quelques années et je me souviens qu'il
y avait la possibilité de configurer assez finement la manière dont il
se comporte.
J'ai posté un message dans gnu.emacs.help comme tu me l'as conseillé,
peut-être existe-t-il une solution plus triviale (en tout cas, je n'ai
plus le temps aujourd'hui pour essayer de coder cela).
[...] Donc, dans le cas à l'origine de ma question, il est préférable
d'écrire :
unsigned int a;
unsigned int b;
Et le problème est réglé. ;-)
Sinon, je trouve ça plutôt bien smart-tabs-mode car ça permet à chacun
d'indenter le code comme il le souhaite juste en changeant tab-width
(ou tabstop pour les vilains ;-)).