OVH Cloud OVH Cloud

signaler l'indentation

13 réponses
Avatar
R12y
[Xpost + fu2 fcae]

Bonjour,

Avec un Emacs par défaut, quand on edite un Makefile, les tabulations en
début de ligne sont clairement signalées.
Je voudrais avoir la même chose mais pour le mode Python.
L'indentation est importante pour ce langage et des fois cela me joue des
tours.
Est-ce que je peux régler ça en une ligne dans mon .emacs, ou bien il
faut faire quelquechose de plus compliqué?

--
Rakotomandimby Mihamina,
http://aspo.rktmb.org/activites/infogerance
Serveurs* sous Debian, Fedora...
(*) Serveurs!?: http://fr.search.yahoo.com/search?p=serveurs+dedies

10 réponses

1 2
Avatar
Sébastien Kirche
Le 8 novembre 2005 à 21:11, R12y a formulé :

[Xpost + fu2 fcae]

Bonjour,



Salut,

Avec un Emacs par défaut, quand on edite un Makefile, les tabulations
en début de ligne sont clairement signalées.



Tiens, je ne connaissais pas ce truc.

Je voudrais avoir la même chose mais pour le mode Python.
L'indentation est importante pour ce langage et des fois cela me joue
des tours. Est-ce que je peux régler ça en une ligne dans mon .emacs,
ou bien il faut faire quelquechose de plus compliqué?



Je viens d'aller voir dans les sources (make-mode.el). Cet affichage est
obtenu au moyen d'une face et de regexp qui appliquent la face sur les
lignes commençant par des espaces :

- "^[ t]+$"
- "^t+#"
- "^( +)t"

Malheureusement je n'en connaît pas encore assez du fonctionnement du
font-locking pour pouvoir t'indiquer comment tu pourrais réutiliser ça
avec le mode python.

J'espère qu'un autre spécialiste d'emacs saura te renseigner plus loin.

--
Sébastien Kirche
Avatar
drkm
R12y wrote:

Avec un Emacs par défaut, quand on edite un Makefile, les tabulations en
début de ligne sont clairement signalées.
Je voudrais avoir la même chose mais pour le mode Python.



(font-lock-add-keywords 'python-mode
'(("^t+" 0 makefile-space-face t)))

Evidemment, 'make-mode' doit etre charge pour utiliser
'makefile-space-face'. Mais je te conseille plutot de definit ta
propre face, au moyen de 'defface'. Voir le manuel.

--drkm
Avatar
R12y
On Wed, 09 Nov 2005 05:56:48 -0800, drkm wrote:

Evidemment, 'make-mode' doit etre charge pour utiliser
'makefile-space-face'.



ça me convient, le Makefile du projet est en même temps ouvert de toutes
façons. Parceque je dois répercuter les changements éventuels dans le
Makefile.

--
Rakotomandimby Mihamina,
http://aspo.rktmb.org/activites/infogerance
Serveurs* sous Debian, Fedora...
(*) Serveurs!?: http://fr.search.yahoo.com/search?p=serveurs+dedies
Avatar
drkm
R12y wrote:

ça me convient



Parfait.

http://aspo.rktmb.org/activites/infoger ance



FYI : 502 Bad Gateway.

--drkm
Avatar
R12y
On Wed, 09 Nov 2005 05:56:48 -0800, drkm wrote:

R12y wrote:

Avec un Emacs par défaut, quand on edite un Makefile, les tabulations en
début de ligne sont clairement signalées.
Je voudrais avoir la même chose mais pour le mode Python.


(font-lock-add-keywords 'python-mode
'(("^t+" 0 makefile-space-face t)))



Aie.
http://www.locataire-serveur.info/workspaces/members/mihamina/public/python-make

C'est pas signalisé comme je veux.
D'autant plus que du coup, là j'ai pas compris sa logique (pourquoi le
fait-il des fois et pourquoi ne le fait-il pas des fois)

Un petit coup de main?
Merci.
--
Rakotomandimby Mihamina,
http://aspo.rktmb.org/activites/infogerance
Serveurs* sous Debian, Fedora...
(*) Serveurs!?: http://fr.search.yahoo.com/search?p=serveurs+dedies
Avatar
Sébastien Kirche
Le 16 novembre 2005 à 16:11, R12y a formulé :

> (font-lock-add-keywords 'python-mode
> '(("^t+" 0 makefile-space-face t)))

Aie.
http://www.locataire-serveur.info/workspaces/members/mihamina/public/python-make

C'est pas signalisé comme je veux.



Détaille ce que tu veux exactement, stp.
Tu veux voir les espaces ou les tabulations colorisés ?

D'autant plus que du coup, là j'ai pas compris sa logique (pourquoi le
fait-il des fois et pourquoi ne le fait-il pas des fois)



Parce que ça ne doit pas être les mêmes caractères. Pour t'en assurer,
C-x = sur les caractères pour connaître leur identité.

--
Sébastien Kirche
Avatar
R12y
Détaille ce que tu veux exactement, stp.
Tu veux voir les espaces ou les tabulations colorisés ?



Ca _doit_ être des espaces. Les specs/normes de programmation en Python
que je dois suivre préconnisent que ça doit être des espaces et 4 espaces
exactement.

Je souhaitequ'il m'affiche (me surligne) tous les blocs de 4 (et multiples
de 4) qu'il trouve en début de ligne.

Dans l'idéal, qu'il me signale si un bloc qui n'est pas "4 espaces" (3
espaces, 5 espaces, 1 TAB...) par une couleur différente de
surlignage. Certes l'interpreteur me le signalera, mais si on
peut le voir avant de tenter de lancer le bouzin, c'est mieux.

J'en ai besoin pour une raison assez simple, j'ai eu a définir une
fonction dans une fonction:

def function_1(a,b):
def sub_f1(c):
[...]

def sub_f2(d):
[...]

Le souci c'est que je ne me rappelle plus des circonstances, mais
l'interligne entre sub_f1 et sub_f2, eh bien n'avait pas d'indentation.

Forcément, ça ne pouvait pas se comporter correctement.
J'ai mis (perdu) du temps à retrouver pourquoi.

ça ne doit pas être les mêmes caractères. Pour t'en assurer, C-x = sur
les caractères pour connaître leur identité.



T'as raison, ce sont des TAB qui sont signalés.
Attends que je remette la mains sur le machin pour automatiquement
transformer les TABs en 4-spaces. J'étais persuadé de l'avoir déjà mis
dans mon .emacs.

--
Rakotomandimby Mihamina,
http://aspo.rktmb.org/activites/infogerance
Serveurs* sous Debian, Fedora...
(*) Serveurs!?: http://fr.search.yahoo.com/search?p=serveurs+dedies
Avatar
drkm
R12y wrote:

Ca _doit_ être des espaces. Les specs/normes de programmation en Python
que je dois suivre préconnisent que ça doit être des espaces et 4 e spaces
exactement.



(font-lock-add-keywords 'python-mode
'(("^( )+" 0 makefile-space-face
t)))

?

--drkm
Avatar
R12y
Ca _doit_ être des espaces. Les specs/normes de programmation en Python
que je dois suivre préconnisent que ça doit être des espaces et 4 espaces
exactement.


(font-lock-add-keywords 'python-mode
'(("^( )+" 0 makefile-space-face t)))



Waaaaw. Ok. J'aurais pu y penser. Je dois avoir choppé la grippe des
neurones...

--
Rakotomandimby Mihamina,
http://aspo.rktmb.org/activites/infogerance
Serveurs* sous Debian, Fedora...
(*) Serveurs!?: http://fr.search.yahoo.com/search?p=serveurs+dedies
Avatar
Matthieu Moy
"drkm" writes:

(font-lock-add-keywords 'python-mode
'(("^( )+" 0 makefile-space-face t)))



Ou son complémentaire :

(font-lock-add-keywords 'python-mode
'(("^(( )* ? ?)([^ ]|$)" 1 makefile-space-face t)))

Qui devrait râler quand l'indentation n'est pas un multiple de 4
(suite de 4 espace, suivi d'un espace, suivi éventuellement d'un ou
deux espace, avant la fin de ligne ou le caractère autre qu'espace).

(bizarement, ça ne marche pas chez moi pour le python-mode)

--
Matthieu
1 2