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

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