1*7249d1a6SKrzysztof Kosiński=========== 2*7249d1a6SKrzysztof KosińskiIDE Plugins 3*7249d1a6SKrzysztof Kosiński=========== 4*7249d1a6SKrzysztof Kosiński 5*7249d1a6SKrzysztof KosińskiEmacs 6*7249d1a6SKrzysztof Kosiński===== 7*7249d1a6SKrzysztof Kosiński 8*7249d1a6SKrzysztof KosińskiThe ``Emacs`` plugin is maintained separately. Installation directions can be 9*7249d1a6SKrzysztof Kosińskifound here: https://github.com/paetzke/py-yapf.el 10*7249d1a6SKrzysztof Kosiński 11*7249d1a6SKrzysztof KosińskiVIM 12*7249d1a6SKrzysztof Kosiński=== 13*7249d1a6SKrzysztof Kosiński 14*7249d1a6SKrzysztof KosińskiThe ``vim`` plugin allows you to reformat a range of code. Copy ``plugin`` and 15*7249d1a6SKrzysztof Kosiński``autoload`` directories into your ~/.vim or use ``:packadd`` in Vim 8. Or use 16*7249d1a6SKrzysztof Kosińskia plugin manager like Plug or Vundle: 17*7249d1a6SKrzysztof Kosiński 18*7249d1a6SKrzysztof Kosiński.. code-block:: vim 19*7249d1a6SKrzysztof Kosiński 20*7249d1a6SKrzysztof Kosiński " Plug 21*7249d1a6SKrzysztof Kosiński Plug 'google/yapf', { 'rtp': 'plugins/vim', 'for': 'python' } 22*7249d1a6SKrzysztof Kosiński 23*7249d1a6SKrzysztof Kosiński " Vundle 24*7249d1a6SKrzysztof Kosiński Plugin 'google/yapf', { 'rtp': 'plugins/vim' } 25*7249d1a6SKrzysztof Kosiński 26*7249d1a6SKrzysztof Kosiński 27*7249d1a6SKrzysztof KosińskiYou can add key bindings in the ``.vimrc`` file: 28*7249d1a6SKrzysztof Kosiński 29*7249d1a6SKrzysztof Kosiński.. code-block:: vim 30*7249d1a6SKrzysztof Kosiński 31*7249d1a6SKrzysztof Kosiński map <C-Y> :call yapf#YAPF()<cr> 32*7249d1a6SKrzysztof Kosiński imap <C-Y> <c-o>:call yapf#YAPF()<cr> 33*7249d1a6SKrzysztof Kosiński 34*7249d1a6SKrzysztof KosińskiAlternatively, you can call the command ``YAPF``. If you omit the range, it 35*7249d1a6SKrzysztof Kosińskiwill reformat the whole buffer. 36*7249d1a6SKrzysztof Kosiński 37*7249d1a6SKrzysztof Kosińskiexample: 38*7249d1a6SKrzysztof Kosiński 39*7249d1a6SKrzysztof Kosiński.. code-block:: vim 40*7249d1a6SKrzysztof Kosiński 41*7249d1a6SKrzysztof Kosiński :YAPF " formats whole buffer 42*7249d1a6SKrzysztof Kosiński :'<,'>YAPF " formats lines selected in visual mode 43*7249d1a6SKrzysztof Kosiński 44*7249d1a6SKrzysztof KosińskiSublime Text 45*7249d1a6SKrzysztof Kosiński============ 46*7249d1a6SKrzysztof Kosiński 47*7249d1a6SKrzysztof KosińskiThe ``Sublime Text`` plugin is also maintained separately. It is compatible 48*7249d1a6SKrzysztof Kosińskiwith both Sublime Text 2 and 3. 49*7249d1a6SKrzysztof Kosiński 50*7249d1a6SKrzysztof KosińskiThe plugin can be easily installed by using *Sublime Package Control*. Check 51*7249d1a6SKrzysztof Kosińskithe project page of the plugin for more information: 52*7249d1a6SKrzysztof Kosińskihttps://github.com/jason-kane/PyYapf 53*7249d1a6SKrzysztof Kosiński 54*7249d1a6SKrzysztof Kosiński=================== 55*7249d1a6SKrzysztof Kosińskigit Pre-Commit Hook 56*7249d1a6SKrzysztof Kosiński=================== 57*7249d1a6SKrzysztof Kosiński 58*7249d1a6SKrzysztof KosińskiThe ``git`` pre-commit hook automatically formats your Python files before they 59*7249d1a6SKrzysztof Kosińskiare committed to your local repository. Any changes ``yapf`` makes to the files 60*7249d1a6SKrzysztof Kosińskiwill stay unstaged so that you can diff them manually. 61*7249d1a6SKrzysztof Kosiński 62*7249d1a6SKrzysztof KosińskiTo install, simply download the raw file and copy it into your git hooks 63*7249d1a6SKrzysztof Kosińskidirectory: 64*7249d1a6SKrzysztof Kosiński 65*7249d1a6SKrzysztof Kosiński.. code-block:: bash 66*7249d1a6SKrzysztof Kosiński 67*7249d1a6SKrzysztof Kosiński # From the root of your git project. 68*7249d1a6SKrzysztof Kosiński curl -o pre-commit.sh https://raw.githubusercontent.com/google/yapf/main/plugins/pre-commit.sh 69*7249d1a6SKrzysztof Kosiński chmod a+x pre-commit.sh 70*7249d1a6SKrzysztof Kosiński mv pre-commit.sh .git/hooks/pre-commit 71*7249d1a6SKrzysztof Kosiński 72*7249d1a6SKrzysztof Kosiński========== 73*7249d1a6SKrzysztof KosińskiTextmate 2 74*7249d1a6SKrzysztof Kosiński========== 75*7249d1a6SKrzysztof Kosiński 76*7249d1a6SKrzysztof KosińskiPlugin for ``Textmate 2`` requires ``yapf`` Python package installed on your 77*7249d1a6SKrzysztof Kosińskisystem: 78*7249d1a6SKrzysztof Kosiński 79*7249d1a6SKrzysztof Kosiński.. code-block:: shell 80*7249d1a6SKrzysztof Kosiński 81*7249d1a6SKrzysztof Kosiński pip install yapf 82*7249d1a6SKrzysztof Kosiński 83*7249d1a6SKrzysztof KosińskiAlso, you will need to activate ``Python`` bundle from ``Preferences >> 84*7249d1a6SKrzysztof KosińskiBundles``. 85*7249d1a6SKrzysztof Kosiński 86*7249d1a6SKrzysztof KosińskiFinally, create a ``~/Library/Application 87*7249d1a6SKrzysztof KosińskiSupport/TextMate/Bundles/Python.tmbundle/Commands/YAPF.tmCommand`` file with 88*7249d1a6SKrzysztof Kosińskithe following content: 89*7249d1a6SKrzysztof Kosiński 90*7249d1a6SKrzysztof Kosiński.. code-block:: xml 91*7249d1a6SKrzysztof Kosiński 92*7249d1a6SKrzysztof Kosiński <?xml version="1.0" encoding="UTF-8"?> 93*7249d1a6SKrzysztof Kosiński <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 94*7249d1a6SKrzysztof Kosiński <plist version="1.0"> 95*7249d1a6SKrzysztof Kosiński <dict> 96*7249d1a6SKrzysztof Kosiński <key>beforeRunningCommand</key> 97*7249d1a6SKrzysztof Kosiński <string>saveActiveFile</string> 98*7249d1a6SKrzysztof Kosiński <key>command</key> 99*7249d1a6SKrzysztof Kosiński <string>#!/bin/bash 100*7249d1a6SKrzysztof Kosiński 101*7249d1a6SKrzysztof Kosiński TPY=${TM_PYTHON:-python} 102*7249d1a6SKrzysztof Kosiński 103*7249d1a6SKrzysztof Kosiński "$TPY" "/usr/local/bin/yapf" "$TM_FILEPATH"</string> 104*7249d1a6SKrzysztof Kosiński <key>input</key> 105*7249d1a6SKrzysztof Kosiński <string>document</string> 106*7249d1a6SKrzysztof Kosiński <key>name</key> 107*7249d1a6SKrzysztof Kosiński <string>YAPF</string> 108*7249d1a6SKrzysztof Kosiński <key>scope</key> 109*7249d1a6SKrzysztof Kosiński <string>source.python</string> 110*7249d1a6SKrzysztof Kosiński <key>uuid</key> 111*7249d1a6SKrzysztof Kosiński <string>297D5A82-2616-4950-9905-BD2D1C94D2D4</string> 112*7249d1a6SKrzysztof Kosiński </dict> 113*7249d1a6SKrzysztof Kosiński </plist> 114*7249d1a6SKrzysztof Kosiński 115*7249d1a6SKrzysztof KosińskiYou will see a new menu item ``Bundles > Python > YAPF``. 116