===========
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/main/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``.
