]> 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:

5310e3bb86c2d17d0db4ed2e823ead48b9a412c5
[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         let l:old_shellpipe=&shellpipe
34
35         " write any changes before continuing
36         if &readonly == 0
37             update
38         endif
39
40         " read config
41         if exists("g:flake8_builtins")
42             let s:flake8_builtins_opt=" --builtins=".g:flake8_builtins
43         else
44             let s:flake8_builtins_opt=""
45         endif
46
47         if exists("g:flake8_ignore")
48             let s:flake8_ignores=" --ignore=".g:flake8_ignore
49         else
50             let s:flake8_ignores=""
51         endif
52
53         if exists("g:flake8_max_line_length")
54             let s:flake8_max_line_length=" --max-line-length=".g:flake8_max_line_length
55         else
56             let s:flake8_max_line_length=""
57         endif
58
59         if exists("g:flake8_max_complexity")
60             let s:flake8_max_complexity=" --max-complexity=".g:flake8_max_complexity
61         else
62             let s:flake8_max_complexity=""
63         endif
64
65         if exists("g:flake8_quickfix_location")
66             let s:flake8_quickfix_location=g:flake8_quickfix_location
67         else
68             let s:flake8_quickfix_location="belowright"
69         endif
70
71         " set shellpipe to > instead of tee (suppressing output)
72         set shellpipe=>
73
74         " perform the grep itself
75         let &grepformat="%f:%l:%c: %m\,%f:%l: %m"
76         let &grepprg=s:flake8_cmd.s:flake8_builtins_opt.s:flake8_ignores.s:flake8_max_line_length.s:flake8_max_complexity
77         silent! grep! "%"
78
79         " restore grep settings
80         let &grepformat=l:old_gfm
81         let &grepprg=l:old_gp
82         let &shellpipe=l:old_shellpipe
83
84         " open cwindow
85         let has_results=getqflist() != []
86         if has_results
87             execute s:flake8_quickfix_location." copen"
88             setlocal wrap
89             nnoremap <buffer> <silent> c :cclose<CR>
90             nnoremap <buffer> <silent> q :cclose<CR>
91         endif
92
93         set nolazyredraw
94         redraw!
95
96         if has_results == 0
97             " Show OK status
98             hi Green ctermfg=green
99             echohl Green
100             echon "Flake8 check OK"
101             echohl
102         endif
103     endfunction
104 endif
105
106 " Add mappings, unless the user didn't want this.
107 " The default mapping is registered under to <F7> by default, unless the user
108 " remapped it already (or a mapping exists already for <F7>)
109 if !exists("no_plugin_maps") && !exists("no_flake8_maps")
110     if !hasmapto('Flake8(')
111         noremap <buffer> <F7> :call Flake8()<CR>
112     endif
113 endif