1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-23 04:00:03 +08:00
SpaceVim/bundle/vim-pydocstring
2024-07-07 10:54:57 +08:00
..
autoload chore(pydocstring): use bundle pydocstring 2024-07-07 10:54:57 +08:00
doc chore(pydocstring): use bundle pydocstring 2024-07-07 10:54:57 +08:00
ftplugin/python chore(pydocstring): use bundle pydocstring 2024-07-07 10:54:57 +08:00
.gitignore chore(pydocstring): use bundle pydocstring 2024-07-07 10:54:57 +08:00
CHANGES.rst chore(pydocstring): use bundle pydocstring 2024-07-07 10:54:57 +08:00
LICENSE chore(pydocstring): use bundle pydocstring 2024-07-07 10:54:57 +08:00
Makefile chore(pydocstring): use bundle pydocstring 2024-07-07 10:54:57 +08:00
README.rst chore(pydocstring): use bundle pydocstring 2024-07-07 10:54:57 +08:00

vim-pydocstring
===============

.. image:: https://github.com/heavenshell/vim-pydocstring/workflows/build/badge.svg?branch=master
  :target: https://github.com/heavenshell/vim-pydocstring

.. image:: ./assets/vim-pydocstring.gif

vim-pydocstring is a generator for Python docstrings and is capable of automatically

* inserting one-line docstrings
* inserting multi-line docstrings

This plugin is heavily inspired by `phpdoc.vim <http://www.vim.org/scripts/script.php?script_id=1355>`_ and `sonictemplate.vim <https://github.com/mattn/sonictemplate-vim>`_.

Install
-------

Since version 2, vim-pydocstring requires `doq <https://pypi.org/project/doq/>`_.

You can install following command.

.. code::

  $ make install

Note
~~~~

Activated venv needs to be deactivated before install doq.

This can be automated with vim-plug.

.. code::

  Plug 'heavenshell/vim-pydocstring', { 'do': 'make install', 'for': 'python' }

If you want install doq manually, you can install from PyPi.

.. code::

  $ python3 -m venv ./venv
  $ ./venv/bin/pip3 install doq

Then set installed `doq <https://pypi.org/project/doq/>`_ path:

.. code::

  $ which doq
  let g:pydocstring_doq_path = path/to/doq

Note
~~~~

vim-pydocstring support Vim8.

Neovim works since v2.2.0, but if something wrong, send me pull requests to fix it.

If you want use old version checkout `1.0.0 <https://github.com/heavenshell/vim-pydocstring/releases/tag/1.0.0>`_

Basic usage
-----------

1. Move your cursor on a `def` or `class` keyword line,
2. type `:Pydocstring` and
3. watch a docstring template magically appear below the current line

Format all
----------

type `:PydocstringFormat` will insert all docstrings to current buffer.

Settings
--------

Pydocstring depends on ``shiftwidth`` if ``smarttab`` is set, otherwise
``softtabstop``.  For the latter, you need to set like ``set softtabstop=4``.

Example ``.vimrc``

.. code::

  autocmd FileType python setlocal tabstop=4 shiftwidth=4 smarttab expandtab

Or:

.. code::

  autocmd FileType python setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab

Pydocstring use ftplugin, so `filetype plugin on` required.

Key map
-------

If you want change default keymapping, set following to your `.vimrc`.

.. code::

  nmap <silent> <C-_> <Plug>(pydocstring)

Or, if you want disable default keymapping, you can set like following.

.. code::

  let g:pydocstring_enable_mapping = 0

Formatter
---------

You can set built-in formatter(Sphinx, Numpy, Google).

.. code::

  let g:pydocstring_formatter = 'numpy'


Custom template
---------------

You can set custom template. See `example <https://github.com/heavenshell/py-doq/tree/master/examples>`_.

.. code::

  let g:pydocstring_templates_path = '/path/to/custom/templates'

Exceptions
----------

If you want add exceptions to docstring, create custom template
and visual select source block and hit `:'<,'>Pydocstring` and then
excptions add to docstring.

.. code::

  def foo():
      """Summary of foo.

      Raises:
          Exception:
      """
      raise Exception('foo')

Ignore generate __init__ docstring
----------------------------------

If you want ignore to generate `__init__` docstring, you can set like following.

.. code::

  let g:pydocstring_ignore_init = 1

Thanks
------

The idea of venv installation is from `vim-lsp-settings <https://github.com/mattn/vim-lsp-settings>`_.
Highly applicate `@mattn <https://github.com/mattn/>`_ and all vim-lsp-settings contributors.