1*7249d1a6SKrzysztof Kosiński" Copyright 2015 Google Inc. All Rights Reserved. 2*7249d1a6SKrzysztof Kosiński" 3*7249d1a6SKrzysztof Kosiński" Licensed under the Apache License, Version 2.0 (the "License"); 4*7249d1a6SKrzysztof Kosiński" you may not use this file except in compliance with the License. 5*7249d1a6SKrzysztof Kosiński" You may obtain a copy of the License at 6*7249d1a6SKrzysztof Kosiński" 7*7249d1a6SKrzysztof Kosiński" http://www.apache.org/licenses/LICENSE-2.0 8*7249d1a6SKrzysztof Kosiński" 9*7249d1a6SKrzysztof Kosiński" Unless required by applicable law or agreed to in writing, software 10*7249d1a6SKrzysztof Kosiński" distributed under the License is distributed on an "AS IS" BASIS, 11*7249d1a6SKrzysztof Kosiński" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*7249d1a6SKrzysztof Kosiński" See the License for the specific language governing permissions and 13*7249d1a6SKrzysztof Kosiński" limitations under the License. 14*7249d1a6SKrzysztof Kosiński""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 15*7249d1a6SKrzysztof Kosiński" VIM Autoload script for YAPF support 16*7249d1a6SKrzysztof Kosiński" 17*7249d1a6SKrzysztof Kosiński" Place this script in your ~/.vim/autoload directory. You can add accessors to 18*7249d1a6SKrzysztof Kosiński" ~/.vimrc, e.g.: 19*7249d1a6SKrzysztof Kosiński" 20*7249d1a6SKrzysztof Kosiński" map <C-Y> :call yapf#YAPF()<cr> 21*7249d1a6SKrzysztof Kosiński" imap <C-Y> <c-o>:call yapf#YAPF()<cr> 22*7249d1a6SKrzysztof Kosiński" 23*7249d1a6SKrzysztof Kosińskifunction! yapf#YAPF() range 24*7249d1a6SKrzysztof Kosiński " Determine range to format. 25*7249d1a6SKrzysztof Kosiński let l:line_ranges = a:firstline . '-' . a:lastline 26*7249d1a6SKrzysztof Kosiński let l:cmd = 'yapf --lines=' . l:line_ranges 27*7249d1a6SKrzysztof Kosiński 28*7249d1a6SKrzysztof Kosiński " Call YAPF with the current buffer 29*7249d1a6SKrzysztof Kosiński if exists('*systemlist') 30*7249d1a6SKrzysztof Kosiński let l:formatted_text = systemlist(l:cmd, join(getline(1, '$'), "\n") . "\n") 31*7249d1a6SKrzysztof Kosiński else 32*7249d1a6SKrzysztof Kosiński let l:formatted_text = 33*7249d1a6SKrzysztof Kosiński \ split(system(l:cmd, join(getline(1, '$'), "\n") . "\n"), "\n") 34*7249d1a6SKrzysztof Kosiński endif 35*7249d1a6SKrzysztof Kosiński 36*7249d1a6SKrzysztof Kosiński if v:shell_error 37*7249d1a6SKrzysztof Kosiński echohl ErrorMsg 38*7249d1a6SKrzysztof Kosiński echomsg printf('"%s" returned error: %s', l:cmd, l:formatted_text[-1]) 39*7249d1a6SKrzysztof Kosiński echohl None 40*7249d1a6SKrzysztof Kosiński return 41*7249d1a6SKrzysztof Kosiński endif 42*7249d1a6SKrzysztof Kosiński 43*7249d1a6SKrzysztof Kosiński " Update the buffer. 44*7249d1a6SKrzysztof Kosiński execute '1,' . string(line('$')) . 'delete' 45*7249d1a6SKrzysztof Kosiński call setline(1, l:formatted_text) 46*7249d1a6SKrzysztof Kosiński 47*7249d1a6SKrzysztof Kosiński " Reset cursor to first line of the formatted range. 48*7249d1a6SKrzysztof Kosiński call cursor(a:firstline, 1) 49*7249d1a6SKrzysztof Kosińskiendfunction 50