alternative html indent script
Vim script


This is a mirror of

This script is based on the distributed indent scripts for HTML (and CSS).  The original script becomes very slow when indenting more than a few lines, thus here is an improvement.

Customization:  Variables you can set in the vimrc.  Given values are examples to change the defaults.

  Note: This applies to v0.6 (!).  Earlier version used :IndHtmlLocal for customization.  Details can always be found in the script header.

  You can set the indent for the first line after <script> and <style> "block tags" (default "zero"):

      :let g:html_indent_script1 = "inc"
      :let g:html_indent_style1 = "inc"

      "zero"	zero indent
      "auto"	auto indent (same indent as the blocktag)
      "inc"	auto indent + one indent step

  The following <tags> increase the indent (for what follows) per default (taken from the original script, but slightly modified):
      a, abbr, acronym, address, b, bdo, big, blockquote, button, caption, center, cite, code, colgroup, del, dfn, dir, div, dl, em, fieldset, font, form, frameset, h1, h2, h3, h4, h5, h6, i, iframe, ins, kbd, label, legend, map, menu, noframes, noscript, object, ol, optgroup, q, s, samp, select, small, span, strong, sub, sup, table, textarea, title, tt, u, ul, var, th, td, tr, tfoot, thead
      (added with v0.8): area, article, aside, audio, bdi, canvas, command, datalist, details, embed, figure, footer, header, group, keygen, mark, math, meter, nav, output, progress, ruby, section, svg, texture, time, video, wbr, text

  You can add further tags with

      :let g:html_indent_inctags = "html,body,head,tbody"

      " the original script uses the g:html_indent_strict variable to include these tags

  You can remove tags with

      :let g:html_indent_autotags = "th,td,tr,tfoot,thead"

      " the original script uses the g:html_indent_strict_table variable to include these tags

  Default value is empty for both variables.  The default tags that increase indent are defined once per session only.

Problems and Bugs:

  - still no indent rules for attributes spanning several lines
  - sometimes cindent() thinks it is better to use zero indent for what follows ...
  - some tags increase indent per default, but their closing tag is optional, e.g. <td> -- the script cannot detect missing closing tags

Suggestions, bug reports welcome (I'm not writing HTML regularly).

2013 Jun 13: Vim 7.3.1180 or later includes the latest version of this script.