[vim-pyflakes](https://github.com/nvie/vim-pyflakes) and
[vim-pep8](https://github.com/nvie/vim-pep8).
- [Flake8](http://pypi.python.org/pypi/flake8/) is a wrapper around PyFlakes
- (static syntax checker), PEP8 (style checker)
- and Ned's MacCabe script (complexity checker).
+ [Flake8](https://pypi.python.org/pypi/flake8/) is a wrapper around PyFlakes
+ (static syntax checker), PEP8 (style checker) and Ned's MacCabe script
+ (complexity checker).
Installation
------------
Use [vim-pathogen](https://github.com/tpope/vim-pathogen) if you're not using
- it already. Make sure you've installed the [flake8](http://pypi.python.org/pypi/flake8/) package.
- Then, simply put the contents of this repository in your
- `~/.vim/bundle` directory.
+ it already. Make sure you've installed the
+ [flake8](https://pypi.python.org/pypi/flake8/) package. Then, simply put the
+ contents of this repository in your `~/.vim/bundle` directory.
Usage
-----
autocmd FileType python map <buffer> <F3> :call Flake8()<CR>
- To add builtins, in your .vimrc:
+ For flake8 configuration options please consult the following page:
- let g:flake8_builtins="_,apply"
-
- To ignore errors, in your .vimrc:
-
- let g:flake8_ignore="E501,W293"
-
- If you want to change the max line length for PEP8:
-
- let g:flake8_max_line_length=99
-
- To set the maximum [McCabe complexity](https://en.wikipedia.org/wiki/Cyclomatic_complexity) before a warning is issued:
-
- let g:flake8_max_complexity=10
+ https://flake8.readthedocs.org/en/latest/config.html
To customize the location of your flake8 binary, set `g:flake8_cmd`:
let g:flake8_quickfix_location="topleft"
+To customize the height of quick fix window, set `g:flake8_quickfix_height`:
+
+ let g:flake8_quickfix_height=7
+
To customize whether the quickfix window opens, set `g:flake8_show_quickfix`:
let g:flake8_show_quickfix=0 " don't show
----
A tip might be to run the Flake8 check every time you write a Python file, to
enable this, add the following line to your `.vimrc` file (thanks
- [Godefroid](http://github.com/gotcha)!):
+ [Godefroid](https://github.com/gotcha)!):
autocmd BufWritePost *.py call Flake8()
This plugin goes well together with the following plugin:
- - [PyUnit](http://github.com/nvie/vim-pyunit) (unit test helper under `<F8>`
+ - [PyUnit](https://github.com/nvie/vim-pyunit) (unit test helper under `<F8>`
and `<F9>`)
History
-------
+ 1.6: Deprecated configuring flake8 options through Vim settings. Instead,
+ advise users to use the flake8 config file.
- 1.5: Added markers and the option to don't show the quickfix window, also split functions into
- a autoload file. Added:
+ 1.5: Added markers and the option to don't show the quickfix window, also split
+ functions into a autoload file. Added:
- Options:
- `g:flake8_show_quickfix`
function! flake8#Flake8()
call s:Flake8()
+ call s:Warnings()
endfunction
function! flake8#Flake8UnplaceMarkers()
call s:UnplaceMarkers()
+ call s:Warnings()
endfunction
"" }}}
"" ** internal ** {{{
+ "" warnings
+
+ let s:displayed_warnings = 0
+ function s:Warnings()
+ if !s:displayed_warnings
+ let l:show_website_url = 0
+
+ let l:msg = "has been depreciated in favour of flake8 config files"
+ for setting_name in ['g:flake8_ignore', 'g:flake8_builtins', 'g:flake8_max_line_length', 'g:flake8_max_complexity']
+ if exists(setting_name)
+ echohl WarningMsg | echom setting_name l:msg | echohl None
+ let l:show_website_url = 1
+ endif
+ endfor
+
+ if l:show_website_url
+ let l:url = "http://flake8.readthedocs.org/en/latest/config.html"
+ echohl WarningMsg | echom l:url | echohl None
+ endif
+ let s:displayed_warnings = 1
+ endif
+ endfunction
+
"" config
function! s:DeclareOption(name, globalPrefix, default) " {{{
" flake8 command
call s:DeclareOption('flake8_cmd', '', '"flake8"')
- " flake8 stuff
- call s:DeclareOption('flake8_builtins', ' --builtins=', '')
- call s:DeclareOption('flake8_ignore', ' --ignore=', '')
- call s:DeclareOption('flake8_max_line_length', ' --max-line-length=', '')
- call s:DeclareOption('flake8_max_complexity', ' --max-complexity=', '')
" quickfix
call s:DeclareOption('flake8_quickfix_location', '', '"belowright"')
+ call s:DeclareOption('flake8_quickfix_height', '', 5)
call s:DeclareOption('flake8_show_quickfix', '', 1)
" markers to show
call s:DeclareOption('flake8_show_in_gutter', '', 0)
" perform the grep itself
let &grepformat="%f:%l:%c: %m\,%f:%l: %m"
- let &grepprg=s:flake8_cmd.s:flake8_builtins.s:flake8_ignore.s:flake8_max_line_length.s:flake8_max_complexity
+ let &grepprg=s:flake8_cmd
silent! grep! "%"
" restore grep settings
" quickfix
if !s:flake8_show_quickfix == 0
" open cwindow
- execute s:flake8_quickfix_location." copen"
+ execute s:flake8_quickfix_location." copen".s:flake8_quickfix_height
setlocal wrap
nnoremap <buffer> <silent> c :cclose<CR>
nnoremap <buffer> <silent> q :cclose<CR>