Saya mencari paket elisp yang secara otomatis memasukkan metode Python docstring. Saya menemukan paket, yang sangat dekat dengan tujuan saya. Tapi itu dalam teks terstruktur, bukan dalam gaya Google.
sphinx-doc.el https://github.com/naiquevin/sphinx-doc.el
Menjelaskan argumen dalam dokumen (panduan gaya python Google) https://www.chromium.org/chromium-os/python-style-guidelines#TOC-Deskripsi-argument-in-docstrings
Harapan saya adalah ketika saya memanggil M-x sphinx-doc-google
dalam fungsi berikut,
def some_function(a, b, c):
Saya butuh hasil seperti ini.
def some_function(a, b, c):
"""
Args:
a:
b:
c:
Returns:
"""
Saya tahu ini tidak sulit untuk diterapkan sendiri. Saya hanya ingin menanyakan pertanyaan ini untuk menghindari reinvention.
python
doc-strings
sy2
sumber
sumber
Jawaban:
Saya menggunakan paket yang disebut yasnippet untuk sesuatu yang mirip dengan ini. Setelah beberapa perubahan kecil saya mengadaptasinya untuk menggunakan gaya Google docstring sebagai gantinya:
Namun perlu dicatat bahwa ini memerlukan beberapa pengaturan:
Cuplikan itu sendiri perlu menjalankan beberapa kode elisp utilitas untuk menghasilkan teks. Ini biasanya diselesaikan dengan membuat file yang disebut
.yas-setup.el
dengan kode di dalampython-mode
direktori snippet. Namun dimungkinkan juga untuk menempatkan kode di suatu tempat di dalam Anda.emacs
sebagai gantinya.Kode untuk cuplikan adalah:
Kode untuk
.yas-setup.el
is:Catatan yang
python-split-args
disediakan oleh cuplikan standar . Yaitu: https://github.com/AndreaCrotti/yasnippet-snippets/tree/master Namun Anda mendapatkannya secara default saat Anda menginstal paket melaluipackage.el
.Dengan pengaturan semuanya dengan benar, Anda harus dapat menulis "defg" diikuti oleh Tabuntuk memperluas cuplikan (Lihat gambar sebagai contoh).
Masih ada masalah dengan menggunakan indentasi bersarang di dalam ini, misalnya, di dalam kelas atau sebagai fungsi bersarang. Dalam kasus-kasus itu, docstring secara keliru diberi indentasi waktu tambahan untuk beberapa alasan. Saya akan memperbarui posting ini jika saya berhasil memperbaikinya.Cuplikan sekarang harus bekerja di dalam lingkup lain dengan melarang
yasnippet
dari indentasi ekspansi kedua.sumber
defg
dan itu memberi saya fungsi baru bernamaname
tanpa argumen, dan saya tidak bisa melihat cara untuk mengotomatiskannya memperbarui docstring ketika saya mengubah fungsi itu. Ketika saya melihat buffer Pesan saya, saya melihatyas--update-mirrors: Wrong type argument: stringp, (python-args-to-google-docstring)
.yasnippet
. Saya harus membuat contoh minimal untuk melaporkannya dengan benar. Mungkin juga potongan rantai dalam mode ini tidak didukung lagi, tapi saya harap bukan itu..yas-setup.el
harus berakhir di direktori yang sama dengan direktori snippet untuk mode yang sedang aktif. Yang~/.emacs.d/snippets/python-mode/.yas-setup.el
untuk mode python seperti yang Anda tunjukkan.Seperti yang disebutkan lunaryorn bahwa gaya tidak populer dan tidak ada paket.
Namun ada paket yang disebut sphinx-doc yang akan menghasilkan string doc dalam format sphinx ( demo ).
Anda dapat memodifikasi paket itu untuk menghasilkan string sesuai kebutuhan Anda.
sumber
Anda dapat menggunakan kode ini.
Pindahkan kursor pada nama fungsi Anda dan kemudian F9.
sumber