2010-07-22 7 views
2

Exécution de GNU Emacs 22.2.1 sous Ubuntu 9.04. Lors de la modification du code python dans emacs, si une docstring contient une apostrophe, emacs met en surbrillance tout le code suivant comme commentaire, jusqu'à ce qu'une autre apostrophe soit utilisée. Vraiment énervant!Pourquoi une apostrophe dans un docstring python casse-t-elle la syntaxe emacs?

En d'autres termes, si j'ai un docstring comme ceci:

''' This docstring has an apostrophe ' ''' 

Ensuite, tout le code ci-dessous est en surbrillance un commentaire. Les commentaires sont mis en évidence en tant que code.

Je peux échapper au docstring pour éviter cela, comme ceci:

''' This docstring has an escaped apostrophe \' ''' 

Ensuite, mettre en évidence est très bien, mais il semble drôle et inutile à d'autres développeurs de mon équipe, et je me moquais de pour l'utilisation emacs depuis "il ne peut pas gérer les apostrophies". ;)

Alors, quelqu'un sait comment faire emacs se comportent mieux à cet égard?

Merci,

Josh

+0

Je ne vois pas ce problème dans la version 23.1.1 - alors peut-être qu'il était un bug, mais a été corrigé. –

Répondre

7

Cela semble fonctionner correctement dans GNU Emacs 23.2.1. Si ce n'est pas pratique à mettre à jour, vous pouvez copier python.el du code source d'Emacs 23, ou peut-être simplement les parties correspondantes (syntaxe python-quote, mots-clés-python-police-lock-syntactic-et le code qui utilise ce dernier, je pense - je ne suis pas beaucoup d'un pirate Elisp).

Malheureusement le navigateur bzr de savannah.gnu.org ne fonctionne pas tout à l'heure, donc je ne peux pas vous indiquer directement le code, vous devrez le télécharger. Voir http://www.gnu.org/software/emacs/

+0

Construire 23.2 maintenant. J'espère que cela le corrige. – Josh

+0

Yup corrigé. Merci. – Josh

+0

FWIW, j'ai également remarqué ce problème lors de l'utilisation d'une version de python-mode.el avec Emacs 23.1. J'ai depuis enlevé cela et ai laissé tomber le python.el.gz d'Emacs 23.2 dans /usr/local/share/emacs/23.1/site-lisp/, et tout semble aller bien jusqu'ici. – phils

2

Il peut être un bug emacs, mais il pourrait aussi être en effet. Si vous insérez doctests dans vos docstrings, comme je le fais souvent pour expliquer l'API, je pourrais même souhaiter mettre en évidence la syntaxe complète de python dans docstrings.

Mais il est probablement un bug ... (emacs probablement la syntaxe surligneur soins juste des citations simples et doubles et simples ignorer triples et doubles triples). Si c'est le cas, vous devez utiliser des guillemets doubles au lieu de guillemets simples comme dans votre exemple (pour autant que je sache que la plupart des utilisateurs utilisent des guillemets doubles pour docstring), et vous n'aurez pas le problème.