Thread View: fr.comp.applications.emacs
7 messages
7 total messages
Started by Benoit Izac
Wed, 19 Sep 2012 18:53
smart-tabs-mode
Author: Benoit Izac
Date: Wed, 19 Sep 2012 18:53
Date: Wed, 19 Sep 2012 18:53
15 lines
1652 bytes
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
Author: Damien Wyart
Date: Thu, 20 Sep 2012 15:44
Date: Thu, 20 Sep 2012 15:44
25 lines
2260 bytes
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
Author: Damien Wyart
Date: Thu, 20 Sep 2012 16:11
Date: Thu, 20 Sep 2012 16:11
11 lines
1541 bytes
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
Author: Damien Wyart
Date: Fri, 21 Sep 2012 19:32
Date: Fri, 21 Sep 2012 19:32
56 lines
4122 bytes
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
Author: Benoit Izac
Date: Fri, 21 Sep 2012 20:26
Date: Fri, 21 Sep 2012 20:26
95 lines
5888 bytes
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
Author: Damien Wyart
Date: Fri, 21 Sep 2012 20:28
Date: Fri, 21 Sep 2012 20:28
17 lines
1920 bytes
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
Author: Damien Wyart
Date: Fri, 21 Sep 2012 20:33
Date: Fri, 21 Sep 2012 20:33
36 lines
2604 bytes
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