mirror of
https://github.com/gryf/.vim.git
synced 2025-12-17 11:30:29 +01:00
Zmiany, zmiany, zmiany. Wywalony taglist, w zamian dodany taglisttoo z projektu
eclim. Wywalone funckje PyLint, na rzecz kompilera, funkcja generuj¿ca bufor z outputem z pylint zosta¿a wrzucona do .vimrc (inne podej¿cie - banalnie proste i skuteczne). Uzupełniona lista GetLatestVimScripts, stosowne zmiany w .vimrc.
This commit is contained in:
127
compiler/pylint.vim
Normal file
127
compiler/pylint.vim
Normal file
@@ -0,0 +1,127 @@
|
||||
" Vim compiler file for Python
|
||||
" Compiler: Style checking tool for Python
|
||||
" Maintainer: Oleksandr Tymoshenko <gonzo@univ.kiev.ua>
|
||||
" Last Change: 2009 Apr 19
|
||||
" Version: 0.5
|
||||
" Contributors:
|
||||
" Artur Wroblewski
|
||||
" Menno
|
||||
"
|
||||
" Installation:
|
||||
" Drop pylint.vim in ~/.vim/compiler directory. Ensure that your PATH
|
||||
" environment variable includes the path to 'pylint' executable.
|
||||
"
|
||||
" Add the following line to the autocmd section of .vimrc
|
||||
"
|
||||
" autocmd FileType python compiler pylint
|
||||
"
|
||||
" Usage:
|
||||
" Pylint is called after a buffer with Python code is saved. QuickFix
|
||||
" window is opened to show errors, warnings and hints provided by Pylint.
|
||||
" Code rate calculated by Pylint is displayed at the bottom of the
|
||||
" window.
|
||||
"
|
||||
" Above is realized with :Pylint command. To disable calling Pylint every
|
||||
" time a buffer is saved put into .vimrc file
|
||||
"
|
||||
" let g:pylint_onwrite = 0
|
||||
"
|
||||
" Displaying code rate calculated by Pylint can be avoided by setting
|
||||
"
|
||||
" let g:pylint_show_rate = 0
|
||||
"
|
||||
" Openning of QuickFix window can be disabled with
|
||||
"
|
||||
" let g:pylint_cwindow = 0
|
||||
"
|
||||
" Of course, standard :make command can be used as in case of every
|
||||
" other compiler.
|
||||
"
|
||||
|
||||
|
||||
if exists('current_compiler')
|
||||
finish
|
||||
endif
|
||||
let current_compiler = 'pylint'
|
||||
|
||||
if !exists('g:pylint_onwrite')
|
||||
let g:pylint_onwrite = 1
|
||||
endif
|
||||
|
||||
if !exists('g:pylint_show_rate')
|
||||
let g:pylint_show_rate = 1
|
||||
endif
|
||||
|
||||
if !exists('g:pylint_cwindow')
|
||||
let g:pylint_cwindow = 1
|
||||
endif
|
||||
|
||||
if exists(':Pylint') != 2
|
||||
command Pylint :call Pylint(0)
|
||||
endif
|
||||
|
||||
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
|
||||
command -nargs=* CompilerSet setlocal <args>
|
||||
endif
|
||||
|
||||
" We should echo filename because pylint truncates .py
|
||||
" If someone know better way - let me know :)
|
||||
CompilerSet makeprg=(echo\ '[%]';\ pylint\ -r\ y\ %)
|
||||
|
||||
" We could omit end of file-entry, there is only one file
|
||||
" %+I... - include code rating information
|
||||
" %-G... - remove all remaining report lines from quickfix buffer
|
||||
CompilerSet efm=%+P[%f],%t:\ %#%l:%m,%Z,%+IYour\ code%m,%Z,%-G%.%#
|
||||
|
||||
if g:pylint_onwrite
|
||||
augroup python
|
||||
au!
|
||||
au BufWritePost * call Pylint(1)
|
||||
augroup end
|
||||
endif
|
||||
|
||||
function! Pylint(writing)
|
||||
if !a:writing && &modified
|
||||
" Save before running
|
||||
write
|
||||
endif
|
||||
|
||||
if has('win32') || has('win16') || has('win95') || has('win64')
|
||||
setlocal sp=>%s
|
||||
else
|
||||
setlocal sp=>%s\ 2>&1
|
||||
endif
|
||||
|
||||
" If check is executed by buffer write - do not jump to first error
|
||||
if !a:writing
|
||||
silent make
|
||||
else
|
||||
silent make!
|
||||
endif
|
||||
|
||||
if g:pylint_cwindow
|
||||
cwindow
|
||||
endif
|
||||
|
||||
call PylintEvaluation()
|
||||
|
||||
if g:pylint_show_rate
|
||||
echon 'code rate: ' b:pylint_rate ', prev: ' b:pylint_prev_rate
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! PylintEvaluation()
|
||||
let l:list = getqflist()
|
||||
let b:pylint_rate = '0.00'
|
||||
let b:pylint_prev_rate = '0.00'
|
||||
for l:item in l:list
|
||||
if l:item.type == 'I' && l:item.text =~ 'Your code has been rated'
|
||||
let l:re_rate = '\(-\?[0-9]\{1,2\}\.[0-9]\{2\}\)/'
|
||||
let b:pylint_rate = substitute(l:item.text, '.*rated at '.l:re_rate.'.*', '\1', 'g')
|
||||
" Only if there is information about previous run
|
||||
if l:item.text =~ 'previous run: '
|
||||
let b:pylint_prev_rate = substitute(l:item.text, '.*previous run: '.l:re_rate.'.*', '\1', 'g')
|
||||
endif
|
||||
endif
|
||||
endfor
|
||||
endfunction
|
||||
Reference in New Issue
Block a user