]> git.madduck.net Git - etc/vim.git/blob - ftplugin/python_flake8.vim

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Reread configuration upon every invocation of Flake8().
[etc/vim.git] / ftplugin / python_flake8.vim
1 "
2 " Python filetype plugin for running flake8
3 " Language:     Python (ft=python)
4 " Maintainer:   Vincent Driessen <vincent@3rdcloud.com>
5 " Version:      Vim 7 (may work with lower Vim versions, but not tested)
6 " URL:          http://github.com/nvie/vim-flake8
7 "
8 " Only do this when not done yet for this buffer
9 if exists("b:loaded_flake8_ftplugin")
10     finish
11 endif
12 let b:loaded_flake8_ftplugin=1
13
14 if !exists("*Flake8()")
15     function Flake8()
16         if exists("g:flake8_cmd")
17             let s:flake8_cmd=g:flake8_cmd
18         else
19             let s:flake8_cmd="flake8"
20         endif
21
22         if !executable(s:flake8_cmd)
23             echoerr "File " . s:flake8_cmd . " not found. Please install it first."
24             return
25         endif
26
27         set lazyredraw   " delay redrawing
28         cclose           " close any existing cwindows
29
30         " store old grep settings (to restore later)
31         let l:old_gfm=&grepformat
32         let l:old_gp=&grepprg
33
34         " write any changes before continuing
35         if &readonly == 0
36             update
37         endif
38
39         " read config
40         if exists("g:flake8_ignore")
41             let s:flake8_ignores=" --ignore=".g:flake8_ignore
42         else
43             let s:flake8_ignores=""
44         endif
45
46         if exists("g:flake8_max_line_length")
47             let s:flake8_max_line_length=" --max-line-length=".g:flake8_max_line_length
48         else
49             let s:flake8_max_line_length=""
50         endif
51
52         if exists("g:flake8_max_complexity")
53             let s:flake8_max_complexity=" --max-complexity=".g:flake8_max_complexity
54         else
55             let s:flake8_max_complexity=""
56         endif
57
58         " perform the grep itself
59         let &grepformat="%f:%l:%c: %m\,%f:%l: %m"
60         let &grepprg=s:flake8_cmd.s:flake8_ignores.s:flake8_max_line_length.s:flake8_max_complexity
61         silent! grep! %
62
63         " restore grep settings
64         let &grepformat=l:old_gfm
65         let &grepprg=l:old_gp
66
67         " open cwindow
68         let has_results=getqflist() != []
69         if has_results
70             execute 'belowright copen'
71             setlocal wrap
72             nnoremap <buffer> <silent> c :cclose<CR>
73             nnoremap <buffer> <silent> q :cclose<CR>
74         endif
75
76         set nolazyredraw
77         redraw!
78
79         if has_results == 0
80             " Show OK status
81             hi Green ctermfg=green
82             echohl Green
83             echon "Flake8 check OK"
84             echohl
85         endif
86     endfunction
87 endif
88
89 " Add mappings, unless the user didn't want this.
90 " The default mapping is registered under to <F7> by default, unless the user
91 " remapped it already (or a mapping exists already for <F7>)
92 if !exists("no_plugin_maps") && !exists("no_flake8_maps")
93     if !hasmapto('Flake8(')
94         noremap <buffer> <F7> :call Flake8()<CR>
95     endif
96 endif