Move footer content down to footer
authorGreg Hurrell <greg@hurrell.net>
Mon, 13 Jun 2016 14:26:09 +0000 (07:26 -0700)
committerGreg Hurrell <greg@hurrell.net>
Mon, 13 Jun 2016 14:26:09 +0000 (07:26 -0700)
tests/fixtures/integration/loupe/golden/ast.golden
tests/fixtures/integration/loupe/golden/markdown.golden
tests/fixtures/integration/loupe/golden/plaintext.golden
tests/fixtures/integration/loupe/input/plugin/loupe.vim

index ba376076976241b80fd1c8293974efd6fe309657..490dcb0e2d300f84d4319509c1cd042131071f2c 100644 (file)
@@ -4,6 +4,8 @@ Project
       , TOC
           [ "Intro"
           , "Installation"
+          , "Mappings"
+          , "Options"
           , "Overrides"
           , "Related"
           , "Website"
@@ -11,8 +13,6 @@ Project
           , "Development"
           , "Authors"
           , "History"
-          , "Mappings"
-          , "Options"
           ]
       ]
   , HeadingAnnotation "Intro"
@@ -662,1776 +662,1777 @@ Project
       , Plaintext "with:"
       ]
   , Fenced [ ":call pathogen#helptags()" ]
-  , HeadingAnnotation "Overrides"
-  , Paragraph
-      [ Plaintext "Loupe"
-      , Whitespace
-      , Plaintext "sets"
-      , Whitespace
-      , Plaintext "a"
-      , Whitespace
-      , Plaintext "number"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "search-related"
-      , Whitespace
-      , Plaintext "Vim"
-      , Whitespace
-      , Plaintext "settings"
-      , Whitespace
-      , Plaintext "to"
-      , Whitespace
-      , Plaintext "reasonable"
-      , Whitespace
-      , Plaintext "defaults"
-      , Whitespace
-      , Plaintext "in"
-      , Whitespace
-      , Plaintext "order"
-      , Whitespace
-      , Plaintext "to"
-      , Whitespace
-      , Plaintext "provide"
-      , Whitespace
-      , Plaintext "a"
-      , Whitespace
-      , Plaintext "good"
-      , Whitespace
-      , Plaintext "\"out"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "box\""
-      , Whitespace
-      , Plaintext "experience:"
-      ]
-  , IndentAnnotation
-  , LinkTargets [ "loupe-history-override" ]
-  , Paragraph [ Plaintext "'history'" ]
-  , Paragraph
-      [ Plaintext "Increased"
-      , Whitespace
-      , Plaintext "to"
-      , Whitespace
-      , Plaintext "1000,"
-      , Whitespace
-      , Plaintext "to"
-      , Whitespace
-      , Plaintext "increase"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "number"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "previous"
-      , Whitespace
-      , Plaintext "searches"
-      , Whitespace
-      , Plaintext "remembered."
-      , Whitespace
-      , Plaintext "Note"
-      , Whitespace
-      , Plaintext "that"
-      , Whitespace
-      , Plaintext "Loupe"
-      , Whitespace
-      , Plaintext "only"
-      , Whitespace
-      , Plaintext "applies"
-      , Whitespace
-      , Plaintext "this"
-      , Whitespace
-      , Plaintext "setting"
-      , Whitespace
-      , Plaintext "if"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "current"
-      , Whitespace
-      , Plaintext "value"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "'history'"
-      , Whitespace
-      , Plaintext "is"
-      , Whitespace
-      , Plaintext "less"
-      , Whitespace
-      , Plaintext "than"
-      , Whitespace
-      , Plaintext "1000."
-      ]
-  , LinkTargets [ "loupe-hlsearch-override" ]
-  , Paragraph [ Plaintext "'hlsearch'" ]
-  , Paragraph
-      [ Plaintext "Turned"
-      , Whitespace
-      , Plaintext "on"
-      , Whitespace
-      , Plaintext "(when"
-      , Whitespace
-      , Plaintext "there"
-      , Whitespace
-      , Plaintext "is"
-      , Whitespace
-      , Plaintext "a"
-      , Whitespace
-      , Plaintext "previous"
-      , Whitespace
-      , Plaintext "search"
-      , Whitespace
-      , Plaintext "pattern,"
-      , Whitespace
-      , Plaintext "highlight"
-      , Whitespace
-      , Plaintext "all"
-      , Whitespace
-      , Plaintext "its"
-      , Whitespace
-      , Plaintext "matches)."
-      ]
-  , LinkTargets [ "loupe-incsearch-override" ]
-  , Paragraph [ Plaintext "'incsearch'" ]
-  , Paragraph
-      [ Plaintext "Turned"
-      , Whitespace
-      , Plaintext "on"
-      , Whitespace
-      , Plaintext "(while"
-      , Whitespace
-      , Plaintext "typing"
-      , Whitespace
-      , Plaintext "a"
-      , Whitespace
-      , Plaintext "search"
-      , Whitespace
-      , Plaintext "command,"
-      , Whitespace
-      , Plaintext "show"
-      , Whitespace
-      , Plaintext "where"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "pattern"
-      , Whitespace
-      , Plaintext "matches,"
-      , Whitespace
-      , Plaintext "as"
-      , Whitespace
-      , Plaintext "it"
-      , Whitespace
-      , Plaintext "was"
-      , Whitespace
-      , Plaintext "typed"
-      , Whitespace
-      , Plaintext "so"
-      , Whitespace
-      , Plaintext "far)."
-      ]
-  , LinkTargets [ "loupe-ignorecase-override" ]
-  , Paragraph [ Plaintext "'ignorecase'" ]
-  , Paragraph
-      [ Plaintext "Turned"
-      , Whitespace
-      , Plaintext "on"
-      , Whitespace
-      , Plaintext "(to"
-      , Whitespace
-      , Plaintext "ignore"
-      , Whitespace
-      , Plaintext "case"
-      , Whitespace
-      , Plaintext "in"
-      , Whitespace
-      , Plaintext "search"
-      , Whitespace
-      , Plaintext "patterns)."
-      ]
-  , LinkTargets [ "loupe-shortmess-override" ]
-  , Paragraph [ Plaintext "'shortmess'" ]
-  , Paragraph
-      [ Plaintext "Adds"
-      , Whitespace
-      , Plaintext "\"s\","
-      , Whitespace
-      , Plaintext "which"
-      , Whitespace
-      , Plaintext "suppresses"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "display"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "\"search"
-      , Whitespace
-      , Plaintext "hit"
-      , Whitespace
-      , Plaintext "BOTTOM,"
-      , Whitespace
-      , Plaintext "continuing"
-      , Whitespace
-      , Plaintext "at"
-      , Whitespace
-      , Plaintext "TOP\""
-      , Whitespace
-      , Plaintext "and"
-      , Whitespace
-      , Plaintext "\"search"
-      , Whitespace
-      , Plaintext "hit"
-      , Whitespace
-      , Plaintext "TOP,"
-      , Whitespace
-      , Plaintext "continuing"
-      , Whitespace
-      , Plaintext "at"
-      , Whitespace
-      , Plaintext "BOTTOM\""
-      , Whitespace
-      , Plaintext "messages."
-      ]
-  , LinkTargets [ "loupe-smartcase-override" ]
-  , Paragraph [ Plaintext "'smartcase'" ]
-  , Paragraph
-      [ Plaintext "Turned"
-      , Whitespace
-      , Plaintext "on"
-      , Whitespace
-      , Plaintext "(overrides"
-      , Whitespace
-      , Plaintext "'ignorecase',"
-      , Whitespace
-      , Plaintext "making"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "search"
-      , Whitespace
-      , Plaintext "pattern"
-      , Whitespace
-      , Plaintext "case-sensitive"
-      , Whitespace
-      , Plaintext "whenever"
-      , Whitespace
-      , Plaintext "it"
-      , Whitespace
-      , Plaintext "containers"
-      , Whitespace
-      , Plaintext "uppercase"
-      , Whitespace
-      , Plaintext "characters)."
-      ]
-  , DedentAnnotation
-  , Paragraph
-      [ Plaintext "To"
-      , Whitespace
-      , Plaintext "override"
-      , Whitespace
-      , Plaintext "any"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "these"
-      , Whitespace
-      , Plaintext "choices,"
-      , Whitespace
-      , Plaintext "you"
-      , Whitespace
-      , Plaintext "can"
-      , Whitespace
-      , Plaintext "place"
-      , Whitespace
-      , Plaintext "overrides"
-      , Whitespace
-      , Plaintext "in"
-      , Whitespace
-      , Plaintext "an"
-      , Whitespace
-      , Link "after-directory"
-      , Whitespace
-      , Plaintext "(ie."
-      , Whitespace
-      , Code "~/.vim/after/plugin/loupe.vim"
-      , Plaintext ")."
-      , Whitespace
-      , Plaintext "For"
-      , Whitespace
-      , Plaintext "example:"
-      ]
-  , Fenced
-      [ " \" Override Loupe's 'history' setting from 1000 to 10000."
-      , " set history=10000"
-      , ""
-      , " \" Reset Loupe's 'incsearch' back to Vim default."
-      , " set incsearch&vim"
-      , ""
-      , " \" Remove unwanted 's' from 'shortmess'."
-      , " set shortmess-=s"
-      ]
-  , HeadingAnnotation "Related"
-  , Paragraph
-      [ Plaintext "Just"
-      , Whitespace
-      , Plaintext "as"
-      , Whitespace
-      , Plaintext "Loupe"
-      , Whitespace
-      , Plaintext "aims"
-      , Whitespace
-      , Plaintext "to"
-      , Whitespace
-      , Plaintext "improve"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "within-file"
-      , Whitespace
-      , Plaintext "search"
-      , Whitespace
-      , Plaintext "experience,"
-      , Whitespace
-      , Plaintext "Ferret"
-      , Whitespace
-      , Plaintext "does"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "same"
-      , Whitespace
-      , Plaintext "for"
-      , Whitespace
-      , Plaintext "multi-file"
-      , Whitespace
-      , Plaintext "searching"
-      , Whitespace
-      , Plaintext "and"
-      , Whitespace
-      , Plaintext "replacing:"
-      ]
-  , List
-      [ ListItem [ Plaintext "https://github.com/wincent/ferret" ] ]
-  , HeadingAnnotation "Website"
-  , Paragraph
-      [ Plaintext "The"
-      , Whitespace
-      , Plaintext "official"
-      , Whitespace
-      , Plaintext "Loupe"
-      , Whitespace
-      , Plaintext "source"
-      , Whitespace
-      , Plaintext "code"
-      , Whitespace
-      , Plaintext "repo"
-      , Whitespace
-      , Plaintext "is"
-      , Whitespace
-      , Plaintext "at:"
-      ]
-  , List
-      [ ListItem [ Plaintext "http://git.wincent.com/loupe.git" ] ]
-  , Paragraph
-      [ Plaintext "A"
-      , Whitespace
-      , Plaintext "mirror"
-      , Whitespace
-      , Plaintext "exists"
-      , Whitespace
-      , Plaintext "at:"
-      ]
-  , List
-      [ ListItem [ Plaintext "https://github.com/wincent/loupe" ] ]
-  , Paragraph
-      [ Plaintext "Official"
-      , Whitespace
-      , Plaintext "releases"
-      , Whitespace
-      , Plaintext "are"
-      , Whitespace
-      , Plaintext "listed"
-      , Whitespace
-      , Plaintext "at:"
-      ]
-  , List
-      [ ListItem
-          [ Plaintext "http://www.vim.org/scripts/script.php?script_id=5215"
-          ]
-      ]
-  , HeadingAnnotation "License"
-  , Paragraph
-      [ Plaintext "Copyright"
-      , Whitespace
-      , Plaintext "2015-present"
-      , Whitespace
-      , Plaintext "Greg"
-      , Whitespace
-      , Plaintext "Hurrell."
-      , Whitespace
-      , Plaintext "All"
-      , Whitespace
-      , Plaintext "rights"
-      , Whitespace
-      , Plaintext "reserved."
-      ]
-  , Paragraph
-      [ Plaintext "Redistribution"
-      , Whitespace
-      , Plaintext "and"
-      , Whitespace
-      , Plaintext "use"
-      , Whitespace
-      , Plaintext "in"
-      , Whitespace
-      , Plaintext "source"
-      , Whitespace
-      , Plaintext "and"
-      , Whitespace
-      , Plaintext "binary"
-      , Whitespace
-      , Plaintext "forms,"
-      , Whitespace
-      , Plaintext "with"
-      , Whitespace
-      , Plaintext "or"
-      , Whitespace
-      , Plaintext "without"
-      , Whitespace
-      , Plaintext "modification,"
-      , Whitespace
-      , Plaintext "are"
-      , Whitespace
-      , Plaintext "permitted"
-      , Whitespace
-      , Plaintext "provided"
-      , Whitespace
-      , Plaintext "that"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "following"
-      , Whitespace
-      , Plaintext "conditions"
-      , Whitespace
-      , Plaintext "are"
-      , Whitespace
-      , Plaintext "met:"
-      ]
-  , Paragraph
-      [ Plaintext "1."
-      , Whitespace
-      , Plaintext "Redistributions"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "source"
-      , Whitespace
-      , Plaintext "code"
-      , Whitespace
-      , Plaintext "must"
-      , Whitespace
-      , Plaintext "retain"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "above"
-      , Whitespace
-      , Plaintext "copyright"
-      , Whitespace
-      , Plaintext "notice,"
-      , Whitespace
-      , Plaintext "this"
-      , Whitespace
-      , Plaintext "list"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "conditions"
-      , Whitespace
-      , Plaintext "and"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "following"
-      , Whitespace
-      , Plaintext "disclaimer."
-      ]
-  , Paragraph
-      [ Plaintext "2."
-      , Whitespace
-      , Plaintext "Redistributions"
-      , Whitespace
-      , Plaintext "in"
-      , Whitespace
-      , Plaintext "binary"
-      , Whitespace
-      , Plaintext "form"
-      , Whitespace
-      , Plaintext "must"
-      , Whitespace
-      , Plaintext "reproduce"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "above"
-      , Whitespace
-      , Plaintext "copyright"
-      , Whitespace
-      , Plaintext "notice,"
-      , Whitespace
-      , Plaintext "this"
-      , Whitespace
-      , Plaintext "list"
-      , Whitespace
-      , Plaintext "of"
-      , Whitespace
-      , Plaintext "conditions"
-      , Whitespace
-      , Plaintext "and"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "following"
-      , Whitespace
-      , Plaintext "disclaimer"
-      , Whitespace
-      , Plaintext "in"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "documentation"
-      , Whitespace
-      , Plaintext "and/or"
-      , Whitespace
-      , Plaintext "other"
-      , Whitespace
-      , Plaintext "materials"
-      , Whitespace
-      , Plaintext "provided"
-      , Whitespace
-      , Plaintext "with"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Plaintext "distribution."
-      ]
-  , Paragraph
-      [ Plaintext "THIS"
-      , Whitespace
-      , Plaintext "SOFTWARE"
-      , Whitespace
-      , Plaintext "IS"
-      , Whitespace
-      , Plaintext "PROVIDED"
-      , Whitespace
-      , Plaintext "BY"
-      , Whitespace
-      , Plaintext "THE"
-      , Whitespace
-      , Plaintext "COPYRIGHT"
-      , Whitespace
-      , Plaintext "HOLDERS"
-      , Whitespace
-      , Plaintext "AND"
-      , Whitespace
-      , Plaintext "CONTRIBUTORS"
-      , Whitespace
-      , Plaintext "\"AS"
-      , Whitespace
-      , Plaintext "IS\""
-      , Whitespace
-      , Plaintext "AND"
-      , Whitespace
-      , Plaintext "ANY"
-      , Whitespace
-      , Plaintext "EXPRESS"
-      , Whitespace
-      , Plaintext "OR"
-      , Whitespace
-      , Plaintext "IMPLIED"
-      , Whitespace
-      , Plaintext "WARRANTIES,"
-      , Whitespace
-      , Plaintext "INCLUDING,"
-      , Whitespace
-      , Plaintext "BUT"
-      , Whitespace
-      , Plaintext "NOT"
-      , Whitespace
-      , Plaintext "LIMITED"
-      , Whitespace
-      , Plaintext "TO,"
-      , Whitespace
-      , Plaintext "THE"
-      , Whitespace
-      , Plaintext "IMPLIED"
-      , Whitespace
-      , Plaintext "WARRANTIES"
-      , Whitespace
-      , Plaintext "OF"
-      , Whitespace
-      , Plaintext "MERCHANTABILITY"
-      , Whitespace
-      , Plaintext "AND"
-      , Whitespace
-      , Plaintext "FITNESS"
-      , Whitespace
-      , Plaintext "FOR"
-      , Whitespace
-      , Plaintext "A"
-      , Whitespace
-      , Plaintext "PARTICULAR"
-      , Whitespace
-      , Plaintext "PURPOSE"
-      , Whitespace
-      , Plaintext "ARE"
-      , Whitespace
-      , Plaintext "DISCLAIMED."
-      , Whitespace
-      , Plaintext "IN"
-      , Whitespace
-      , Plaintext "NO"
-      , Whitespace
-      , Plaintext "EVENT"
-      , Whitespace
-      , Plaintext "SHALL"
-      , Whitespace
-      , Plaintext "THE"
-      , Whitespace
-      , Plaintext "COPYRIGHT"
-      , Whitespace
-      , Plaintext "HOLDERS"
-      , Whitespace
-      , Plaintext "OR"
-      , Whitespace
-      , Plaintext "CONTRIBUTORS"
-      , Whitespace
-      , Plaintext "BE"
-      , Whitespace
-      , Plaintext "LIABLE"
-      , Whitespace
-      , Plaintext "FOR"
-      , Whitespace
-      , Plaintext "ANY"
-      , Whitespace
-      , Plaintext "DIRECT,"
-      , Whitespace
-      , Plaintext "INDIRECT,"
-      , Whitespace
-      , Plaintext "INCIDENTAL,"
-      , Whitespace
-      , Plaintext "SPECIAL,"
-      , Whitespace
-      , Plaintext "EXEMPLARY,"
-      , Whitespace
-      , Plaintext "OR"
-      , Whitespace
-      , Plaintext "CONSEQUENTIAL"
-      , Whitespace
-      , Plaintext "DAMAGES"
-      , Whitespace
-      , Plaintext "(INCLUDING,"
-      , Whitespace
-      , Plaintext "BUT"
-      , Whitespace
-      , Plaintext "NOT"
-      , Whitespace
-      , Plaintext "LIMITED"
-      , Whitespace
-      , Plaintext "TO,"
-      , Whitespace
-      , Plaintext "PROCUREMENT"
-      , Whitespace
-      , Plaintext "OF"
-      , Whitespace
-      , Plaintext "SUBSTITUTE"
-      , Whitespace
-      , Plaintext "GOODS"
-      , Whitespace
-      , Plaintext "OR"
-      , Whitespace
-      , Plaintext "SERVICES;"
-      , Whitespace
-      , Plaintext "LOSS"
-      , Whitespace
-      , Plaintext "OF"
-      , Whitespace
-      , Plaintext "USE,"
-      , Whitespace
-      , Plaintext "DATA,"
-      , Whitespace
-      , Plaintext "OR"
-      , Whitespace
-      , Plaintext "PROFITS;"
-      , Whitespace
-      , Plaintext "OR"
-      , Whitespace
-      , Plaintext "BUSINESS"
-      , Whitespace
-      , Plaintext "INTERRUPTION)"
-      , Whitespace
-      , Plaintext "HOWEVER"
-      , Whitespace
-      , Plaintext "CAUSED"
-      , Whitespace
-      , Plaintext "AND"
-      , Whitespace
-      , Plaintext "ON"
-      , Whitespace
-      , Plaintext "ANY"
-      , Whitespace
-      , Plaintext "THEORY"
-      , Whitespace
-      , Plaintext "OF"
-      , Whitespace
-      , Plaintext "LIABILITY,"
-      , Whitespace
-      , Plaintext "WHETHER"
-      , Whitespace
-      , Plaintext "IN"
-      , Whitespace
-      , Plaintext "CONTRACT,"
-      , Whitespace
-      , Plaintext "STRICT"
-      , Whitespace
-      , Plaintext "LIABILITY,"
-      , Whitespace
-      , Plaintext "OR"
-      , Whitespace
-      , Plaintext "TORT"
-      , Whitespace
-      , Plaintext "(INCLUDING"
-      , Whitespace
-      , Plaintext "NEGLIGENCE"
-      , Whitespace
-      , Plaintext "OR"
-      , Whitespace
-      , Plaintext "OTHERWISE)"
-      , Whitespace
-      , Plaintext "ARISING"
-      , Whitespace
-      , Plaintext "IN"
-      , Whitespace
-      , Plaintext "ANY"
-      , Whitespace
-      , Plaintext "WAY"
-      , Whitespace
-      , Plaintext "OUT"
-      , Whitespace
-      , Plaintext "OF"
-      , Whitespace
-      , Plaintext "THE"
-      , Whitespace
-      , Plaintext "USE"
-      , Whitespace
-      , Plaintext "OF"
-      , Whitespace
-      , Plaintext "THIS"
-      , Whitespace
-      , Plaintext "SOFTWARE,"
-      , Whitespace
-      , Plaintext "EVEN"
-      , Whitespace
-      , Plaintext "IF"
-      , Whitespace
-      , Plaintext "ADVISED"
-      , Whitespace
-      , Plaintext "OF"
-      , Whitespace
-      , Plaintext "THE"
-      , Whitespace
-      , Plaintext "POSSIBILITY"
-      , Whitespace
-      , Plaintext "OF"
-      , Whitespace
-      , Plaintext "SUCH"
-      , Whitespace
-      , Plaintext "DAMAGE."
+  , Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = True
+              , functionName = "loupe#private#very_magic_slash"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "abort" ]
+              , functionBody =
+                  [ GenericStatement "if getcmdtype() != ':'"
+                  , GenericStatement "return '/'"
+                  , GenericStatement "endif"
+                  , LetStatement { letLexpr = "l:pos" , letValue = "getcmdpos()" }
+                  , LetStatement { letLexpr = "l:cmd" , letValue = "getcmdline()" }
+                  , GenericStatement "if len(l:cmd) + 1 != l:pos"
+                  , GenericStatement "return '/'"
+                  , GenericStatement "endif"
+                  , GenericStatement "while 1"
+                  , LetStatement
+                      { letLexpr = "l:stripped" , letValue = "s:strip_ranges(l:cmd)" }
+                  , GenericStatement "if l:stripped ==# l:cmd"
+                  , GenericStatement "break"
+                  , GenericStatement "else"
+                  , LetStatement { letLexpr = "l:cmd" , letValue = "l:stripped" }
+                  , GenericStatement "endif"
+                  , GenericStatement "endwhile"
+                  , GenericStatement "if index(['g', 's', 'v'], l:cmd) != -1"
+                  , GenericStatement "return loupe#private#prepare_highlight('/\\v')"
+                  , GenericStatement "endif"
+                  , GenericStatement "return '/'"
+                  ]
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "s:strip_ranges"
+              , functionArguments = ArgumentList [ Argument "cmdline" ]
+              , functionAttributes = []
+              , functionBody =
+                  [ LetStatement { letLexpr = "l:cmdline" , letValue = "a:cmdline" }
+                  , LetStatement
+                      { letLexpr = "l:modifier" , letValue = "'\\([+-]\\d*\\)*'" }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^\\d\\+' . l:modifier, '', '') \" line number"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^\\.' . l:modifier, '', '') \" current line"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^$' . l:modifier, '', '') \" last line in file"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^%' . l:modifier, '', '') \" entire file"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, \"^'[a-z]\\\\c\" . l:modifier, '', '') \" mark t (or T)"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, \"^'[<>]\" . l:modifier, '', '') \" visual selection marks"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^/[^/]\\+/' . l:modifier, '', '') \" /{pattern}/"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^?[^?]\\+?' . l:modifier, '', '') \" ?{pattern}?"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^\\\\/' . l:modifier, '', '') \" \\/ (next match of previous pattern)"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^\\\\?' . l:modifier, '', '') \" \\? (last match of previous pattern)"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue =
+                          "substitute(l:cmdline, '^\\\\&' . l:modifier, '', '') \" \\& (last match of previous substitution)"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue = "substitute(l:cmdline, '^,', '', '') \" , (separator)"
+                      }
+                  , LetStatement
+                      { letLexpr = "l:cmdline"
+                      , letValue = "substitute(l:cmdline, '^;', '', '') \" ; (separator)"
+                      }
+                  , GenericStatement "return l:cmdline"
+                  ]
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "loupe#private#prepare_highlight"
+              , functionArguments = ArgumentList [ Argument "result" ]
+              , functionAttributes = [ "abort" ]
+              , functionBody =
+                  [ GenericStatement "if has('autocmd')"
+                  , GenericStatement "augroup LoupeHightlightMatch"
+                  , GenericStatement "autocmd!"
+                  , GenericStatement
+                      "autocmd CursorMoved * :call loupe#private#hlmatch()"
+                  , GenericStatement "augroup END"
+                  , GenericStatement "endif"
+                  , GenericStatement "return a:result"
+                  ]
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "loupe#private#clear_highlight"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "abort" ]
+              , functionBody =
+                  [ GenericStatement "if exists('w:loupe_hlmatch')"
+                  , GenericStatement "try"
+                  , GenericStatement "call matchdelete(w:loupe_hlmatch)"
+                  , GenericStatement "catch /\\v<(E802|E803)>/"
+                  , GenericStatement "finally"
+                  , UnletStatement
+                      { unletBang = False , unletBody = "w:loupe_hlmatch" }
+                  , GenericStatement "endtry"
+                  , GenericStatement "endif"
+                  ]
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "loupe#private#cleanup"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "abort" ]
+              , functionBody =
+                  [ GenericStatement "if !v:hlsearch"
+                  , GenericStatement "call loupe#private#clear_highlight()"
+                  , GenericStatement "endif"
+                  ]
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "loupe#private#hlmatch"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "abort" ]
+              , functionBody =
+                  [ Empty
+                  , LetStatement
+                      { letLexpr = "l:highlight"
+                      , letValue = "get(g:, 'LoupeHighlightGroup', 'IncSearch')"
+                      }
+                  , GenericStatement "if empty(l:highlight)"
+                  , GenericStatement "return"
+                  , GenericStatement "endif"
+                  , GenericStatement "if has('autocmd')"
+                  , GenericStatement "augroup LoupeHightlightMatch"
+                  , GenericStatement "autocmd!"
+                  , GenericStatement "augroup END"
+                  , GenericStatement "endif"
+                  , GenericStatement "call loupe#private#clear_highlight()"
+                  , LetStatement
+                      { letLexpr = "l:pattern" , letValue = "'\\c\\%#' . @/" }
+                  , GenericStatement "if exists('*matchadd')"
+                  , LetStatement
+                      { letLexpr = "w:loupe_hlmatch"
+                      , letValue = "matchadd(l:highlight, l:pattern)"
+                      }
+                  , GenericStatement "endif"
+                  ]
+              }
+          ]
+      , Unit
+          [ GenericStatement
+              "if exists('g:LoupeLoaded') || &compatible || v:version < 700"
+          , GenericStatement "finish"
+          , GenericStatement "endif"
+          , LetStatement { letLexpr = "g:LoupeLoaded" , letValue = "1" }
+          , LetStatement
+              { letLexpr = "s:cpoptions" , letValue = "&cpoptions" }
+          , GenericStatement "set cpoptions&vim"
+          , GenericStatement "if &history < 1000"
+          , GenericStatement
+              "set history=1000 \" Longer search and command history (default is 50)."
+          , GenericStatement "endif"
+          , GenericStatement "if has('extra_search')"
+          , GenericStatement "set hlsearch \" Highlight search strings."
+          , GenericStatement
+              "set incsearch \" Incremental search (\"find as you type\")."
+          , GenericStatement "endif"
+          , GenericStatement "set ignorecase \" Ignore case when searching."
+          , GenericStatement
+              "set shortmess+=s \" Don't echo search wrap messages."
+          , GenericStatement
+              "set smartcase \" Case-sensitive search if search string includes a capital letter."
+          , LetStatement
+              { letLexpr = "s:map"
+              , letValue = "get(g:, 'LoupeClearHighlightMap', 1)"
+              }
+          , GenericStatement "if s:map"
+          , GenericStatement
+              "if !hasmapto('<Plug>(LoupeClearHighlight)') && maparg('<leader>n', 'n') ==# ''"
+          , GenericStatement
+              "nmap <silent> <unique> <leader>n <Plug>(LoupeClearHighlight)"
+          , GenericStatement "endif"
+          , GenericStatement "endif"
+          , GenericStatement
+              "nnoremap <silent> <Plug>(LoupeClearHighlight) :nohlsearch<CR> :call loupe#private#clear_highlight()<CR>"
+          , GenericStatement
+              "cabbrev <silent> <expr> noh (getcmdtype() == ':' && getcmdpos() == 4 ? 'noh <bar> call loupe#private#clear_highlight()<CR>' : 'noh')"
+          , GenericStatement
+              "cabbrev <silent> <expr> nohl (getcmdtype() == ':' && getcmdpos() == 5 ? 'nohl <bar> call loupe#private#clear_highlight()<CR>' : 'nohl')"
+          , GenericStatement
+              "cabbrev <silent> <expr> nohls (getcmdtype() == ':' && getcmdpos() == 6 ? 'nohls <bar> call loupe#private#clear_highlight()<CR>' : 'nohls')"
+          , GenericStatement
+              "cabbrev <silent> <expr> nohlse (getcmdtype() == ':' && getcmdpos() == 7 ? 'nohlse <bar> call loupe#private#clear_highlight()<CR>' : 'nohlse')"
+          , GenericStatement
+              "cabbrev <silent> <expr> nohlsea (getcmdtype() == ':' && getcmdpos() == 8 ? 'nohlsea <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsea')"
+          , GenericStatement
+              "cabbrev <silent> <expr> nohlsear (getcmdtype() == ':' && getcmdpos() == 9 ? 'nohlsear <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsear')"
+          , GenericStatement
+              "cabbrev <silent> <expr> nohlsearc (getcmdtype() == ':' && getcmdpos() == 10 ? 'nohlsearc <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsearc')"
+          , GenericStatement
+              "cabbrev <silent> <expr> nohlsearch (getcmdtype() == ':' && getcmdpos() == 11 ? 'nohlsearch <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsearch')"
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "s:MagicString"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody =
+                  [ LetStatement
+                      { letLexpr = "s:magic"
+                      , letValue = "get(g:, 'LoupeVeryMagic', 1)"
+                      }
+                  , GenericStatement "return s:magic ? '\\v' : ''"
+                  ]
+              }
+          , GenericStatement
+              "nnoremap <expr> / loupe#private#prepare_highlight('/' . <SID>MagicString())"
+          , GenericStatement
+              "nnoremap <expr> ? loupe#private#prepare_highlight('?' . <SID>MagicString())"
+          , GenericStatement
+              "xnoremap <expr> / loupe#private#prepare_highlight('/' . <SID>MagicString())"
+          , GenericStatement
+              "xnoremap <expr> ? loupe#private#prepare_highlight('?' . <SID>MagicString())"
+          , GenericStatement "if !empty(s:MagicString())"
+          , GenericStatement
+              "cnoremap <expr> / loupe#private#very_magic_slash()"
+          , GenericStatement "endif"
+          , LetStatement
+              { letLexpr = "s:center"
+              , letValue = "get(g:, 'LoupeCenterResults', 1)"
+              }
+          , LetStatement
+              { letLexpr = "s:center_string"
+              , letValue = "s:center ? 'zz' : ''"
+              }
+          , GenericStatement
+              "execute 'nnoremap <silent> # #' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
+          , GenericStatement
+              "execute 'nnoremap <silent> * *' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
+          , GenericStatement
+              "execute 'nnoremap <silent> N N' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
+          , GenericStatement
+              "execute 'nnoremap <silent> g# g#' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
+          , GenericStatement
+              "execute 'nnoremap <silent> g* g*' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
+          , GenericStatement
+              "execute 'nnoremap <silent> n n' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
+          , GenericStatement "if has('autocmd') && has('extra_search')"
+          , GenericStatement "augroup LoupeCleanUp"
+          , GenericStatement "autocmd!"
+          , GenericStatement
+              "autocmd WinEnter * :call loupe#private#cleanup()"
+          , GenericStatement "augroup END"
+          , GenericStatement "endif"
+          , LetStatement
+              { letLexpr = "&cpoptions" , letValue = "s:cpoptions" }
+          , UnletStatement { unletBang = False , unletBody = "s:cpoptions" }
+          ]
       ]
-  , HeadingAnnotation "Development"
-  , SubheadingAnnotation "Contributing patches"
+  , MappingsAnnotation
+  , MappingAnnotation "<Plug>(LoupeClearHighlight)"
   , Paragraph
-      [ Plaintext "Patches"
-      , Whitespace
-      , Plaintext "can"
+      [ Plaintext "Loupe"
       , Whitespace
-      , Plaintext "be"
+      , Plaintext "maps"
       , Whitespace
-      , Plaintext "sent"
+      , Plaintext "<leader>n"
       , Whitespace
-      , Plaintext "via"
+      , Plaintext "to"
       , Whitespace
-      , Plaintext "mail"
+      , Link "<Plug>(LoupeClearHighlight)"
+      , Plaintext ","
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "which"
       , Whitespace
-      , Plaintext "greg@hurrell.net,"
+      , Plaintext "clears"
       , Whitespace
-      , Plaintext "or"
+      , Plaintext "all"
       , Whitespace
-      , Plaintext "as"
+      , Plaintext "visible"
       , Whitespace
-      , Plaintext "GitHub"
+      , Plaintext "highlights"
       , Whitespace
-      , Plaintext "pull"
+      , Plaintext "(like"
       , Whitespace
-      , Plaintext "requests"
+      , Link ":nohighlight"
       , Whitespace
-      , Plaintext "at:"
+      , Plaintext "does)."
       , Whitespace
-      , Plaintext "https://github.com/wincent/loupe/pulls"
-      ]
-  , SubheadingAnnotation "Cutting a new release"
-  , Paragraph
-      [ Plaintext "At"
+      , Plaintext "To"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "use"
       , Whitespace
-      , Plaintext "moment"
+      , Plaintext "an"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "alternative"
       , Whitespace
-      , Plaintext "release"
+      , Plaintext "mapping"
       , Whitespace
-      , Plaintext "process"
+      , Plaintext "instead,"
       , Whitespace
-      , Plaintext "is"
+      , Plaintext "create"
       , Whitespace
-      , Plaintext "manual:"
-      ]
-  , List
-      [ ListItem
-          [ Plaintext "Perform"
-          , Whitespace
-          , Plaintext "final"
-          , Whitespace
-          , Plaintext "sanity"
-          , Whitespace
-          , Plaintext "checks"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "manual"
-          , Whitespace
-          , Plaintext "testing"
-          ]
-      , ListItem
-          [ Plaintext "Update"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "loupe-history"
-          , Whitespace
-          , Plaintext "section"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "documentation"
-          ]
-      , ListItem
-          [ Plaintext "Verify"
-          , Whitespace
-          , Plaintext "clean"
-          , Whitespace
-          , Plaintext "work"
-          , Whitespace
-          , Plaintext "tree:"
-          ]
-      ]
-  , Fenced [ "git status" ]
-  , List
-      [ ListItem
-          [ Plaintext "Tag"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "release:"
-          ]
-      ]
-  , Fenced [ "git tag -s -m \"$VERSION release\" $VERSION" ]
-  , List
-      [ ListItem
-          [ Plaintext "Publish"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "code:"
-          ]
-      ]
-  , Fenced
-      [ "git push origin master --follow-tags"
-      , "git push github master --follow-tags"
-      ]
-  , List
-      [ ListItem
-          [ Plaintext "Produce"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "release"
-          , Whitespace
-          , Plaintext "archive:"
-          ]
-      ]
-  , Fenced [ "git archive -o loupe-$VERSION.zip HEAD -- ." ]
-  , List
-      [ ListItem
-          [ Plaintext "Upload"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "http://www.vim.org/scripts/script.php?script_id=5215"
-          ]
-      ]
-  , HeadingAnnotation "Authors"
-  , Paragraph
-      [ Plaintext "Loupe"
+      , Plaintext "a"
       , Whitespace
-      , Plaintext "is"
+      , Plaintext "different"
       , Whitespace
-      , Plaintext "written"
+      , Plaintext "one"
       , Whitespace
-      , Plaintext "and"
+      , Plaintext "in"
       , Whitespace
-      , Plaintext "maintained"
+      , Plaintext "your"
       , Whitespace
-      , Plaintext "by"
+      , Link ".vimrc"
       , Whitespace
-      , Plaintext "Greg"
+      , Plaintext "instead"
       , Whitespace
-      , Plaintext "Hurrell"
+      , Plaintext "using"
       , Whitespace
-      , Plaintext "<greg@hurrell.net>."
+      , Link ":nmap"
+      , Plaintext ":"
+      ]
+  , Fenced
+      [ "\" Instead of <leader>n, use <leader>x."
+      , "nmap <leader>x <Plug>(LoupeClearHighlight)"
       ]
   , Paragraph
-      [ Plaintext "The"
-      , Whitespace
-      , Plaintext "original"
-      , Whitespace
-      , Plaintext "idea"
-      , Whitespace
-      , Plaintext "for"
-      , Whitespace
-      , Plaintext "the"
-      , Whitespace
-      , Link "g:LoupeHighlightGroup"
-      , Whitespace
-      , Plaintext "feature"
-      , Whitespace
-      , Plaintext "was"
+      [ Plaintext "Note"
       , Whitespace
-      , Plaintext "taken"
+      , Plaintext "that"
       , Whitespace
-      , Plaintext "from"
+      , Plaintext "Loupe"
       , Whitespace
-      , Plaintext "Damian"
+      , Plaintext "will"
       , Whitespace
-      , Plaintext "Conway's"
+      , Plaintext "not"
       , Whitespace
-      , Plaintext "Vim"
+      , Plaintext "try"
       , Whitespace
-      , Plaintext "set-up:"
-      ]
-  , List
-      [ ListItem
-          [ Plaintext
-              "https://github.com/thoughtstream/Damian-Conway-s-Vim-Setup/blob/master/plugin/hlnext.vim"
-          ]
-      ]
-  , Paragraph
-      [ Plaintext "Which"
+      , Plaintext "to"
       , Whitespace
-      , Plaintext "he"
+      , Plaintext "set"
       , Whitespace
-      , Plaintext "discussed"
+      , Plaintext "up"
       , Whitespace
-      , Plaintext "in"
+      , Plaintext "its"
       , Whitespace
-      , Plaintext "his"
+      , Plaintext "<leader>n"
       , Whitespace
-      , Plaintext "\"More"
+      , Plaintext "mapping"
       , Whitespace
-      , Plaintext "Instantly"
+      , Plaintext "if"
       , Whitespace
-      , Plaintext "Better"
+      , Plaintext "any"
       , Whitespace
-      , Plaintext "Vim\""
+      , Plaintext "of"
       , Whitespace
-      , Plaintext "presentation"
+      , Plaintext "the"
       , Whitespace
-      , Plaintext "at"
+      , Plaintext "following"
       , Whitespace
-      , Plaintext "OSCON"
+      , Plaintext "are"
       , Whitespace
-      , Plaintext "2013:"
-      ]
-  , List
-      [ ListItem
-          [ Plaintext "https://www.youtube.com/watch?v=aHm36-na4-4" ]
+      , Plaintext "true:"
       ]
-  , HeadingAnnotation "History"
-  , SubheadingAnnotation "1.0 (28 December 2015)"
   , List
       [ ListItem
-          [ Plaintext "Renamed"
+          [ Plaintext "A"
           , Whitespace
-          , Plaintext "the"
+          , Plaintext "mapping"
           , Whitespace
-          , Link "<Plug>LoupeClearHighlight"
+          , Plaintext "for"
+          , Whitespace
+          , Plaintext "<leader>n"
+          , Whitespace
+          , Plaintext "already"
+          , Whitespace
+          , Plaintext "exists."
+          ]
+      , ListItem
+          [ Plaintext "An"
+          , Whitespace
+          , Plaintext "alternative"
           , Whitespace
           , Plaintext "mapping"
           , Whitespace
-          , Plaintext "to"
+          , Plaintext "for"
           , Whitespace
           , Link "<Plug>(LoupeClearHighlight)"
-          , Plaintext "."
-          ]
-      ]
-  , SubheadingAnnotation "0.1 (5 July 2015)"
-  , List
-      [ ListItem
-          [ Plaintext "Initial"
           , Whitespace
-          , Plaintext "release,"
+          , Plaintext "has"
           , Whitespace
-          , Plaintext "extracted"
+          , Plaintext "already"
           , Whitespace
-          , Plaintext "from"
+          , Plaintext "been"
           , Whitespace
-          , Plaintext "my"
+          , Plaintext "set"
           , Whitespace
-          , Plaintext "dotfiles"
+          , Plaintext "up"
           , Whitespace
-          , Plaintext "(https://github.com/wincent/wincent)."
+          , Plaintext "from"
+          , Whitespace
+          , Plaintext "a"
+          , Whitespace
+          , Link ".vimrc"
+          , Plaintext "."
           ]
-      ]
-  , Project
-      [ Unit
-          [ FunctionDeclaration
-              { functionBang = True
-              , functionName = "loupe#private#very_magic_slash"
-              , functionArguments = ArgumentList []
-              , functionAttributes = [ "abort" ]
-              , functionBody =
-                  [ GenericStatement "if getcmdtype() != ':'"
-                  , GenericStatement "return '/'"
-                  , GenericStatement "endif"
-                  , LetStatement { letLexpr = "l:pos" , letValue = "getcmdpos()" }
-                  , LetStatement { letLexpr = "l:cmd" , letValue = "getcmdline()" }
-                  , GenericStatement "if len(l:cmd) + 1 != l:pos"
-                  , GenericStatement "return '/'"
-                  , GenericStatement "endif"
-                  , GenericStatement "while 1"
-                  , LetStatement
-                      { letLexpr = "l:stripped" , letValue = "s:strip_ranges(l:cmd)" }
-                  , GenericStatement "if l:stripped ==# l:cmd"
-                  , GenericStatement "break"
-                  , GenericStatement "else"
-                  , LetStatement { letLexpr = "l:cmd" , letValue = "l:stripped" }
-                  , GenericStatement "endif"
-                  , GenericStatement "endwhile"
-                  , GenericStatement "if index(['g', 's', 'v'], l:cmd) != -1"
-                  , GenericStatement "return loupe#private#prepare_highlight('/\\v')"
-                  , GenericStatement "endif"
-                  , GenericStatement "return '/'"
-                  ]
-              }
-          , FunctionDeclaration
-              { functionBang = True
-              , functionName = "s:strip_ranges"
-              , functionArguments = ArgumentList [ Argument "cmdline" ]
-              , functionAttributes = []
-              , functionBody =
-                  [ LetStatement { letLexpr = "l:cmdline" , letValue = "a:cmdline" }
-                  , LetStatement
-                      { letLexpr = "l:modifier" , letValue = "'\\([+-]\\d*\\)*'" }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^\\d\\+' . l:modifier, '', '') \" line number"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^\\.' . l:modifier, '', '') \" current line"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^$' . l:modifier, '', '') \" last line in file"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^%' . l:modifier, '', '') \" entire file"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, \"^'[a-z]\\\\c\" . l:modifier, '', '') \" mark t (or T)"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, \"^'[<>]\" . l:modifier, '', '') \" visual selection marks"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^/[^/]\\+/' . l:modifier, '', '') \" /{pattern}/"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^?[^?]\\+?' . l:modifier, '', '') \" ?{pattern}?"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^\\\\/' . l:modifier, '', '') \" \\/ (next match of previous pattern)"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^\\\\?' . l:modifier, '', '') \" \\? (last match of previous pattern)"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue =
-                          "substitute(l:cmdline, '^\\\\&' . l:modifier, '', '') \" \\& (last match of previous substitution)"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue = "substitute(l:cmdline, '^,', '', '') \" , (separator)"
-                      }
-                  , LetStatement
-                      { letLexpr = "l:cmdline"
-                      , letValue = "substitute(l:cmdline, '^;', '', '') \" ; (separator)"
-                      }
-                  , GenericStatement "return l:cmdline"
-                  ]
-              }
-          , FunctionDeclaration
-              { functionBang = True
-              , functionName = "loupe#private#prepare_highlight"
-              , functionArguments = ArgumentList [ Argument "result" ]
-              , functionAttributes = [ "abort" ]
-              , functionBody =
-                  [ GenericStatement "if has('autocmd')"
-                  , GenericStatement "augroup LoupeHightlightMatch"
-                  , GenericStatement "autocmd!"
-                  , GenericStatement
-                      "autocmd CursorMoved * :call loupe#private#hlmatch()"
-                  , GenericStatement "augroup END"
-                  , GenericStatement "endif"
-                  , GenericStatement "return a:result"
-                  ]
-              }
-          , FunctionDeclaration
-              { functionBang = True
-              , functionName = "loupe#private#clear_highlight"
-              , functionArguments = ArgumentList []
-              , functionAttributes = [ "abort" ]
-              , functionBody =
-                  [ GenericStatement "if exists('w:loupe_hlmatch')"
-                  , GenericStatement "try"
-                  , GenericStatement "call matchdelete(w:loupe_hlmatch)"
-                  , GenericStatement "catch /\\v<(E802|E803)>/"
-                  , GenericStatement "finally"
-                  , UnletStatement
-                      { unletBang = False , unletBody = "w:loupe_hlmatch" }
-                  , GenericStatement "endtry"
-                  , GenericStatement "endif"
-                  ]
-              }
-          , FunctionDeclaration
-              { functionBang = True
-              , functionName = "loupe#private#cleanup"
-              , functionArguments = ArgumentList []
-              , functionAttributes = [ "abort" ]
-              , functionBody =
-                  [ GenericStatement "if !v:hlsearch"
-                  , GenericStatement "call loupe#private#clear_highlight()"
-                  , GenericStatement "endif"
-                  ]
-              }
-          , FunctionDeclaration
-              { functionBang = True
-              , functionName = "loupe#private#hlmatch"
-              , functionArguments = ArgumentList []
-              , functionAttributes = [ "abort" ]
-              , functionBody =
-                  [ Empty
-                  , LetStatement
-                      { letLexpr = "l:highlight"
-                      , letValue = "get(g:, 'LoupeHighlightGroup', 'IncSearch')"
-                      }
-                  , GenericStatement "if empty(l:highlight)"
-                  , GenericStatement "return"
-                  , GenericStatement "endif"
-                  , GenericStatement "if has('autocmd')"
-                  , GenericStatement "augroup LoupeHightlightMatch"
-                  , GenericStatement "autocmd!"
-                  , GenericStatement "augroup END"
-                  , GenericStatement "endif"
-                  , GenericStatement "call loupe#private#clear_highlight()"
-                  , LetStatement
-                      { letLexpr = "l:pattern" , letValue = "'\\c\\%#' . @/" }
-                  , GenericStatement "if exists('*matchadd')"
-                  , LetStatement
-                      { letLexpr = "w:loupe_hlmatch"
-                      , letValue = "matchadd(l:highlight, l:pattern)"
-                      }
-                  , GenericStatement "endif"
-                  ]
-              }
+      , ListItem
+          [ Plaintext "The"
+          , Whitespace
+          , Plaintext "mapping"
+          , Whitespace
+          , Plaintext "has"
+          , Whitespace
+          , Plaintext "been"
+          , Whitespace
+          , Plaintext "suppressed"
+          , Whitespace
+          , Plaintext "by"
+          , Whitespace
+          , Plaintext "setting"
+          , Whitespace
+          , Link "g:LoupeClearHighlightMap"
+          , Whitespace
+          , Plaintext "to"
+          , Whitespace
+          , Plaintext "1"
+          , Whitespace
+          , Plaintext "in"
+          , Whitespace
+          , Plaintext "your"
+          , Whitespace
+          , Link ".vimrc"
+          , Plaintext "."
           ]
-      , Unit
-          [ GenericStatement
-              "if exists('g:LoupeLoaded') || &compatible || v:version < 700"
-          , GenericStatement "finish"
-          , GenericStatement "endif"
-          , LetStatement { letLexpr = "g:LoupeLoaded" , letValue = "1" }
-          , LetStatement
-              { letLexpr = "s:cpoptions" , letValue = "&cpoptions" }
-          , GenericStatement "set cpoptions&vim"
-          , GenericStatement "if &history < 1000"
-          , GenericStatement
-              "set history=1000 \" Longer search and command history (default is 50)."
-          , GenericStatement "endif"
-          , GenericStatement "if has('extra_search')"
-          , GenericStatement "set hlsearch \" Highlight search strings."
-          , GenericStatement
-              "set incsearch \" Incremental search (\"find as you type\")."
-          , GenericStatement "endif"
-          , GenericStatement "set ignorecase \" Ignore case when searching."
-          , GenericStatement
-              "set shortmess+=s \" Don't echo search wrap messages."
-          , GenericStatement
-              "set smartcase \" Case-sensitive search if search string includes a capital letter."
-          , LetStatement
-              { letLexpr = "s:map"
-              , letValue = "get(g:, 'LoupeClearHighlightMap', 1)"
-              }
-          , GenericStatement "if s:map"
-          , GenericStatement
-              "if !hasmapto('<Plug>(LoupeClearHighlight)') && maparg('<leader>n', 'n') ==# ''"
-          , GenericStatement
-              "nmap <silent> <unique> <leader>n <Plug>(LoupeClearHighlight)"
-          , GenericStatement "endif"
-          , GenericStatement "endif"
-          , GenericStatement
-              "nnoremap <silent> <Plug>(LoupeClearHighlight) :nohlsearch<CR> :call loupe#private#clear_highlight()<CR>"
-          , GenericStatement
-              "cabbrev <silent> <expr> noh (getcmdtype() == ':' && getcmdpos() == 4 ? 'noh <bar> call loupe#private#clear_highlight()<CR>' : 'noh')"
-          , GenericStatement
-              "cabbrev <silent> <expr> nohl (getcmdtype() == ':' && getcmdpos() == 5 ? 'nohl <bar> call loupe#private#clear_highlight()<CR>' : 'nohl')"
-          , GenericStatement
-              "cabbrev <silent> <expr> nohls (getcmdtype() == ':' && getcmdpos() == 6 ? 'nohls <bar> call loupe#private#clear_highlight()<CR>' : 'nohls')"
-          , GenericStatement
-              "cabbrev <silent> <expr> nohlse (getcmdtype() == ':' && getcmdpos() == 7 ? 'nohlse <bar> call loupe#private#clear_highlight()<CR>' : 'nohlse')"
-          , GenericStatement
-              "cabbrev <silent> <expr> nohlsea (getcmdtype() == ':' && getcmdpos() == 8 ? 'nohlsea <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsea')"
-          , GenericStatement
-              "cabbrev <silent> <expr> nohlsear (getcmdtype() == ':' && getcmdpos() == 9 ? 'nohlsear <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsear')"
-          , GenericStatement
-              "cabbrev <silent> <expr> nohlsearc (getcmdtype() == ':' && getcmdpos() == 10 ? 'nohlsearc <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsearc')"
-          , GenericStatement
-              "cabbrev <silent> <expr> nohlsearch (getcmdtype() == ':' && getcmdpos() == 11 ? 'nohlsearch <bar> call loupe#private#clear_highlight()<CR>' : 'nohlsearch')"
-          , FunctionDeclaration
-              { functionBang = False
-              , functionName = "s:MagicString"
-              , functionArguments = ArgumentList []
-              , functionAttributes = []
-              , functionBody =
-                  [ LetStatement
-                      { letLexpr = "s:magic"
-                      , letValue = "get(g:, 'LoupeVeryMagic', 1)"
-                      }
-                  , GenericStatement "return s:magic ? '\\v' : ''"
-                  ]
-              }
-          , GenericStatement
-              "nnoremap <expr> / loupe#private#prepare_highlight('/' . <SID>MagicString())"
-          , GenericStatement
-              "nnoremap <expr> ? loupe#private#prepare_highlight('?' . <SID>MagicString())"
-          , GenericStatement
-              "xnoremap <expr> / loupe#private#prepare_highlight('/' . <SID>MagicString())"
-          , GenericStatement
-              "xnoremap <expr> ? loupe#private#prepare_highlight('?' . <SID>MagicString())"
-          , GenericStatement "if !empty(s:MagicString())"
-          , GenericStatement
-              "cnoremap <expr> / loupe#private#very_magic_slash()"
-          , GenericStatement "endif"
-          , LetStatement
-              { letLexpr = "s:center"
-              , letValue = "get(g:, 'LoupeCenterResults', 1)"
-              }
-          , LetStatement
-              { letLexpr = "s:center_string"
-              , letValue = "s:center ? 'zz' : ''"
-              }
-          , GenericStatement
-              "execute 'nnoremap <silent> # #' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
-          , GenericStatement
-              "execute 'nnoremap <silent> * *' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
-          , GenericStatement
-              "execute 'nnoremap <silent> N N' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
-          , GenericStatement
-              "execute 'nnoremap <silent> g# g#' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
-          , GenericStatement
-              "execute 'nnoremap <silent> g* g*' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
-          , GenericStatement
-              "execute 'nnoremap <silent> n n' . s:center_string . ':call loupe#private#hlmatch()<CR>'"
-          , GenericStatement "if has('autocmd') && has('extra_search')"
-          , GenericStatement "augroup LoupeCleanUp"
-          , GenericStatement "autocmd!"
-          , GenericStatement
-              "autocmd WinEnter * :call loupe#private#cleanup()"
-          , GenericStatement "augroup END"
-          , GenericStatement "endif"
-          , LetStatement
-              { letLexpr = "&cpoptions" , letValue = "s:cpoptions" }
-          , UnletStatement { unletBang = False , unletBody = "s:cpoptions" }
+      ]
+  , OptionsAnnotation
+  , OptionAnnotation
+      "g:LoupeHighlightGroup" "string" (Just "IncSearch")
+  , Paragraph
+      [ Plaintext "Specifies"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Link ":highlight"
+      , Whitespace
+      , Plaintext "group"
+      , Whitespace
+      , Plaintext "used"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "emphasize"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "match"
+      , Whitespace
+      , Plaintext "currently"
+      , Whitespace
+      , Plaintext "under"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "cursor"
+      , Whitespace
+      , Plaintext "for"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "current"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "pattern."
+      , Whitespace
+      , Plaintext "Defaults"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "\"IncSearch\""
+      , Whitespace
+      , Plaintext "(ie."
+      , Whitespace
+      , Link "hl-IncSearch"
+      , Plaintext ")."
+      , Whitespace
+      , Plaintext "For"
+      , Whitespace
+      , Plaintext "example:"
+      ]
+  , Fenced [ "let g:LoupeHighlightGroup='Error'" ]
+  , Paragraph
+      [ Plaintext "To"
+      , Whitespace
+      , Plaintext "prevent"
+      , Whitespace
+      , Plaintext "any"
+      , Whitespace
+      , Plaintext "special"
+      , Whitespace
+      , Plaintext "highlighting"
+      , Whitespace
+      , Plaintext "from"
+      , Whitespace
+      , Plaintext "being"
+      , Whitespace
+      , Plaintext "applied,"
+      , Whitespace
+      , Plaintext "set"
+      , Whitespace
+      , Plaintext "this"
+      , Whitespace
+      , Plaintext "option"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "\"\""
+      , Whitespace
+      , Plaintext "(ie."
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "empty"
+      , Whitespace
+      , Plaintext "string)."
+      ]
+  , OptionAnnotation "g:LoupeLoaded" "any" Nothing
+  , Paragraph
+      [ Plaintext "To"
+      , Whitespace
+      , Plaintext "prevent"
+      , Whitespace
+      , Plaintext "Loupe"
+      , Whitespace
+      , Plaintext "from"
+      , Whitespace
+      , Plaintext "being"
+      , Whitespace
+      , Plaintext "loaded,"
+      , Whitespace
+      , Plaintext "set"
+      , Whitespace
+      , Link "g:LoupeLoaded"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "any"
+      , Whitespace
+      , Plaintext "value"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "your"
+      , Whitespace
+      , Link ".vimrc"
+      , Plaintext "."
+      , Whitespace
+      , Plaintext "For"
+      , Whitespace
+      , Plaintext "example:"
+      ]
+  , Fenced [ "let g:LoupeLoaded=1" ]
+  , OptionAnnotation "g:LoupeClearHighlightMap" "boolean" (Just "1")
+  , Paragraph
+      [ Plaintext "Controls"
+      , Whitespace
+      , Plaintext "whether"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "set"
+      , Whitespace
+      , Plaintext "up"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Link "<Plug>(LoupeClearHighlight)"
+      , Whitespace
+      , Plaintext "mapping."
+      , Whitespace
+      , Plaintext "To"
+      , Whitespace
+      , Plaintext "prevent"
+      , Whitespace
+      , Plaintext "any"
+      , Whitespace
+      , Plaintext "mapping"
+      , Whitespace
+      , Plaintext "from"
+      , Whitespace
+      , Plaintext "being"
+      , Whitespace
+      , Plaintext "configured,"
+      , Whitespace
+      , Plaintext "set"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "0:"
+      ]
+  , Fenced [ "let g:LoupeClearHighlightMap=0" ]
+  , OptionAnnotation "g:LoupeVeryMagic" "boolean" (Just "1")
+  , Paragraph
+      [ Plaintext "Controls"
+      , Whitespace
+      , Plaintext "whether"
+      , Whitespace
+      , Plaintext "\"very"
+      , Whitespace
+      , Plaintext "magic\""
+      , Whitespace
+      , Plaintext "pattern"
+      , Whitespace
+      , Plaintext "syntax"
+      , Whitespace
+      , Plaintext "("
+      , Link "/\\v"
+      , Plaintext ")"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "applied"
+      , Whitespace
+      , Plaintext "by"
+      , Whitespace
+      , Plaintext "default."
+      , Whitespace
+      , Plaintext "To"
+      , Whitespace
+      , Plaintext "disable,"
+      , Whitespace
+      , Plaintext "set"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "0:"
+      ]
+  , Fenced [ "let g:LoupeVeryMagic=0" ]
+  , OptionAnnotation "g:LoupeCenterResults" "boolean" (Just "1")
+  , Paragraph
+      [ Plaintext "Controls"
+      , Whitespace
+      , Plaintext "whether"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "match's"
+      , Whitespace
+      , Plaintext "line"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "vertically"
+      , Whitespace
+      , Plaintext "centered"
+      , Whitespace
+      , Plaintext "within"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "window"
+      , Whitespace
+      , Plaintext "when"
+      , Whitespace
+      , Plaintext "jumping"
+      , Whitespace
+      , Plaintext "(via"
+      , Whitespace
+      , Link "n"
+      , Plaintext ","
+      , Whitespace
+      , Link "N"
+      , Whitespace
+      , Plaintext "etc)."
+      , Whitespace
+      , Plaintext "To"
+      , Whitespace
+      , Plaintext "disable,"
+      , Whitespace
+      , Plaintext "set"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "0:"
+      ]
+  , Fenced [ "let g:LoupeCenterResults=0" ]
+  , FooterAnnotation
+  , HeadingAnnotation "Overrides"
+  , Paragraph
+      [ Plaintext "Loupe"
+      , Whitespace
+      , Plaintext "sets"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "number"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "search-related"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "settings"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "reasonable"
+      , Whitespace
+      , Plaintext "defaults"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "order"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "provide"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "good"
+      , Whitespace
+      , Plaintext "\"out"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "box\""
+      , Whitespace
+      , Plaintext "experience:"
+      ]
+  , IndentAnnotation
+  , LinkTargets [ "loupe-history-override" ]
+  , Paragraph [ Plaintext "'history'" ]
+  , Paragraph
+      [ Plaintext "Increased"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "1000,"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "increase"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "number"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "previous"
+      , Whitespace
+      , Plaintext "searches"
+      , Whitespace
+      , Plaintext "remembered."
+      , Whitespace
+      , Plaintext "Note"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "Loupe"
+      , Whitespace
+      , Plaintext "only"
+      , Whitespace
+      , Plaintext "applies"
+      , Whitespace
+      , Plaintext "this"
+      , Whitespace
+      , Plaintext "setting"
+      , Whitespace
+      , Plaintext "if"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "current"
+      , Whitespace
+      , Plaintext "value"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "'history'"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "less"
+      , Whitespace
+      , Plaintext "than"
+      , Whitespace
+      , Plaintext "1000."
+      ]
+  , LinkTargets [ "loupe-hlsearch-override" ]
+  , Paragraph [ Plaintext "'hlsearch'" ]
+  , Paragraph
+      [ Plaintext "Turned"
+      , Whitespace
+      , Plaintext "on"
+      , Whitespace
+      , Plaintext "(when"
+      , Whitespace
+      , Plaintext "there"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "previous"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "pattern,"
+      , Whitespace
+      , Plaintext "highlight"
+      , Whitespace
+      , Plaintext "all"
+      , Whitespace
+      , Plaintext "its"
+      , Whitespace
+      , Plaintext "matches)."
+      ]
+  , LinkTargets [ "loupe-incsearch-override" ]
+  , Paragraph [ Plaintext "'incsearch'" ]
+  , Paragraph
+      [ Plaintext "Turned"
+      , Whitespace
+      , Plaintext "on"
+      , Whitespace
+      , Plaintext "(while"
+      , Whitespace
+      , Plaintext "typing"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "command,"
+      , Whitespace
+      , Plaintext "show"
+      , Whitespace
+      , Plaintext "where"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "pattern"
+      , Whitespace
+      , Plaintext "matches,"
+      , Whitespace
+      , Plaintext "as"
+      , Whitespace
+      , Plaintext "it"
+      , Whitespace
+      , Plaintext "was"
+      , Whitespace
+      , Plaintext "typed"
+      , Whitespace
+      , Plaintext "so"
+      , Whitespace
+      , Plaintext "far)."
+      ]
+  , LinkTargets [ "loupe-ignorecase-override" ]
+  , Paragraph [ Plaintext "'ignorecase'" ]
+  , Paragraph
+      [ Plaintext "Turned"
+      , Whitespace
+      , Plaintext "on"
+      , Whitespace
+      , Plaintext "(to"
+      , Whitespace
+      , Plaintext "ignore"
+      , Whitespace
+      , Plaintext "case"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "patterns)."
+      ]
+  , LinkTargets [ "loupe-shortmess-override" ]
+  , Paragraph [ Plaintext "'shortmess'" ]
+  , Paragraph
+      [ Plaintext "Adds"
+      , Whitespace
+      , Plaintext "\"s\","
+      , Whitespace
+      , Plaintext "which"
+      , Whitespace
+      , Plaintext "suppresses"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "display"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "\"search"
+      , Whitespace
+      , Plaintext "hit"
+      , Whitespace
+      , Plaintext "BOTTOM,"
+      , Whitespace
+      , Plaintext "continuing"
+      , Whitespace
+      , Plaintext "at"
+      , Whitespace
+      , Plaintext "TOP\""
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "\"search"
+      , Whitespace
+      , Plaintext "hit"
+      , Whitespace
+      , Plaintext "TOP,"
+      , Whitespace
+      , Plaintext "continuing"
+      , Whitespace
+      , Plaintext "at"
+      , Whitespace
+      , Plaintext "BOTTOM\""
+      , Whitespace
+      , Plaintext "messages."
+      ]
+  , LinkTargets [ "loupe-smartcase-override" ]
+  , Paragraph [ Plaintext "'smartcase'" ]
+  , Paragraph
+      [ Plaintext "Turned"
+      , Whitespace
+      , Plaintext "on"
+      , Whitespace
+      , Plaintext "(overrides"
+      , Whitespace
+      , Plaintext "'ignorecase',"
+      , Whitespace
+      , Plaintext "making"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "pattern"
+      , Whitespace
+      , Plaintext "case-sensitive"
+      , Whitespace
+      , Plaintext "whenever"
+      , Whitespace
+      , Plaintext "it"
+      , Whitespace
+      , Plaintext "containers"
+      , Whitespace
+      , Plaintext "uppercase"
+      , Whitespace
+      , Plaintext "characters)."
+      ]
+  , DedentAnnotation
+  , Paragraph
+      [ Plaintext "To"
+      , Whitespace
+      , Plaintext "override"
+      , Whitespace
+      , Plaintext "any"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "these"
+      , Whitespace
+      , Plaintext "choices,"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "can"
+      , Whitespace
+      , Plaintext "place"
+      , Whitespace
+      , Plaintext "overrides"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "an"
+      , Whitespace
+      , Link "after-directory"
+      , Whitespace
+      , Plaintext "(ie."
+      , Whitespace
+      , Code "~/.vim/after/plugin/loupe.vim"
+      , Plaintext ")."
+      , Whitespace
+      , Plaintext "For"
+      , Whitespace
+      , Plaintext "example:"
+      ]
+  , Fenced
+      [ " \" Override Loupe's 'history' setting from 1000 to 10000."
+      , " set history=10000"
+      , ""
+      , " \" Reset Loupe's 'incsearch' back to Vim default."
+      , " set incsearch&vim"
+      , ""
+      , " \" Remove unwanted 's' from 'shortmess'."
+      , " set shortmess-=s"
+      ]
+  , HeadingAnnotation "Related"
+  , Paragraph
+      [ Plaintext "Just"
+      , Whitespace
+      , Plaintext "as"
+      , Whitespace
+      , Plaintext "Loupe"
+      , Whitespace
+      , Plaintext "aims"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "improve"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "within-file"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "experience,"
+      , Whitespace
+      , Plaintext "Ferret"
+      , Whitespace
+      , Plaintext "does"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "same"
+      , Whitespace
+      , Plaintext "for"
+      , Whitespace
+      , Plaintext "multi-file"
+      , Whitespace
+      , Plaintext "searching"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "replacing:"
+      ]
+  , List
+      [ ListItem [ Plaintext "https://github.com/wincent/ferret" ] ]
+  , HeadingAnnotation "Website"
+  , Paragraph
+      [ Plaintext "The"
+      , Whitespace
+      , Plaintext "official"
+      , Whitespace
+      , Plaintext "Loupe"
+      , Whitespace
+      , Plaintext "source"
+      , Whitespace
+      , Plaintext "code"
+      , Whitespace
+      , Plaintext "repo"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , List
+      [ ListItem [ Plaintext "http://git.wincent.com/loupe.git" ] ]
+  , Paragraph
+      [ Plaintext "A"
+      , Whitespace
+      , Plaintext "mirror"
+      , Whitespace
+      , Plaintext "exists"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , List
+      [ ListItem [ Plaintext "https://github.com/wincent/loupe" ] ]
+  , Paragraph
+      [ Plaintext "Official"
+      , Whitespace
+      , Plaintext "releases"
+      , Whitespace
+      , Plaintext "are"
+      , Whitespace
+      , Plaintext "listed"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , List
+      [ ListItem
+          [ Plaintext "http://www.vim.org/scripts/script.php?script_id=5215"
           ]
       ]
-  , MappingsAnnotation
-  , MappingAnnotation "<Plug>(LoupeClearHighlight)"
+  , HeadingAnnotation "License"
   , Paragraph
-      [ Plaintext "Loupe"
+      [ Plaintext "Copyright"
       , Whitespace
-      , Plaintext "maps"
+      , Plaintext "2015-present"
       , Whitespace
-      , Plaintext "<leader>n"
+      , Plaintext "Greg"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "Hurrell."
       , Whitespace
-      , Link "<Plug>(LoupeClearHighlight)"
-      , Plaintext ","
+      , Plaintext "All"
       , Whitespace
-      , Plaintext "which"
+      , Plaintext "rights"
       , Whitespace
-      , Plaintext "clears"
+      , Plaintext "reserved."
+      ]
+  , Paragraph
+      [ Plaintext "Redistribution"
       , Whitespace
-      , Plaintext "all"
+      , Plaintext "and"
       , Whitespace
-      , Plaintext "visible"
+      , Plaintext "use"
       , Whitespace
-      , Plaintext "highlights"
+      , Plaintext "in"
       , Whitespace
-      , Plaintext "(like"
+      , Plaintext "source"
       , Whitespace
-      , Link ":nohighlight"
+      , Plaintext "and"
       , Whitespace
-      , Plaintext "does)."
+      , Plaintext "binary"
       , Whitespace
-      , Plaintext "To"
+      , Plaintext "forms,"
       , Whitespace
-      , Plaintext "use"
+      , Plaintext "with"
       , Whitespace
-      , Plaintext "an"
+      , Plaintext "or"
       , Whitespace
-      , Plaintext "alternative"
+      , Plaintext "without"
       , Whitespace
-      , Plaintext "mapping"
+      , Plaintext "modification,"
       , Whitespace
-      , Plaintext "instead,"
+      , Plaintext "are"
       , Whitespace
-      , Plaintext "create"
+      , Plaintext "permitted"
       , Whitespace
-      , Plaintext "a"
+      , Plaintext "provided"
       , Whitespace
-      , Plaintext "different"
+      , Plaintext "that"
       , Whitespace
-      , Plaintext "one"
+      , Plaintext "the"
       , Whitespace
-      , Plaintext "in"
+      , Plaintext "following"
       , Whitespace
-      , Plaintext "your"
+      , Plaintext "conditions"
       , Whitespace
-      , Link ".vimrc"
+      , Plaintext "are"
       , Whitespace
-      , Plaintext "instead"
+      , Plaintext "met:"
+      ]
+  , Paragraph
+      [ Plaintext "1."
       , Whitespace
-      , Plaintext "using"
+      , Plaintext "Redistributions"
       , Whitespace
-      , Link ":nmap"
-      , Plaintext ":"
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "source"
+      , Whitespace
+      , Plaintext "code"
+      , Whitespace
+      , Plaintext "must"
+      , Whitespace
+      , Plaintext "retain"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "above"
+      , Whitespace
+      , Plaintext "copyright"
+      , Whitespace
+      , Plaintext "notice,"
+      , Whitespace
+      , Plaintext "this"
+      , Whitespace
+      , Plaintext "list"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "conditions"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "following"
+      , Whitespace
+      , Plaintext "disclaimer."
       ]
-  , Fenced
-      [ "\" Instead of <leader>n, use <leader>x."
-      , "nmap <leader>x <Plug>(LoupeClearHighlight)"
+  , Paragraph
+      [ Plaintext "2."
+      , Whitespace
+      , Plaintext "Redistributions"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "binary"
+      , Whitespace
+      , Plaintext "form"
+      , Whitespace
+      , Plaintext "must"
+      , Whitespace
+      , Plaintext "reproduce"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "above"
+      , Whitespace
+      , Plaintext "copyright"
+      , Whitespace
+      , Plaintext "notice,"
+      , Whitespace
+      , Plaintext "this"
+      , Whitespace
+      , Plaintext "list"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "conditions"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "following"
+      , Whitespace
+      , Plaintext "disclaimer"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "documentation"
+      , Whitespace
+      , Plaintext "and/or"
+      , Whitespace
+      , Plaintext "other"
+      , Whitespace
+      , Plaintext "materials"
+      , Whitespace
+      , Plaintext "provided"
+      , Whitespace
+      , Plaintext "with"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "distribution."
       ]
   , Paragraph
-      [ Plaintext "Note"
+      [ Plaintext "THIS"
+      , Whitespace
+      , Plaintext "SOFTWARE"
+      , Whitespace
+      , Plaintext "IS"
+      , Whitespace
+      , Plaintext "PROVIDED"
+      , Whitespace
+      , Plaintext "BY"
+      , Whitespace
+      , Plaintext "THE"
+      , Whitespace
+      , Plaintext "COPYRIGHT"
+      , Whitespace
+      , Plaintext "HOLDERS"
+      , Whitespace
+      , Plaintext "AND"
+      , Whitespace
+      , Plaintext "CONTRIBUTORS"
+      , Whitespace
+      , Plaintext "\"AS"
+      , Whitespace
+      , Plaintext "IS\""
+      , Whitespace
+      , Plaintext "AND"
+      , Whitespace
+      , Plaintext "ANY"
+      , Whitespace
+      , Plaintext "EXPRESS"
+      , Whitespace
+      , Plaintext "OR"
+      , Whitespace
+      , Plaintext "IMPLIED"
+      , Whitespace
+      , Plaintext "WARRANTIES,"
+      , Whitespace
+      , Plaintext "INCLUDING,"
+      , Whitespace
+      , Plaintext "BUT"
+      , Whitespace
+      , Plaintext "NOT"
+      , Whitespace
+      , Plaintext "LIMITED"
+      , Whitespace
+      , Plaintext "TO,"
+      , Whitespace
+      , Plaintext "THE"
+      , Whitespace
+      , Plaintext "IMPLIED"
+      , Whitespace
+      , Plaintext "WARRANTIES"
+      , Whitespace
+      , Plaintext "OF"
+      , Whitespace
+      , Plaintext "MERCHANTABILITY"
+      , Whitespace
+      , Plaintext "AND"
+      , Whitespace
+      , Plaintext "FITNESS"
+      , Whitespace
+      , Plaintext "FOR"
+      , Whitespace
+      , Plaintext "A"
+      , Whitespace
+      , Plaintext "PARTICULAR"
+      , Whitespace
+      , Plaintext "PURPOSE"
+      , Whitespace
+      , Plaintext "ARE"
+      , Whitespace
+      , Plaintext "DISCLAIMED."
+      , Whitespace
+      , Plaintext "IN"
+      , Whitespace
+      , Plaintext "NO"
       , Whitespace
-      , Plaintext "that"
+      , Plaintext "EVENT"
       , Whitespace
-      , Plaintext "Loupe"
+      , Plaintext "SHALL"
       , Whitespace
-      , Plaintext "will"
+      , Plaintext "THE"
       , Whitespace
-      , Plaintext "not"
+      , Plaintext "COPYRIGHT"
       , Whitespace
-      , Plaintext "try"
+      , Plaintext "HOLDERS"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "OR"
       , Whitespace
-      , Plaintext "set"
+      , Plaintext "CONTRIBUTORS"
       , Whitespace
-      , Plaintext "up"
+      , Plaintext "BE"
       , Whitespace
-      , Plaintext "its"
+      , Plaintext "LIABLE"
       , Whitespace
-      , Plaintext "<leader>n"
+      , Plaintext "FOR"
       , Whitespace
-      , Plaintext "mapping"
+      , Plaintext "ANY"
       , Whitespace
-      , Plaintext "if"
+      , Plaintext "DIRECT,"
       , Whitespace
-      , Plaintext "any"
+      , Plaintext "INDIRECT,"
       , Whitespace
-      , Plaintext "of"
+      , Plaintext "INCIDENTAL,"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "SPECIAL,"
       , Whitespace
-      , Plaintext "following"
+      , Plaintext "EXEMPLARY,"
       , Whitespace
-      , Plaintext "are"
+      , Plaintext "OR"
       , Whitespace
-      , Plaintext "true:"
-      ]
-  , List
-      [ ListItem
-          [ Plaintext "A"
-          , Whitespace
-          , Plaintext "mapping"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "<leader>n"
-          , Whitespace
-          , Plaintext "already"
-          , Whitespace
-          , Plaintext "exists."
-          ]
-      , ListItem
-          [ Plaintext "An"
-          , Whitespace
-          , Plaintext "alternative"
-          , Whitespace
-          , Plaintext "mapping"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Link "<Plug>(LoupeClearHighlight)"
-          , Whitespace
-          , Plaintext "has"
-          , Whitespace
-          , Plaintext "already"
-          , Whitespace
-          , Plaintext "been"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "up"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Link ".vimrc"
-          , Plaintext "."
-          ]
-      , ListItem
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "mapping"
-          , Whitespace
-          , Plaintext "has"
-          , Whitespace
-          , Plaintext "been"
-          , Whitespace
-          , Plaintext "suppressed"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "setting"
-          , Whitespace
-          , Link "g:LoupeClearHighlightMap"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "1"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "your"
-          , Whitespace
-          , Link ".vimrc"
-          , Plaintext "."
-          ]
-      ]
-  , OptionsAnnotation
-  , OptionAnnotation
-      "g:LoupeHighlightGroup" "string" (Just "IncSearch")
-  , Paragraph
-      [ Plaintext "Specifies"
+      , Plaintext "CONSEQUENTIAL"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "DAMAGES"
       , Whitespace
-      , Link ":highlight"
+      , Plaintext "(INCLUDING,"
       , Whitespace
-      , Plaintext "group"
+      , Plaintext "BUT"
       , Whitespace
-      , Plaintext "used"
+      , Plaintext "NOT"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "LIMITED"
       , Whitespace
-      , Plaintext "emphasize"
+      , Plaintext "TO,"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "PROCUREMENT"
       , Whitespace
-      , Plaintext "match"
+      , Plaintext "OF"
       , Whitespace
-      , Plaintext "currently"
+      , Plaintext "SUBSTITUTE"
       , Whitespace
-      , Plaintext "under"
+      , Plaintext "GOODS"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "OR"
       , Whitespace
-      , Plaintext "cursor"
+      , Plaintext "SERVICES;"
       , Whitespace
-      , Plaintext "for"
+      , Plaintext "LOSS"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "OF"
       , Whitespace
-      , Plaintext "current"
+      , Plaintext "USE,"
       , Whitespace
-      , Plaintext "search"
+      , Plaintext "DATA,"
       , Whitespace
-      , Plaintext "pattern."
+      , Plaintext "OR"
       , Whitespace
-      , Plaintext "Defaults"
+      , Plaintext "PROFITS;"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "OR"
       , Whitespace
-      , Plaintext "\"IncSearch\""
+      , Plaintext "BUSINESS"
       , Whitespace
-      , Plaintext "(ie."
+      , Plaintext "INTERRUPTION)"
       , Whitespace
-      , Link "hl-IncSearch"
-      , Plaintext ")."
+      , Plaintext "HOWEVER"
       , Whitespace
-      , Plaintext "For"
+      , Plaintext "CAUSED"
       , Whitespace
-      , Plaintext "example:"
-      ]
-  , Fenced [ "let g:LoupeHighlightGroup='Error'" ]
-  , Paragraph
-      [ Plaintext "To"
+      , Plaintext "AND"
       , Whitespace
-      , Plaintext "prevent"
+      , Plaintext "ON"
       , Whitespace
-      , Plaintext "any"
+      , Plaintext "ANY"
       , Whitespace
-      , Plaintext "special"
+      , Plaintext "THEORY"
       , Whitespace
-      , Plaintext "highlighting"
+      , Plaintext "OF"
       , Whitespace
-      , Plaintext "from"
+      , Plaintext "LIABILITY,"
       , Whitespace
-      , Plaintext "being"
+      , Plaintext "WHETHER"
       , Whitespace
-      , Plaintext "applied,"
+      , Plaintext "IN"
       , Whitespace
-      , Plaintext "set"
+      , Plaintext "CONTRACT,"
       , Whitespace
-      , Plaintext "this"
+      , Plaintext "STRICT"
       , Whitespace
-      , Plaintext "option"
+      , Plaintext "LIABILITY,"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "OR"
       , Whitespace
-      , Plaintext "\"\""
+      , Plaintext "TORT"
       , Whitespace
-      , Plaintext "(ie."
+      , Plaintext "(INCLUDING"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "NEGLIGENCE"
       , Whitespace
-      , Plaintext "empty"
+      , Plaintext "OR"
       , Whitespace
-      , Plaintext "string)."
-      ]
-  , OptionAnnotation "g:LoupeLoaded" "any" Nothing
-  , Paragraph
-      [ Plaintext "To"
+      , Plaintext "OTHERWISE)"
       , Whitespace
-      , Plaintext "prevent"
+      , Plaintext "ARISING"
       , Whitespace
-      , Plaintext "Loupe"
+      , Plaintext "IN"
       , Whitespace
-      , Plaintext "from"
+      , Plaintext "ANY"
       , Whitespace
-      , Plaintext "being"
+      , Plaintext "WAY"
       , Whitespace
-      , Plaintext "loaded,"
+      , Plaintext "OUT"
       , Whitespace
-      , Plaintext "set"
+      , Plaintext "OF"
       , Whitespace
-      , Link "g:LoupeLoaded"
+      , Plaintext "THE"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "USE"
       , Whitespace
-      , Plaintext "any"
+      , Plaintext "OF"
       , Whitespace
-      , Plaintext "value"
+      , Plaintext "THIS"
       , Whitespace
-      , Plaintext "in"
+      , Plaintext "SOFTWARE,"
       , Whitespace
-      , Plaintext "your"
+      , Plaintext "EVEN"
       , Whitespace
-      , Link ".vimrc"
-      , Plaintext "."
+      , Plaintext "IF"
       , Whitespace
-      , Plaintext "For"
+      , Plaintext "ADVISED"
       , Whitespace
-      , Plaintext "example:"
-      ]
-  , Fenced [ "let g:LoupeLoaded=1" ]
-  , OptionAnnotation "g:LoupeClearHighlightMap" "boolean" (Just "1")
-  , Paragraph
-      [ Plaintext "Controls"
+      , Plaintext "OF"
       , Whitespace
-      , Plaintext "whether"
+      , Plaintext "THE"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "POSSIBILITY"
       , Whitespace
-      , Plaintext "set"
+      , Plaintext "OF"
       , Whitespace
-      , Plaintext "up"
+      , Plaintext "SUCH"
+      , Whitespace
+      , Plaintext "DAMAGE."
+      ]
+  , HeadingAnnotation "Development"
+  , SubheadingAnnotation "Contributing patches"
+  , Paragraph
+      [ Plaintext "Patches"
+      , Whitespace
+      , Plaintext "can"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "be"
       , Whitespace
-      , Link "<Plug>(LoupeClearHighlight)"
+      , Plaintext "sent"
       , Whitespace
-      , Plaintext "mapping."
+      , Plaintext "via"
       , Whitespace
-      , Plaintext "To"
+      , Plaintext "mail"
       , Whitespace
-      , Plaintext "prevent"
+      , Plaintext "to"
       , Whitespace
-      , Plaintext "any"
+      , Plaintext "greg@hurrell.net,"
       , Whitespace
-      , Plaintext "mapping"
+      , Plaintext "or"
       , Whitespace
-      , Plaintext "from"
+      , Plaintext "as"
       , Whitespace
-      , Plaintext "being"
+      , Plaintext "GitHub"
       , Whitespace
-      , Plaintext "configured,"
+      , Plaintext "pull"
       , Whitespace
-      , Plaintext "set"
+      , Plaintext "requests"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "at:"
       , Whitespace
-      , Plaintext "0:"
+      , Plaintext "https://github.com/wincent/loupe/pulls"
       ]
-  , Fenced [ "let g:LoupeClearHighlightMap=0" ]
-  , OptionAnnotation "g:LoupeVeryMagic" "boolean" (Just "1")
+  , SubheadingAnnotation "Cutting a new release"
   , Paragraph
-      [ Plaintext "Controls"
-      , Whitespace
-      , Plaintext "whether"
+      [ Plaintext "At"
       , Whitespace
-      , Plaintext "\"very"
+      , Plaintext "the"
       , Whitespace
-      , Plaintext "magic\""
+      , Plaintext "moment"
       , Whitespace
-      , Plaintext "pattern"
+      , Plaintext "the"
       , Whitespace
-      , Plaintext "syntax"
+      , Plaintext "release"
       , Whitespace
-      , Plaintext "("
-      , Link "/\\v"
-      , Plaintext ")"
+      , Plaintext "process"
       , Whitespace
       , Plaintext "is"
       , Whitespace
-      , Plaintext "applied"
+      , Plaintext "manual:"
+      ]
+  , List
+      [ ListItem
+          [ Plaintext "Perform"
+          , Whitespace
+          , Plaintext "final"
+          , Whitespace
+          , Plaintext "sanity"
+          , Whitespace
+          , Plaintext "checks"
+          , Whitespace
+          , Plaintext "and"
+          , Whitespace
+          , Plaintext "manual"
+          , Whitespace
+          , Plaintext "testing"
+          ]
+      , ListItem
+          [ Plaintext "Update"
+          , Whitespace
+          , Plaintext "the"
+          , Whitespace
+          , Link "loupe-history"
+          , Whitespace
+          , Plaintext "section"
+          , Whitespace
+          , Plaintext "of"
+          , Whitespace
+          , Plaintext "the"
+          , Whitespace
+          , Plaintext "documentation"
+          ]
+      , ListItem
+          [ Plaintext "Verify"
+          , Whitespace
+          , Plaintext "clean"
+          , Whitespace
+          , Plaintext "work"
+          , Whitespace
+          , Plaintext "tree:"
+          ]
+      ]
+  , Fenced [ "git status" ]
+  , List
+      [ ListItem
+          [ Plaintext "Tag"
+          , Whitespace
+          , Plaintext "the"
+          , Whitespace
+          , Plaintext "release:"
+          ]
+      ]
+  , Fenced [ "git tag -s -m \"$VERSION release\" $VERSION" ]
+  , List
+      [ ListItem
+          [ Plaintext "Publish"
+          , Whitespace
+          , Plaintext "the"
+          , Whitespace
+          , Plaintext "code:"
+          ]
+      ]
+  , Fenced
+      [ "git push origin master --follow-tags"
+      , "git push github master --follow-tags"
+      ]
+  , List
+      [ ListItem
+          [ Plaintext "Produce"
+          , Whitespace
+          , Plaintext "the"
+          , Whitespace
+          , Plaintext "release"
+          , Whitespace
+          , Plaintext "archive:"
+          ]
+      ]
+  , Fenced [ "git archive -o loupe-$VERSION.zip HEAD -- ." ]
+  , List
+      [ ListItem
+          [ Plaintext "Upload"
+          , Whitespace
+          , Plaintext "to"
+          , Whitespace
+          , Plaintext "http://www.vim.org/scripts/script.php?script_id=5215"
+          ]
+      ]
+  , HeadingAnnotation "Authors"
+  , Paragraph
+      [ Plaintext "Loupe"
       , Whitespace
-      , Plaintext "by"
+      , Plaintext "is"
       , Whitespace
-      , Plaintext "default."
+      , Plaintext "written"
       , Whitespace
-      , Plaintext "To"
+      , Plaintext "and"
       , Whitespace
-      , Plaintext "disable,"
+      , Plaintext "maintained"
       , Whitespace
-      , Plaintext "set"
+      , Plaintext "by"
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "Greg"
       , Whitespace
-      , Plaintext "0:"
+      , Plaintext "Hurrell"
+      , Whitespace
+      , Plaintext "<greg@hurrell.net>."
       ]
-  , Fenced [ "let g:LoupeVeryMagic=0" ]
-  , OptionAnnotation "g:LoupeCenterResults" "boolean" (Just "1")
   , Paragraph
-      [ Plaintext "Controls"
+      [ Plaintext "The"
       , Whitespace
-      , Plaintext "whether"
+      , Plaintext "original"
+      , Whitespace
+      , Plaintext "idea"
+      , Whitespace
+      , Plaintext "for"
       , Whitespace
       , Plaintext "the"
       , Whitespace
-      , Plaintext "match's"
+      , Link "g:LoupeHighlightGroup"
       , Whitespace
-      , Plaintext "line"
+      , Plaintext "feature"
       , Whitespace
-      , Plaintext "is"
+      , Plaintext "was"
       , Whitespace
-      , Plaintext "vertically"
+      , Plaintext "taken"
       , Whitespace
-      , Plaintext "centered"
+      , Plaintext "from"
       , Whitespace
-      , Plaintext "within"
+      , Plaintext "Damian"
       , Whitespace
-      , Plaintext "the"
+      , Plaintext "Conway's"
       , Whitespace
-      , Plaintext "window"
+      , Plaintext "Vim"
       , Whitespace
-      , Plaintext "when"
+      , Plaintext "set-up:"
+      ]
+  , List
+      [ ListItem
+          [ Plaintext
+              "https://github.com/thoughtstream/Damian-Conway-s-Vim-Setup/blob/master/plugin/hlnext.vim"
+          ]
+      ]
+  , Paragraph
+      [ Plaintext "Which"
       , Whitespace
-      , Plaintext "jumping"
+      , Plaintext "he"
       , Whitespace
-      , Plaintext "(via"
+      , Plaintext "discussed"
       , Whitespace
-      , Link "n"
-      , Plaintext ","
+      , Plaintext "in"
       , Whitespace
-      , Link "N"
+      , Plaintext "his"
       , Whitespace
-      , Plaintext "etc)."
+      , Plaintext "\"More"
       , Whitespace
-      , Plaintext "To"
+      , Plaintext "Instantly"
       , Whitespace
-      , Plaintext "disable,"
+      , Plaintext "Better"
       , Whitespace
-      , Plaintext "set"
+      , Plaintext "Vim\""
       , Whitespace
-      , Plaintext "to"
+      , Plaintext "presentation"
       , Whitespace
-      , Plaintext "0:"
+      , Plaintext "at"
+      , Whitespace
+      , Plaintext "OSCON"
+      , Whitespace
+      , Plaintext "2013:"
+      ]
+  , List
+      [ ListItem
+          [ Plaintext "https://www.youtube.com/watch?v=aHm36-na4-4" ]
+      ]
+  , HeadingAnnotation "History"
+  , SubheadingAnnotation "1.0 (28 December 2015)"
+  , List
+      [ ListItem
+          [ Plaintext "Renamed"
+          , Whitespace
+          , Plaintext "the"
+          , Whitespace
+          , Link "<Plug>LoupeClearHighlight"
+          , Whitespace
+          , Plaintext "mapping"
+          , Whitespace
+          , Plaintext "to"
+          , Whitespace
+          , Link "<Plug>(LoupeClearHighlight)"
+          , Plaintext "."
+          ]
+      ]
+  , SubheadingAnnotation "0.1 (5 July 2015)"
+  , List
+      [ ListItem
+          [ Plaintext "Initial"
+          , Whitespace
+          , Plaintext "release,"
+          , Whitespace
+          , Plaintext "extracted"
+          , Whitespace
+          , Plaintext "from"
+          , Whitespace
+          , Plaintext "my"
+          , Whitespace
+          , Plaintext "dotfiles"
+          , Whitespace
+          , Plaintext "(https://github.com/wincent/wincent)."
+          ]
       ]
-  , Fenced [ "let g:LoupeCenterResults=0" ]
   ]
index 919dd944202e9fb9909be3e04fc557fc08f0cb71..585070daae96c98137a6de978b085beab6bfd394 100644 (file)
@@ -51,6 +51,72 @@ To generate help tags under Pathogen, you can do so from inside Vim with:
 :call pathogen#helptags()
 ```
 
+## Mappings<a name="loupe-mappings" href="#user-content-loupe-mappings"></a>
+
+### `<Plug>(LoupeClearHighlight)`<a name="loupe-plugloupeclearhighlight" href="#user-content-loupe-plugloupeclearhighlight"></a>
+
+Loupe maps <leader>n to <strong>[`<Plug>(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)</strong>, which clears all visible highlights (like <strong>`:nohighlight`</strong> does). To use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
+
+```
+" Instead of <leader>n, use <leader>x.
+nmap <leader>x <Plug>(LoupeClearHighlight)
+```
+
+Note that Loupe will not try to set up its <leader>n mapping if any of the following are true:
+
+- A mapping for <leader>n already exists.
+- An alternative mapping for <strong>[`<Plug>(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)</strong> has already been set up from a <strong>`.vimrc`</strong>.
+- The mapping has been suppressed by setting <strong>`g:LoupeClearHighlightMap`</strong> to 1 in your <strong>`.vimrc`</strong>.
+
+## Options<a name="loupe-options" href="#user-content-loupe-options"></a>
+
+<p align="right"><a name="gloupehighlightgroup" href="#user-content-gloupehighlightgroup"><code>g:LoupeHighlightGroup</code></a></p>
+### `g:LoupeHighlightGroup` (string, default: IncSearch)<a name="loupe-gloupehighlightgroup-string-default-incsearch" href="#user-content-loupe-gloupehighlightgroup-string-default-incsearch"></a>
+
+Specifies the <strong>`:highlight`</strong> group used to emphasize the match currently under the cursor for the current search pattern. Defaults to "IncSearch" (ie. <strong>`hl-IncSearch`</strong>). For example:
+
+```
+let g:LoupeHighlightGroup='Error'
+```
+
+To prevent any special highlighting from being applied, set this option to "" (ie. the empty string).
+
+<p align="right"><a name="gloupeloaded" href="#user-content-gloupeloaded"><code>g:LoupeLoaded</code></a></p>
+### `g:LoupeLoaded` (any, default: none)<a name="loupe-gloupeloaded-any-default-none" href="#user-content-loupe-gloupeloaded-any-default-none"></a>
+
+To prevent Loupe from being loaded, set <strong>`g:LoupeLoaded`</strong> to any value in your <strong>`.vimrc`</strong>. For example:
+
+```
+let g:LoupeLoaded=1
+```
+
+<p align="right"><a name="gloupeclearhighlightmap" href="#user-content-gloupeclearhighlightmap"><code>g:LoupeClearHighlightMap</code></a></p>
+### `g:LoupeClearHighlightMap` (boolean, default: 1)<a name="loupe-gloupeclearhighlightmap-boolean-default-1" href="#user-content-loupe-gloupeclearhighlightmap-boolean-default-1"></a>
+
+Controls whether to set up the <strong>[`<Plug>(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)</strong> mapping. To prevent any mapping from being configured, set to 0:
+
+```
+let g:LoupeClearHighlightMap=0
+```
+
+<p align="right"><a name="gloupeverymagic" href="#user-content-gloupeverymagic"><code>g:LoupeVeryMagic</code></a></p>
+### `g:LoupeVeryMagic` (boolean, default: 1)<a name="loupe-gloupeverymagic-boolean-default-1" href="#user-content-loupe-gloupeverymagic-boolean-default-1"></a>
+
+Controls whether "very magic" pattern syntax (<strong>`/\v`</strong>) is applied by default. To disable, set to 0:
+
+```
+let g:LoupeVeryMagic=0
+```
+
+<p align="right"><a name="gloupecenterresults" href="#user-content-gloupecenterresults"><code>g:LoupeCenterResults</code></a></p>
+### `g:LoupeCenterResults` (boolean, default: 1)<a name="loupe-gloupecenterresults-boolean-default-1" href="#user-content-loupe-gloupecenterresults-boolean-default-1"></a>
+
+Controls whether the match's line is vertically centered within the window when jumping (via <strong>`n`</strong>, <strong>`N`</strong> etc). To disable, set to 0:
+
+```
+let g:LoupeCenterResults=0
+```
+
 ## Overrides<a name="loupe-overrides" href="#user-content-loupe-overrides"></a>
 
 Loupe sets a number of search-related Vim settings to reasonable defaults in order to provide a good "out of the box" experience:
@@ -190,69 +256,3 @@ Which he discussed in his "More Instantly Better Vim" presentation at OSCON 2013
 ### 0.1 (5 July 2015)<a name="loupe-01-5-july-2015" href="#user-content-loupe-01-5-july-2015"></a>
 
 - Initial release, extracted from my dotfiles (https://github.com/wincent/wincent).
-
-## Mappings<a name="loupe-mappings" href="#user-content-loupe-mappings"></a>
-
-### `<Plug>(LoupeClearHighlight)`<a name="loupe-plugloupeclearhighlight" href="#user-content-loupe-plugloupeclearhighlight"></a>
-
-Loupe maps <leader>n to <strong>[`<Plug>(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)</strong>, which clears all visible highlights (like <strong>`:nohighlight`</strong> does). To use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
-
-```
-" Instead of <leader>n, use <leader>x.
-nmap <leader>x <Plug>(LoupeClearHighlight)
-```
-
-Note that Loupe will not try to set up its <leader>n mapping if any of the following are true:
-
-- A mapping for <leader>n already exists.
-- An alternative mapping for <strong>[`<Plug>(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)</strong> has already been set up from a <strong>`.vimrc`</strong>.
-- The mapping has been suppressed by setting <strong>`g:LoupeClearHighlightMap`</strong> to 1 in your <strong>`.vimrc`</strong>.
-
-## Options<a name="loupe-options" href="#user-content-loupe-options"></a>
-
-<p align="right"><a name="gloupehighlightgroup" href="#user-content-gloupehighlightgroup"><code>g:LoupeHighlightGroup</code></a></p>
-### `g:LoupeHighlightGroup` (string, default: IncSearch)<a name="loupe-gloupehighlightgroup-string-default-incsearch" href="#user-content-loupe-gloupehighlightgroup-string-default-incsearch"></a>
-
-Specifies the <strong>`:highlight`</strong> group used to emphasize the match currently under the cursor for the current search pattern. Defaults to "IncSearch" (ie. <strong>`hl-IncSearch`</strong>). For example:
-
-```
-let g:LoupeHighlightGroup='Error'
-```
-
-To prevent any special highlighting from being applied, set this option to "" (ie. the empty string).
-
-<p align="right"><a name="gloupeloaded" href="#user-content-gloupeloaded"><code>g:LoupeLoaded</code></a></p>
-### `g:LoupeLoaded` (any, default: none)<a name="loupe-gloupeloaded-any-default-none" href="#user-content-loupe-gloupeloaded-any-default-none"></a>
-
-To prevent Loupe from being loaded, set <strong>`g:LoupeLoaded`</strong> to any value in your <strong>`.vimrc`</strong>. For example:
-
-```
-let g:LoupeLoaded=1
-```
-
-<p align="right"><a name="gloupeclearhighlightmap" href="#user-content-gloupeclearhighlightmap"><code>g:LoupeClearHighlightMap</code></a></p>
-### `g:LoupeClearHighlightMap` (boolean, default: 1)<a name="loupe-gloupeclearhighlightmap-boolean-default-1" href="#user-content-loupe-gloupeclearhighlightmap-boolean-default-1"></a>
-
-Controls whether to set up the <strong>[`<Plug>(LoupeClearHighlight)`](#user-content-plugloupeclearhighlight)</strong> mapping. To prevent any mapping from being configured, set to 0:
-
-```
-let g:LoupeClearHighlightMap=0
-```
-
-<p align="right"><a name="gloupeverymagic" href="#user-content-gloupeverymagic"><code>g:LoupeVeryMagic</code></a></p>
-### `g:LoupeVeryMagic` (boolean, default: 1)<a name="loupe-gloupeverymagic-boolean-default-1" href="#user-content-loupe-gloupeverymagic-boolean-default-1"></a>
-
-Controls whether "very magic" pattern syntax (<strong>`/\v`</strong>) is applied by default. To disable, set to 0:
-
-```
-let g:LoupeVeryMagic=0
-```
-
-<p align="right"><a name="gloupecenterresults" href="#user-content-gloupecenterresults"><code>g:LoupeCenterResults</code></a></p>
-### `g:LoupeCenterResults` (boolean, default: 1)<a name="loupe-gloupecenterresults-boolean-default-1" href="#user-content-loupe-gloupecenterresults-boolean-default-1"></a>
-
-Controls whether the match's line is vertically centered within the window when jumping (via <strong>`n`</strong>, <strong>`N`</strong> etc). To disable, set to 0:
-
-```
-let g:LoupeCenterResults=0
-```
index b6abbd7ea5bff42f06aab9ae7cc3dea13752e799..517d3f0b133db26a73620c946f42d87e0ab95625 100644 (file)
@@ -4,15 +4,15 @@ CONTENTS                                                        *loupe-contents*
 
 1. Intro          |loupe-intro|
 2. Installation   |loupe-installation|
-3. Overrides      |loupe-overrides|
-4. Related        |loupe-related|
-5. Website        |loupe-website|
-6. License        |loupe-license|
-7. Development    |loupe-development|
-8. Authors        |loupe-authors|
-9. History        |loupe-history|
-10. Mappings      |loupe-mappings|
-11. Options       |loupe-options|
+3. Mappings       |loupe-mappings|
+4. Options        |loupe-options|
+5. Overrides      |loupe-overrides|
+6. Related        |loupe-related|
+7. Website        |loupe-website|
+8. License        |loupe-license|
+9. Development    |loupe-development|
+10. Authors       |loupe-authors|
+11. History       |loupe-history|
 
 INTRO                                                              *loupe-intro*
 
@@ -77,6 +77,77 @@ To generate help tags under Pathogen, you can do so from inside Vim with:
 >
     :call pathogen#helptags()
 <
+MAPPINGS                                                        *loupe-mappings*
+
+
+                                                   *<Plug>(LoupeClearHighlight)*
+Loupe maps <leader>n to |<Plug>(LoupeClearHighlight)|, which clears all
+visible highlights (like |:nohighlight| does). To use an alternative mapping
+instead, create a different one in your |.vimrc| instead using |:nmap|:
+>
+    " Instead of <leader>n, use <leader>x.
+    nmap <leader>x <Plug>(LoupeClearHighlight)
+<
+Note that Loupe will not try to set up its <leader>n mapping if any of the
+following are true:
+
+- A mapping for <leader>n already exists.
+- An alternative mapping for |<Plug>(LoupeClearHighlight)| has already been
+  set up from a |.vimrc|.
+- The mapping has been suppressed by setting |g:LoupeClearHighlightMap| to 1
+  in your |.vimrc|.
+
+OPTIONS                                                          *loupe-options*
+
+
+                                                         *g:LoupeHighlightGroup*
+|g:LoupeHighlightGroup|                              string (default: IncSearch)
+
+Specifies the |:highlight| group used to emphasize the match currently under
+the cursor for the current search pattern. Defaults to "IncSearch" (ie.
+|hl-IncSearch|). For example:
+>
+    let g:LoupeHighlightGroup='Error'
+<
+To prevent any special highlighting from being applied, set this option to
+"" (ie. the empty string).
+
+
+                                                                 *g:LoupeLoaded*
+|g:LoupeLoaded|                                              any (default: none)
+
+To prevent Loupe from being loaded, set |g:LoupeLoaded| to any value in your
+|.vimrc|. For example:
+>
+    let g:LoupeLoaded=1
+<
+
+                                                      *g:LoupeClearHighlightMap*
+|g:LoupeClearHighlightMap|                                  boolean (default: 1)
+
+Controls whether to set up the |<Plug>(LoupeClearHighlight)| mapping. To
+prevent any mapping from being configured, set to 0:
+>
+    let g:LoupeClearHighlightMap=0
+<
+
+                                                              *g:LoupeVeryMagic*
+|g:LoupeVeryMagic|                                          boolean (default: 1)
+
+Controls whether "very magic" pattern syntax (|/\v|) is applied by default. To
+disable, set to 0:
+>
+    let g:LoupeVeryMagic=0
+<
+
+                                                          *g:LoupeCenterResults*
+|g:LoupeCenterResults|                                      boolean (default: 1)
+
+Controls whether the match's line is vertically centered within the window
+when jumping (via |n|, |N| etc). To disable, set to 0:
+>
+    let g:LoupeCenterResults=0
+<
 OVERRIDES                                                      *loupe-overrides*
 
 Loupe sets a number of search-related Vim settings to reasonable defaults in
@@ -242,75 +313,3 @@ HISTORY                                                          *loupe-history*
 
 - Initial release, extracted from my dotfiles
   (https://github.com/wincent/wincent).
-
-MAPPINGS                                                        *loupe-mappings*
-
-
-                                                   *<Plug>(LoupeClearHighlight)*
-Loupe maps <leader>n to |<Plug>(LoupeClearHighlight)|, which clears all
-visible highlights (like |:nohighlight| does). To use an alternative mapping
-instead, create a different one in your |.vimrc| instead using |:nmap|:
->
-    " Instead of <leader>n, use <leader>x.
-    nmap <leader>x <Plug>(LoupeClearHighlight)
-<
-Note that Loupe will not try to set up its <leader>n mapping if any of the
-following are true:
-
-- A mapping for <leader>n already exists.
-- An alternative mapping for |<Plug>(LoupeClearHighlight)| has already been
-  set up from a |.vimrc|.
-- The mapping has been suppressed by setting |g:LoupeClearHighlightMap| to 1
-  in your |.vimrc|.
-
-OPTIONS                                                          *loupe-options*
-
-
-                                                         *g:LoupeHighlightGroup*
-|g:LoupeHighlightGroup|                              string (default: IncSearch)
-
-Specifies the |:highlight| group used to emphasize the match currently under
-the cursor for the current search pattern. Defaults to "IncSearch" (ie.
-|hl-IncSearch|). For example:
->
-    let g:LoupeHighlightGroup='Error'
-<
-To prevent any special highlighting from being applied, set this option to
-"" (ie. the empty string).
-
-
-                                                                 *g:LoupeLoaded*
-|g:LoupeLoaded|                                              any (default: none)
-
-To prevent Loupe from being loaded, set |g:LoupeLoaded| to any value in your
-|.vimrc|. For example:
->
-    let g:LoupeLoaded=1
-<
-
-                                                      *g:LoupeClearHighlightMap*
-|g:LoupeClearHighlightMap|                                  boolean (default: 1)
-
-Controls whether to set up the |<Plug>(LoupeClearHighlight)| mapping. To
-prevent any mapping from being configured, set to 0:
->
-    let g:LoupeClearHighlightMap=0
-<
-
-                                                              *g:LoupeVeryMagic*
-|g:LoupeVeryMagic|                                          boolean (default: 1)
-
-Controls whether "very magic" pattern syntax (|/\v|) is applied by default. To
-disable, set to 0:
->
-    let g:LoupeVeryMagic=0
-<
-
-                                                          *g:LoupeCenterResults*
-|g:LoupeCenterResults|                                      boolean (default: 1)
-
-Controls whether the match's line is vertically centered within the window
-when jumping (via |n|, |N| etc). To disable, set to 0:
->
-    let g:LoupeCenterResults=0
-<
index befb973145a137ac5afcd6376dfad04d292297e3..2987662d44f82fa1c40bd44ea472020f895e6773 100644 (file)
@@ -74,6 +74,8 @@
 " :call pathogen#helptags()
 " ```
 "
+" @footer
+"
 " # Overrides
 "
 " Loupe sets a number of search-related Vim settings to reasonable defaults in