Je cherche un paquet elisp qui insère automatiquement la docstring Python pour une méthode. J'ai trouvé un colis, ce qui est très proche de mon objectif. Mais c'est en texte restructuré, pas en style Google.
sphinx-doc.el https://github.com/naiquevin/sphinx-doc.el
Décrire les arguments dans docstrings (guide de style Google python) https://www.chromium.org/chromium-os/python-style-guidelines#TOC-Describing-arguments-in-docstrings
Mon attente est lorsque j'appelle M-x sphinx-doc-google
dans la fonction suivante,
def some_function(a, b, c):
J'ai besoin d'un résultat comme celui-ci.
def some_function(a, b, c):
"""
Args:
a:
b:
c:
Returns:
"""
Je sais que ce n'est pas difficile à mettre en œuvre par moi-même. Je veux juste poser cette question pour éviter la réinvention.
Réponses:
J'utilise le package appelé yasnippet pour quelque chose de similaire à cela. Après quelques modifications mineures, je l'ai adapté pour utiliser le style de docstring Google à la place:
Notez cependant qu'il nécessite une configuration:
L'extrait lui-même doit exécuter du code elisp utilitaire pour générer le texte. Cela est généralement résolu en créant un fichier appelé
.yas-setup.el
avec le code dans lepython-mode
répertoire d'extraits de code . Il est cependant également possible de placer le code quelque part à l'intérieur de votre.emacs
.Le code de l'extrait est:
Le code pour le
.yas-setup.el
est:Notez que cela
python-split-args
est fourni par les extraits standard . C'est-à-dire: https://github.com/AndreaCrotti/yasnippet-snippets/tree/master Vous les obtenez cependant par défaut lorsque vous installez le packagepackage.el
.Avec tout configuré correctement, vous devriez pouvoir écrire "defg" suivi Tabde développer l'extrait de code (voir l'image pour un exemple).
Il y a toujours un problème avec l'utilisation de cette indentation imbriquée, par exemple, dans des classes ou en tant que fonctions imbriquées. Dans ces cas, la docstring est indentée par erreur un temps supplémentaire pour une raison quelconque. Je mettrai à jour ce message si je parviens à résoudre ce problème.L'extrait devrait maintenant fonctionner dans d'autres étendues en interdisant l'
yasnippet
auto-indentation de la deuxième extension.la source
defg
et cela me donne une nouvelle fonction nomméename
sans arguments, et je ne vois aucun moyen d'automatiser la mise à jour de la docstring lorsque je change cette fonction. Quand je regarde mon tampon Messages, je voisyas--update-mirrors: Wrong type argument: stringp, (python-args-to-google-docstring)
.yasnippet
. Je devrai cependant créer un exemple minimal pour le signaler correctement. Il se peut également que le chaînage d' extraits de cette manière ne soit plus pris en charge, mais j'espère que ce n'est pas le cas..yas-setup.el
devrait se retrouver dans le même répertoire que le répertoire d'extraits pour le mode actuellement actif. Ce qui est~/.emacs.d/snippets/python-mode/.yas-setup.el
pour le mode python comme vous l'avez souligné.Comme l'a mentionné lunaryorn, ce style n'est pas populaire et il n'y a pas de packages.
Cependant, il existe un package appelé sphinx-doc qui générera une chaîne de doc au format sphinx ( démo ).
Vous pouvez modifier ce package pour générer des chaînes selon vos besoins.
la source
Vous pouvez utiliser ce code.
Déplacez le curseur sur le nom de votre fonction puis sur F9.
la source