🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fr.comp.applications.emacs
7 messages
7 total messages Started by Benoit Izac Wed, 19 Sep 2012 18:53
smart-tabs-mode
#52
Author: Benoit Izac
Date: Wed, 19 Sep 2012 18:53
15 lines
1652 bytes
Bonjour,

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 ?

Merci.
-- 
Benoit Izac
Re: smart-tabs-mode
#53
Author: Damien Wyart
Date: Thu, 20 Sep 2012 15:44
25 lines
2260 bytes
* 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...

Une fois rep�r� ce qui met une tabulation dans le 2e cas, on peut sans
doute adapter le mode pour qu'il tienne compte de ce cas...

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 ?

-- 
DW
Re: smart-tabs-mode
#54
Author: Damien Wyart
Date: Thu, 20 Sep 2012 16:11
11 lines
1541 bytes
> 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 ?

En parall�le, je pense aussi que �a serait int�ressant d'en parler
� l'auteur du mode smart-tabs car �a me semble �tre un cas assez courant
pour lequel il pourrait souhaiter que �a se comporte comme tu t'y
attendais.

-- 
DW
Re: smart-tabs-mode
#55
Author: Damien Wyart
Date: Fri, 21 Sep 2012 19:32
56 lines
4122 bytes
> * 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...

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...
-- 
DW
Re: smart-tabs-mode
#56
Author: Benoit Izac
Date: Fri, 21 Sep 2012 20:26
95 lines
5888 bytes
Bonjour,

le 21/09/2012 � 21:32, Damien Wyart a �crit dans le message
<505cc0ea$0$1989$426a74cc@news.free.fr> :

>> > 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...

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).

Apr�s, ce n'est pas un besoin, je me posais juste la question suite
� l'exp�rimentation de divers essais pour tester smart-tabs-mode. Pour
la petite anecdote, il y a quelques jours, voulant m'initier � java
histoire de ne pas mourir idiot, je suis tomb� sur les conventions java
de Sun, enfin Oracle, quoique non puisqu'elles date de 1997 :
<http://www.oracle.com/technetwork/java/codeconventions-150003.pdf> o�
l'on peut lire en 6.1 qu'il est d�conseill� de faire plusieurs
d�clarations sur la m�me ligne. 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�. ;-)

�tape suivante : regarder comment smart-tabs-mode se comporte avec du
Perl sur des classiques comme :
open my $fh, "<", $filename
  or die "can't open $filename: $!";
^^

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 ;-)).

-- 
Benoit Izac
Re: smart-tabs-mode
#57
Author: Damien Wyart
Date: Fri, 21 Sep 2012 20:28
17 lines
1920 bytes
> 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

Enfin, si c'est une continuation (comme l'indique le nom du contexte),
mais pas de type alignement sur un point pr�cis de la premi�re ligne...

Donc j'aurais du �crire "il ne s'agit pas d'un alignement".

> 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).

-- 
DW
Re: smart-tabs-mode
#58
Author: Damien Wyart
Date: Fri, 21 Sep 2012 20:33
36 lines
2604 bytes
> 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.

En effet, il y a �norm�ment de param�trages possibles.

> 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).

C'est toujours int�ressant d'avoir plusieurs avis. Et sur sur ce groupe,
il y a de sacr�s "hackers" (dans le sens noble du terme)...

> [...] 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 ;-)).

Oui, m�me si je suis plut�t partisan du "space only" (notamment pour
Python), j'avoue que �a m'a bien int�ress� (l'algo de base est
astucieux) et je pense que je le testerai un peu aussi � l'occasion...

-- 
DW
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads