Fast and Highly Extensible Vim script Language Lint implemented in Python.
Python Vim script
Latest commit 93e8753 Jun 29, 2018

README.rst

logo

Development Status Latest Version Supported Python versions Supported Python implementations Build Status

Vint is a Vim script Language Lint. The goal to reach for Vint is:

  • Highly extensible
  • Highly customizable
  • High performance

But now, Vint is under development. We hope you develop a policy to help us.

Quick start

You can install with pip.

$ pip install vim-vint

You can use Vint with scrooloose/syntastic:

let g:syntastic_vim_checkers = ['vint']

Configure

Vint will read config files on the following priority order:

  • User config:
  • e.g. ~/.vintrc.yaml (the filename can be .vintrc.yml or .vintrc)
  • Project config:
  • e.g. path/to/proj/.vintrc.yaml (the filename can be .vintrc.yml or .vintrc)
  • Command line config:
  • e.g. $ vint --error, $ vint --max-violations 10
  • Comment config (highest priority):
  • e.g. " vint: -ProhibitAbbreviationOption +ProhibitSetNoCompatible

You can see all options on Wiki.

The default configuration is defined in default_config.yaml.

User config

You can configure global Vint config by ~/.vintrc.yaml as following:

cmdargs:
  # Checking more strictly
  severity: style_problem

  # Enable coloring
  color: true

  # Enable Neovim syntax
  env:
    neovim: true

policies:
  # Disable a violation
  ProhibitSomethingEvil:
    enabled: false

  # Enable a violation
  ProhibitSomethingBad:
    enabled: true

You can see all policy names on Vint linting policy summary.

Project config

You can configure project local Vint config by .vintrc.yaml as following:

cmdargs:
  # Checking more strictly
  severity: style_problem

  # Enable coloring
  color: true

  # Enable Neovim syntax
  env:
    neovim: true

policies:
  # Disable a violation
  ProhibitSomethingEvil:
    enabled: false

  # Enable a violation
  ProhibitSomethingBad:
    enabled: true

You can see all policy names on Vint linting policy summary.

Command line config

You can configure linting severity, max errors, ... as following:

$ vint --color --style ~/.vimrc

And you can see all available options by using --help:

$ vint --help
usage: vint [-h] [-v] [-V] [-e] [-w] [-s] [-m MAX_VIOLATIONS] [-c]
            [--no-color] [-j] [-t] [--enable-neovim] [-f FORMAT]
            [--stdin-alt-path STDIN_ALT_PATH]
            [files [files ...]]

Lint Vim script

positional arguments:
  files                 file or directory path to lint

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -V, --verbose         output verbose message
  -e, --error           report only errors
  -w, --warning         report errors and warnings
  -s, --style-problem   report errors, warnings and style problems
  -m MAX_VIOLATIONS, --max-violations MAX_VIOLATIONS
                        limit max violations count
  -c, --color           colorize output when possible
  --no-color            do not colorize output
  -j, --json            output json style
  -t, --stat            output statistic info
  --enable-neovim       enable Neovim syntax
  -f FORMAT, --format FORMAT
                        set output format
  --stdin-display-name STDIN_DISPLAY_NAME
                        specify a file path that is used for reporting when
                        linting standard inputs

Comment config

You can enable/disable linting policies by a comment as following:

" vint: -ProhibitAbbreviationOption

let s:save_cpo = &cpo
set cpo&vim

" vint: +ProhibitAbbreviationOption

" do something...

" vint: -ProhibitAbbreviationOption

let &cpo = s:save_cpo
unlet s:save_cpo

And you can use line config comments. It can enable/disable linting policies in only one line by the postfix comment:

" vint: next-line -ProhibitUnusedVariable
let s:foobar = 'x'
echo s:{'foo' . 'bar'}

This syntax is: " vint: [next-line] [+-]<PolicyName> [+-]<PolicyName> .... You can see all policy names on Vint linting policy summary.

Code health

Coverage Status Code Health Dependency Status

License

MIT

Acknowledgement