Fetching contributors…
Cannot retrieve contributors at this time
83 lines (72 sloc) 3.99 KB
This is a mirror of
In order to achieve consistent indentation, you need to agree on the
indentation width (e.g. 2, 4 or 8 spaces), and the indentation method (only
tabs, only spaces, or a mix of tabs and spaces that minimizes the number of
spaces and is called 'softtabstop' in Vim). Unfortunately, different people
use different editors and cannot agree on "the right" width and method.
Consistency is important, though, to make the text look the same in different
editors and on printouts. If any editor inadvertently converts tabs and
spaces, version control and diff'ing will be much harder to do.
The IndentConsistencyCop examines the indent of the buffer and analyzes the
used indent widths and methods. If there are conflicting ones or if bad
combinations of tabs and spaces are found, it alerts you and offers help in
locating the offenders - just like a friendly policeman:
Found inconsistent indentation in this buffer; generated from these
conflicting settings:
- tabstop (1838 of 3711 lines) <- buffer setting
- 4 spaces (33 of 3711 lines)
- bad mix of spaces and tabs (4 of 3711 lines)
[I]gnore, (H)ighlight wrong indents...: h
What kind of inconsistent indents do you want to highlight?
Not [b]uffer settings (sts4), Not best (g)uess (tab), Not (c)hosen
setting..., (I)llegal indents only: g
Marked 180 incorrect lines.
If the buffer contents are okay, the IndentConsistencyCop can evaluate whether
Vim's buffer settings are compatible with the indent used in the buffer. The
friendly cop offers to correct your buffer settings if you run the risk of
screwing up the indent consistency with your wrong buffer settings:
The buffer's indent settings are inconsistent with the used indent '8
spaces'; these settings must be changed:
- expandtab from 0 to 1
How do you want to deal with the inconsistency?
[I]gnore, (C)hange: c
The buffer settings have been changed: tabstop=8 softtabstop=0 shiftwidth=8
The IndentConsistencyCop is only concerned with the amount of whitespace from
column 1 to the first visible character; it does not check the alignment of
tables, equals signs in variable assignments, etc. Neither does it know any
specifics about programming languages, or your personal preferred indentation
- IndentConsistencyCopAutoCmds (vimscript #1691) complements this plugin. It
automatically triggers the IndentConsistencyCop for certain filetypes when
loading the buffer and optionally also on each write.
- Indent Finder (vimscript #513) is a Python script and Vim plugin that scans
any loaded buffer and configures the appropriate indent settings.
- yaifa.vim (vimscript #3096) is a port to vimscript of the above.
- detectindent.vim ( by Ciaran
McCreesh tries to auto-detect the indentation settings.
- GuessIndent (vimscript #4251) is based on detectindent.vim
- indentdetect.vim
by Eric Van Dewoestine performs a simple detection and can set defaults
based on the filespec.
- matchindent.vim (vimscript #4066) detects tabs, 2 and 4-space indents and
adapts the indent settings accordingly.
Start the examination of the current buffer or range via:
The triggering can be done automatically for configurable filetypes with the
autocmds defined in IndentConsistencyCopAutoCmds.vim (vimscript #1691).
If you chose to highlight incorrect indents, either re-execute the
IndentConsistencyCop to update the highlighting, or execute
to remove the highlightings.
If you just want to check a read-only file, or do not intend to modify the
file, you don't care if Vim's buffer settings are compatible with the used
indent. In this case, you can use
instead of :IndentConsistencyCop.