vimrc/sources_non_forked/vim-python-pep8-indent
2020-04-25 21:56:16 -04:00
..
.circleci Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
indent Updated plugins 2020-04-25 21:56:16 -04:00
spec Updated plugins 2020-04-25 21:56:16 -04:00
.coveragerc Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
.dockerignore Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
.gitignore Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
CONTRIBUTING.rst Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
COPYING.txt Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
docker-compose.yml Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
Dockerfile Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
Gemfile Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
Makefile Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00
README.rst Fixed https://github.com/amix/vimrc/issues/546 2019-11-16 20:16:20 +01:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

vim-python-pep8-indent
======================

.. image:: https://circleci.com/gh/Vimjas/vim-python-pep8-indent.svg?style=svg
  :target: https://circleci.com/gh/Vimjas/vim-python-pep8-indent
.. image:: https://codecov.io/gh/Vimjas/vim-python-pep8-indent/branch/master/graph/badge.svg
  :target: https://codecov.io/gh/Vimjas/vim-python-pep8-indent

This small script modifies Vim_s indentation behavior to comply with PEP8_ and my aesthetic preferences.
Most importantly::

   foobar(foo,
          bar)

and::

   foobar(
      foo,
      bar
   )


Installation
------------

Install the plugin using your favorite plugin manager / method, a few examples
follow:

Pathogen
^^^^^^^^

Follow the instructions on installing Pathogen_ and then:

.. code-block:: shell-session

   $ cd ~/.vim/bundle
   $ git clone https://github.com/Vimjas/vim-python-pep8-indent.git


Vundle
^^^^^^

Follow the instructions on installing Vundle_ and add the appropriate plugin line into your ``.vimrc``:

.. code-block:: vim

   Plugin 'Vimjas/vim-python-pep8-indent'


NeoBundle
^^^^^^^^^

Follow the instructions on installing NeoBundle_ and add the appropriate NeoBundle line into your ``.vimrc``:

.. code-block:: vim

   NeoBundle 'Vimjas/vim-python-pep8-indent'


Configuration
-------------

g:python_pep8_indent_multiline_string
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

You can configure the initial indentation of multiline strings using ``g:python_pep8_indent_multiline_string`` (which can also be set per buffer).
This defaults to ``0``, which means that multiline strings are not indented.
``-1`` and positive values will be used as-is, where ``-1`` is a special value for Vim's ``indentexpr``, and will keep the existing indent (using Vim's ``autoindent`` setting).
``-2`` is meant to be used for strings that are wrapped with ``textwrap.dedent`` etc.  It will add a level of indentation if the multiline string started in the previous line, without any content in it already::

   testdir.makeconftest("""
       _

With content already, it will be aligned to the opening parenthesis::

   testdir.makeconftest("""def pytest_addoption(parser):
                        _

Existing indentation (including ``0``) in multiline strings will be kept, so this setting only applies to the indentation of new/empty lines.

g:python_pep8_indent_hang_closing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Control closing bracket indentation with ``python_pep8_indent_hang_closing``, set globally or per buffer.

By default (set to ``0``), closing brackets line up with the opening line::

   my_list = [
       1, 2, 3,
       4, 5, 6,
   ]
   result = some_function_that_takes_arguments(
       'a', 'b', 'c',
       'd', 'e', 'f',
   )

With ``python_pep8_indent_hang_closing = 1``, closing brackets line up with the items::

   my_list = [
       1, 2, 3,
       4, 5, 6,
       ]
   result = some_function_that_takes_arguments(
       'a', 'b', 'c',
       'd', 'e', 'f',
       )


Troubleshooting
---------------

In case it is not working, please make sure your Vim is configured to load
indent files (``filetype indent on``).
This is typically the case when using a plugin manager, but check its docs.

Check ``:verbose set indentexpr?`` in a Python file, which should show
something like the following:

  indentexpr=GetPythonPEPIndent(v:lnum)
        Last set from ~/…/plugged/vim-python-pep8-indent/indent/python.vim


Notes
-----

Please note that Kirill Klenovs python-mode_ ships its own version of this bundle.
Therefore, if you want to use this version specifically, youll have to disable python-modes using:

.. code-block:: vim

   let g:pymode_indent = 0


License and Authorship
----------------------

This script is based on one from Vims official `script repo`_  that was *not* originally written by me.
Unfortunately the indentation was off by one character in one case and the script hasnt been updated since 2005.

Even more unfortunately, I wasnt able to reach any of the original authors/maintainers:
**David Bustos** and **Eric Mc Sween**.

So I fixed the annoyance with the help of `Steve Losh`_ and am putting it out here so you dont have to patch the original yourself.
The original patch is still available here_.

Over the time a lot more improvements have been contributed_ by `generous people`_.

Id like to thank the original authors here for their work and release it hereby to the *Public Domain* (using the CC0_ licence) since I hope that would be in their spirit.
If anyone with a say in this objects, please let me_ know immediately.
Also, if someone is in contact with one of them, I would appreciate being introduced.

While my Vimscript_ skills are still feeble, I intend to maintain it for now.
This mainly means that Ill triage through bugs and pull requests but wont be fixing much myself.


.. _Vim: http://www.vim.org/
.. _PEP8: http://www.python.org/dev/peps/pep-0008/
.. _`script repo`: http://www.vim.org/scripts/script.php?script_id=974
.. _`Steve Losh`: http://stevelosh.com/
.. _here: https://gist.github.com/2965846
.. _Neobundle: https://github.com/Shougo/neobundle.vim
.. _Pathogen: https://github.com/tpope/vim-pathogen
.. _python-mode: https://github.com/klen/python-mode
.. _`Vimscript`: http://learnvimscriptthehardway.stevelosh.com/
.. _vundle: https://github.com/gmarik/Vundle.vim
.. _me: https://hynek.me/
.. _CC0: http://creativecommons.org/publicdomain/zero/1.0/
.. _contributed: https://github.com/hynek/vim-python-pep8-indent/blob/master/CONTRIBUTING.rst
.. _`generous people`: https://github.com/hynek/vim-python-pep8-indent/graphs/contributors