mirror of
https://github.com/gryf/pep8-vim.git
synced 2025-12-18 20:20:18 +01:00
Initial commit
This commit is contained in:
24
LICENSE
Normal file
24
LICENSE
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
Copyright (c) 2016, Roman Dobosz at al.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the organization nor the names of its contributors
|
||||||
|
may be used to endorse or promote products derived from this software
|
||||||
|
without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL ROMAN DOBOSZ BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
40
README.rst
Normal file
40
README.rst
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
Pep8-vim
|
||||||
|
========
|
||||||
|
|
||||||
|
This is simple vim plugin, which provide command ``:Pep8`` which check for PEP8_
|
||||||
|
rules on python code in current buffer.
|
||||||
|
|
||||||
|
Unlike any other available *vim-pep8* plugins, it doesn't parse output of
|
||||||
|
``pep8`` command line tool, but relies on ``pep8`` module, therefore ``pep8``
|
||||||
|
has to be present in the system using system package manager or ``pip``.
|
||||||
|
|
||||||
|
Although usable, this plugin is kind of deprecated in favor of pluggable
|
||||||
|
validators like Syntastic_.
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
To use this plugin either ``+python`` or ``+python3`` feature compiled in vim is
|
||||||
|
required. To check it, issue ``:version`` in vim instance and look for python
|
||||||
|
entries.
|
||||||
|
|
||||||
|
To install it, any kind of Vim package manager can be used, like NeoBundle_,
|
||||||
|
Pathogen_, Vundle_ or vim-plug_.
|
||||||
|
|
||||||
|
For manual installation, copy subdirectories from this repository to your
|
||||||
|
``~/.vim`` directory.
|
||||||
|
|
||||||
|
Now you'll have new command ``:Pep8`` which in case of any ``PEP8`` violation
|
||||||
|
will display quickfix window with appropriate errors.
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
This work is licensed on 3-clause BSD license. See LICENSE file for details.
|
||||||
|
|
||||||
|
.. _Pathogen: https://github.com/tpope/vim-pathogen
|
||||||
|
.. _Vundle: https://github.com/gmarik/Vundle.vim
|
||||||
|
.. _NeoBundle: https://github.com/Shougo/neobundle.vim
|
||||||
|
.. _vim-plug: https://github.com/junegunn/vim-plug
|
||||||
|
.. _PEP8: https://www.python.org/dev/peps/pep-0008
|
||||||
|
.. _Syntastic: https://github.com/vim-syntastic/syntastic
|
||||||
153
ftplugin/python/pep8_fn.vim
Normal file
153
ftplugin/python/pep8_fn.vim
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
" File: pep8_fn.vim
|
||||||
|
" Author: Roman 'gryf' Dobosz (gryf73 at gmail.com)
|
||||||
|
" Version: 1.1
|
||||||
|
" Last Modified: 2010-09-12
|
||||||
|
" Description: {{{
|
||||||
|
"
|
||||||
|
" Overview
|
||||||
|
" --------
|
||||||
|
" This plugin provides functionality to static checks for python files
|
||||||
|
" regarding PEP8 guidance[1] as ":Pep8" command.
|
||||||
|
"
|
||||||
|
" This function does not use pep8[2] command line utility, but relies on pep8
|
||||||
|
" module.
|
||||||
|
"
|
||||||
|
" This script uses python, therefore VIm should be compiled with python
|
||||||
|
" support. You can check it by issuing ":version" command, and search for
|
||||||
|
" "+python" inside features list.
|
||||||
|
"
|
||||||
|
" Couple of ideas was taken from pyflakes.vim[3] plugin.
|
||||||
|
"
|
||||||
|
" Installation
|
||||||
|
" ------------
|
||||||
|
" 1. Copy the pep8_fn.vim file to the $HOME/.vim/ftplugin/python or
|
||||||
|
" $HOME/vimfiles/ftplugin/python or $VIM/vimfiles/ftplugin/python
|
||||||
|
" directory. If python directory doesn't exists, it should be created.
|
||||||
|
" Refer to the following Vim help topics for more information about Vim
|
||||||
|
" plugins:
|
||||||
|
" :help add-plugin
|
||||||
|
" :help add-global-plugin
|
||||||
|
" :help runtimepath
|
||||||
|
" 2. It should be possible to import pep8 from python interpreter (it should
|
||||||
|
" report no error):
|
||||||
|
" >>> import pep8
|
||||||
|
" >>>
|
||||||
|
" If there are errors, install pep8 first. Simplest way to do it, is to
|
||||||
|
" use easy_install[4] shell command as a root:
|
||||||
|
" # easy_install pep8
|
||||||
|
" 3. Restart Vim.
|
||||||
|
" 4. You can now use the ":Pep8" which will examine current python buffer
|
||||||
|
" and open quickfix buffer with errors if any.
|
||||||
|
"
|
||||||
|
" [1] http://www.python.org/dev/peps/pep-0008/
|
||||||
|
" [2] http://pypi.python.org/pypi/pep8
|
||||||
|
" [3] http://www.vim.org/scripts/script.php?script_id=2441
|
||||||
|
" [4] http://pypi.python.org/pypi/setuptools
|
||||||
|
"
|
||||||
|
" }}}
|
||||||
|
|
||||||
|
let s:plugin_path = expand('<sfile>:p:h', 1)
|
||||||
|
|
||||||
|
if exists("b:did_pep8_plugin")
|
||||||
|
finish " only load once
|
||||||
|
else
|
||||||
|
let b:did_pep8_plugin = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:pep8_exclude")
|
||||||
|
let g:pep8_exclude = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! s:DiscoverPython()
|
||||||
|
if !exists('g:pep8_py_discovered')
|
||||||
|
if has('python')
|
||||||
|
let s:python_command = 'python'
|
||||||
|
elseif has('python3')
|
||||||
|
let s:python_command = 'python3'
|
||||||
|
else
|
||||||
|
echohl WarningMsg|echomsg
|
||||||
|
\ "PEP8 command cannot be initialized "
|
||||||
|
\ "no python support compiled in vim."|echohl None
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:pep8_py_discovered = 1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
if !exists("b:did_pep8_init")
|
||||||
|
let b:did_pep8_init = 0
|
||||||
|
|
||||||
|
if !has('python')
|
||||||
|
echoerr "pep8_fn.vim plugin requires Vim to be compiled with +python"
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
call s:DiscoverPython()
|
||||||
|
|
||||||
|
python << EOF
|
||||||
|
import vim
|
||||||
|
import sys
|
||||||
|
from StringIO import StringIO
|
||||||
|
|
||||||
|
try:
|
||||||
|
import pep8
|
||||||
|
except ImportError:
|
||||||
|
raise AssertionError('Error: pep8_fn.vim requires module pep8')
|
||||||
|
|
||||||
|
class VImPep8(object):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.fname = vim.current.buffer.name
|
||||||
|
self.bufnr = vim.current.buffer.number
|
||||||
|
self.output = []
|
||||||
|
self.exclude_list = vim.eval("g:pep8_exclude")
|
||||||
|
|
||||||
|
def reporter(self, lnum, col, text, check):
|
||||||
|
self.output.append([lnum, col, text])
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
pep8.process_options(['-r', vim.current.buffer.name])
|
||||||
|
checker = pep8.Checker(vim.current.buffer.name)
|
||||||
|
checker.report_error = self.reporter
|
||||||
|
checker.check_all()
|
||||||
|
self.process_output()
|
||||||
|
|
||||||
|
def process_output(self):
|
||||||
|
vim.command('call setqflist([])')
|
||||||
|
qf_list = []
|
||||||
|
qf_dict = {}
|
||||||
|
|
||||||
|
for line in self.output:
|
||||||
|
skip = False
|
||||||
|
for exclude_pattern in self.exclude_list:
|
||||||
|
if exclude_pattern in line[2]:
|
||||||
|
skip = True
|
||||||
|
break
|
||||||
|
if skip:
|
||||||
|
continue
|
||||||
|
qf_dict['bufnr'] = self.bufnr
|
||||||
|
qf_dict['lnum'] = line[0]
|
||||||
|
qf_dict['col'] = line[1]
|
||||||
|
qf_dict['text'] = line[2]
|
||||||
|
qf_dict['type'] = line[2][0]
|
||||||
|
qf_list.append(qf_dict)
|
||||||
|
qf_dict = {}
|
||||||
|
|
||||||
|
self.output = []
|
||||||
|
vim.command('call setqflist(%s)' % str(qf_list))
|
||||||
|
if qf_list:
|
||||||
|
vim.command('copen')
|
||||||
|
EOF
|
||||||
|
let b:did_pep8_init = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('*s:Pep8')
|
||||||
|
function s:Pep8()
|
||||||
|
python << EOF
|
||||||
|
VImPep8().run()
|
||||||
|
EOF
|
||||||
|
endfunction
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists(":Pep8")
|
||||||
|
command Pep8 call s:Pep8()
|
||||||
|
endif
|
||||||
Reference in New Issue
Block a user