===========
IDE Plugins
===========

Emacs
=====

The ``Emacs`` plugin is maintained separately. Installation directions can be
found here: https://github.com/paetzke/py-yapf.el

VIM
===

The ``vim`` plugin allows you to reformat a range of code. Copy ``plugin`` and
``autoload`` directories into your ~/.vim or use ``:packadd`` in Vim 8. Or use
a plugin manager like Plug or Vundle:

.. code-block:: vim

     " Plug
     Plug 'google/yapf', { 'rtp': 'plugins/vim', 'for': 'python' }

     " Vundle
     Plugin 'google/yapf', { 'rtp': 'plugins/vim' }


You can add key bindings in the ``.vimrc`` file:

.. code-block:: vim

    map <C-Y> :call yapf#YAPF()<cr>
    imap <C-Y> <c-o>:call yapf#YAPF()<cr>

Alternatively, you can call the command ``YAPF``. If you omit the range, it
will reformat the whole buffer.

example:

.. code-block:: vim

    :YAPF       " formats whole buffer
    :'<,'>YAPF  " formats lines selected in visual mode

Sublime Text
============

The ``Sublime Text`` plugin is also maintained separately. It is compatible
with both Sublime Text 2 and 3.

The plugin can be easily installed by using *Sublime Package Control*. Check
the project page of the plugin for more information:
https://github.com/jason-kane/PyYapf

===================
git Pre-Commit Hook
===================

The ``git`` pre-commit hook automatically formats your Python files before they
are committed to your local repository. Any changes ``yapf`` makes to the files
will stay unstaged so that you can diff them manually.

To install, simply download the raw file and copy it into your git hooks
directory:

.. code-block:: bash

    # From the root of your git project.
    curl -o pre-commit.sh https://raw.githubusercontent.com/google/yapf/master/plugins/pre-commit.sh
    chmod a+x pre-commit.sh
    mv pre-commit.sh .git/hooks/pre-commit

==========
Textmate 2
==========

Plugin for ``Textmate 2`` requires ``yapf`` Python package installed on your
system:

.. code-block:: shell

    pip install yapf

Also, you will need to activate ``Python`` bundle from ``Preferences >>
Bundles``.

Finally, create a ``~/Library/Application
Support/TextMate/Bundles/Python.tmbundle/Commands/YAPF.tmCommand`` file with
the following content:

.. code-block:: xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>beforeRunningCommand</key>
      <string>saveActiveFile</string>
      <key>command</key>
      <string>#!/bin/bash

    TPY=${TM_PYTHON:-python}

    "$TPY" "/usr/local/bin/yapf" "$TM_FILEPATH"</string>
      <key>input</key>
      <string>document</string>
      <key>name</key>
      <string>YAPF</string>
      <key>scope</key>
      <string>source.python</string>
      <key>uuid</key>
      <string>297D5A82-2616-4950-9905-BD2D1C94D2D4</string>
    </dict>
    </plist>

You will see a new menu item ``Bundles > Python > YAPF``.
