Estou procurando um pacote elisp que insira automaticamente a documentação do Python para um método. Encontrei um pacote muito próximo do meu objetivo. Mas é em texto reestruturado, não no estilo do Google.
sphinx-doc.el https://github.com/naiquevin/sphinx-doc.el
Descrevendo argumentos em docstrings (guia de estilo do python do Google) https://www.chromium.org/chromium-os/python-style-guidelines#TOC-Describing-arguments-in-docstrings
Minha expectativa é quando ligo M-x sphinx-doc-google
dentro da seguinte função,
def some_function(a, b, c):
Eu preciso de um resultado como este.
def some_function(a, b, c):
"""
Args:
a:
b:
c:
Returns:
"""
Eu sei que não é difícil de implementar sozinho. Eu só quero fazer esta pergunta para evitar a reinvenção.
python
doc-strings
sy2
fonte
fonte
Respostas:
Eu uso o pacote chamado yasnippet para algo semelhante a isso. Após algumas pequenas alterações, eu o adaptei para usar o estilo de documentação do Google:
Observe, no entanto, que isso requer alguma configuração:
O trecho em si precisa executar algum código elisp do utilitário para gerar o texto. Isso geralmente é resolvido com a criação de um arquivo chamado
.yas-setup.el
com o código dentro dopython-mode
diretório do snippet. No entanto, também é possível colocar o código em algum lugar dentro do seu.emacs
.O código para o snippet é:
O código para
.yas-setup.el
é:Observe que
python-split-args
é fornecido pelos trechos padrão . Ou seja: https://github.com/AndreaCrotti/yasnippet-snippets/tree/master No entanto, você os obtém por padrão ao instalar o pacotepackage.el
.Com tudo configurado corretamente, você poderá escrever "defg" seguido de Tabpara expandir o trecho (veja a imagem para obter um exemplo).
Ainda existe um problema ao usar esse recuo aninhado interno, por exemplo, dentro de classes ou como funções aninhadas. Nesses casos, a doutrina é recuada erroneamente por um tempo extra por algum motivo. Vou atualizar este post se conseguir consertar isso.Agora, o trecho de código deve funcionar em outros escopos, proibindo
yasnippet
o recuo automático da segunda expansão.fonte
defg
e isso me dá uma nova função nomeadaname
sem argumentos, e não vejo nenhuma maneira de automatizá-la atualizando a doutrina à medida que altero essa função. Quando olho para o meu buffer de Mensagens, vejoyas--update-mirrors: Wrong type argument: stringp, (python-args-to-google-docstring)
.yasnippet
. Vou ter que criar um exemplo mínimo para relatá-lo adequadamente. Também pode ser que snippets de encadeamento dessa maneira não sejam mais suportados, mas espero que não seja isso..yas-setup.el
deve terminar no mesmo diretório que o diretório do snippet para o modo ativo no momento. Qual é o~/.emacs.d/snippets/python-mode/.yas-setup.el
modo python, como você apontou.Como o lunaryorn mencionou, o estilo não é popular e não há pacotes.
No entanto, existe um pacote chamado sphinx-doc que irá gerar uma sequência de documentos no formato sphinx ( demo ).
Você pode modificar esse pacote para gerar seqüências de caracteres conforme sua exigência.
fonte
Você pode usar esse código.
Mova o cursor no nome da sua função e, em seguida, F9.
fonte