]> git.wincent.com - docvim.git/commitdiff
Overhaul testing and compilation
authorGreg Hurrell <greg@hurrell.net>
Sun, 5 Jun 2016 14:06:32 +0000 (07:06 -0700)
committerGreg Hurrell <greg@hurrell.net>
Sun, 5 Jun 2016 14:06:32 +0000 (07:06 -0700)
We now "compile" in the test suite, meaning that we pipe our translation units
through the various extraction transforms after parsing. This means three main
things:

- Everything is nested inside a `Project` node type now, consisting of one or
  more translation units.
- Nodes within the project are ordered (or reordered) to maintain desired
  section ordering.
- As we add more phases to "compilation" (eg. automated insertion of table
  of contents etc), these will get reflected in the test suite automatically.

As part of this, extracted test-specific bits out into a new `Util` module (ie.
pretty-printing methods, convenience functions) and the "compile" pipeline into
a `Compile` module.

48 files changed:
docvim.cabal
lib/Docvim/CLI.hs
lib/Docvim/Compile.hs [new file with mode: 0644]
lib/Docvim/Parse.hs
lib/Docvim/Printer/Markdown.hs
lib/Docvim/Printer/Vim.hs
lib/Docvim/Util.hs [new file with mode: 0644]
tests/fixtures/markdown/integration-ferret-plugin.golden
tests/fixtures/markdown/ordering-across-docblocks.golden [new file with mode: 0644]
tests/fixtures/markdown/ordering-across-docblocks.vim [new file with mode: 0644]
tests/fixtures/markdown/ordering-within-docblocks.golden [new file with mode: 0644]
tests/fixtures/markdown/ordering-within-docblocks.vim [new file with mode: 0644]
tests/fixtures/parser/backticks.golden
tests/fixtures/parser/blank-docblock-lines.golden
tests/fixtures/parser/blockquotes.golden
tests/fixtures/parser/br-tags.golden
tests/fixtures/parser/comments.golden
tests/fixtures/parser/empty-function.golden
tests/fixtures/parser/empty.golden
tests/fixtures/parser/endfunction.golden
tests/fixtures/parser/fenced-code-blocks.golden
tests/fixtures/parser/function-autoloaded.golden
tests/fixtures/parser/function-bang.golden
tests/fixtures/parser/function-command-variants.golden
tests/fixtures/parser/function-script-local.golden
tests/fixtures/parser/function-varargs.golden
tests/fixtures/parser/function-with-nested-contents.golden
tests/fixtures/parser/functions-with-attributes.golden
tests/fixtures/parser/headings.golden
tests/fixtures/parser/integration-docvim.golden
tests/fixtures/parser/integration-ferret-ftplugin-qf.golden
tests/fixtures/parser/integration-ferret-plugin.golden
tests/fixtures/parser/integration-ferret-private.golden
tests/fixtures/parser/integration-pinnacle.golden
tests/fixtures/parser/just-whitespace.golden
tests/fixtures/parser/let.golden
tests/fixtures/parser/lexpr.golden
tests/fixtures/parser/link-targets.golden
tests/fixtures/parser/links.golden
tests/fixtures/parser/list-items.golden
tests/fixtures/parser/lw.golden
tests/fixtures/parser/minimal-annotation.golden
tests/fixtures/parser/phrasing-content.golden
tests/fixtures/parser/plugin-annotation.golden
tests/fixtures/parser/simple-annotations.golden
tests/fixtures/parser/trailing-comment.golden
tests/fixtures/vim/integration-ferret-plugin.golden
tests/tasty.hs

index c0fb64582e0fa5657b29c5607e8e68c181a57f52..3d7ecec08cb102482c53d3ce938b6ef58587735e 100644 (file)
@@ -86,11 +86,13 @@ library
   default-language:    Haskell2010
   exposed-modules:  Docvim.AST
                  ,  Docvim.CLI
+                 ,  Docvim.Compile
                  ,  Docvim.Options
                  ,  Docvim.Parse
                  ,  Docvim.Printer.Markdown
                  ,  Docvim.Printer.Vim
                  ,  Docvim.ReadDir
+                 ,  Docvim.Util
                  ,  Docvim.Visitor
                  ,  Docvim.Visitor.Footer
                  ,  Docvim.Visitor.Mappings
index 78b16964d1b67f318c824725be0eea03d42fcbd1..24d4d402ea01824188e91318eda4c81e6892ba7a 100644 (file)
@@ -6,15 +6,11 @@ module Docvim.CLI (run) where
 import Control.Monad (when)
 import Data.Maybe (fromMaybe)
 import Docvim.Options (Options(..), options)
-import Docvim.AST (Node(Project))
+import Docvim.Compile (compile)
 import Docvim.Parse (parse)
 import Docvim.Printer.Markdown (markdown)
 import Docvim.Printer.Vim (vimHelp)
 import Docvim.ReadDir (readDir)
-import Docvim.Visitor.Footer (extractFooter)
-import Docvim.Visitor.Mappings (extractMappings)
-import Docvim.Visitor.Plugin (extractPlugin)
-import Docvim.Visitor (extract)
 import System.FilePath (takeExtension)
 import System.IO (hPutStrLn, stderr)
 
@@ -39,10 +35,7 @@ run = do
       when (verbose opts) (hPutStrLn stderr ("Parsing " ++ path))
       parse path
     ) filtered
-  let (ast, footer) = extract extractFooter $ Project parsed
-  let (ast2, plugin) = extract extractPlugin ast
-  let (ast3, mappings) = extract extractMappings ast2
-  let project = Project $ concat [plugin, [ast2], [ast3], footer]
+  let project = compile parsed
   let targets = fromMaybe [""] (outfiles opts)
   mapM_ (\target ->
       if | target == "" -> do
diff --git a/lib/Docvim/Compile.hs b/lib/Docvim/Compile.hs
new file mode 100644 (file)
index 0000000..dcf7f64
--- /dev/null
@@ -0,0 +1,16 @@
+module Docvim.Compile (compile) where
+
+import Docvim.AST (Node(Project))
+import Docvim.Visitor.Footer (extractFooter)
+import Docvim.Visitor.Mappings (extractMappings)
+import Docvim.Visitor.Plugin (extractPlugin)
+import Docvim.Visitor (extract)
+
+-- | "Compile" a set of translation units into a project.
+compile :: [Node] -> Node
+compile ns = do
+  let (ast, footer) = extract extractFooter $ Project ns
+  let (ast2, plugin) = extract extractPlugin ast
+  let (ast3, mappings) = extract extractMappings ast2
+  let project = Project $ concat [plugin, [ast3], mappings, footer]
+  project
index c0b18036c239b95ab551cf9b944e6cc0d053e671..bf7fb5a122ecc1a846750b8c462c19f363140bae 100644 (file)
@@ -1,11 +1,9 @@
 {-# LANGUAGE FlexibleContexts #-}
 
-module Docvim.Parse ( p
-                    , parse
-                    , parseUnit
-                    , pp
-                    , strip
+module Docvim.Parse ( parse
                     , rstrip
+                    , strip
+                    , unit
                     ) where
 
 import Control.Applicative ( (*>)
@@ -36,7 +34,6 @@ import Text.Parsec ( (<|>)
                    , optionMaybe
                    , optional
                    , parseTest
-                   , runParser
                    , satisfy
                    , sepBy
                    , sepBy1
@@ -58,9 +55,6 @@ import Text.ParserCombinators.Parsec.Char ( alphaNum
                                           , upper
                                           )
 
--- might want to pull this into a separate, test-only module
-import Text.Show.Pretty (ppShow)
-
 -- | Given a `description` like "fu[nction]", returns a parser that matches
 -- "fu", "fun", "func", "funct", "functi", "functio" and "function".
 --
@@ -500,18 +494,3 @@ parse fileName = parseFromFile unit fileName >>= either report return
     report err = do
       hPutStrLn stderr $ "Error: " ++ show err
       exitFailure
-
--- | To facilitate unit-testing.
-parseUnit :: String -> Either ParseError Node
-parseUnit = runParser unit () "(eval)"
-
--- | For unit testing.
-p :: String -> String
-p input = case parseUnit input of
-            Left error -> show error
-            Right ast -> ppShow ast
-
--- | To facilitate quick testing in the console.
--- pp "unlet g:var"
-pp :: String -> IO ()
-pp = putStrLn . p
index 8123a65d516de49dcd7e7b479d87f8aef839b54c..30f08e54d895a18309bd62234874a8356646f003 100644 (file)
@@ -1,13 +1,9 @@
-module Docvim.Printer.Markdown
-  ( markdown
-  , pm
-  , ppm
-  ) where
+module Docvim.Printer.Markdown (markdown) where
 
 import Control.Monad.Reader
 import Data.List (intercalate, sort)
 import Docvim.AST
-import Docvim.Parse (parseUnit, rstrip)
+import Docvim.Parse (rstrip)
 import Docvim.Visitor.Plugin (getPluginName)
 import Docvim.Visitor.Symbol (getSymbols)
 
@@ -107,13 +103,3 @@ attributesString as = unwords (map attributeToString as)
 
 gitHubAnchor :: String -> String
 gitHubAnchor n = "#user-content-" ++ sanitizeAnchor n
-
--- | For unit testing.
-pm :: String -> String
-pm input = case parseUnit input of
-            Left error -> show error
-            Right ast -> markdown ast
-
--- | For logging in the REPL.
-ppm :: String -> IO ()
-ppm = putStr . pm
index 75045c2d1f7ff0223ba058259abfc67fc4b97dfc..8ac041e329418fafef637848122dcc51175d926f 100644 (file)
@@ -1,8 +1,4 @@
-module Docvim.Printer.Vim
-  ( vimHelp
-  , ppv
-  , pv
-  ) where
+module Docvim.Printer.Vim (vimHelp) where
 
 import Control.Arrow ((***))
 import Control.Monad (join)
@@ -13,7 +9,7 @@ import Data.List (intercalate, isSuffixOf, span, sort)
 import Data.List.Split (splitOn)
 import Data.Tuple (swap)
 import Docvim.AST
-import Docvim.Parse (parseUnit, rstrip)
+import Docvim.Parse (rstrip)
 import Docvim.Visitor.Plugin (getPluginName)
 import Docvim.Visitor.Symbol (getSymbols)
 
@@ -222,13 +218,3 @@ linkTargets ls = append $ rightAlign targets ++ "\n"
     linkify l = "*" ++ l ++ "*"
     rightAlign ws = replicate (count ws) ' ' ++ ws
     count xs = maximum [textwidth - length xs, 0]
-
--- | For unit testing.
-pv :: String -> String
-pv input = case parseUnit input of
-            Left error -> show error
-            Right ast -> vimHelp ast
-
--- | For logging in the REPL.
-ppv :: String -> IO ()
-ppv = putStr . pv
diff --git a/lib/Docvim/Util.hs b/lib/Docvim/Util.hs
new file mode 100644 (file)
index 0000000..fb56871
--- /dev/null
@@ -0,0 +1,64 @@
+-- | Functions to facilitate automated and manual testing.
+module Docvim.Util ( compileUnit
+                   , p
+                   , pm
+                   , pp
+                   , ppm
+                   , ppv
+                   , pv
+                   ) where
+
+import Docvim.AST (Node)
+import Docvim.Compile (compile)
+import Docvim.Parse (unit)
+import Docvim.Printer.Markdown (markdown)
+import Docvim.Printer.Vim (vimHelp)
+import Text.Parsec (ParseError, runParser)
+import Text.Show.Pretty (ppShow)
+
+-- | Parse and compile a string containing a translation unit.
+compileUnit :: String -> Either ParseError Node
+compileUnit input = do
+  parsed <- runParser unit () "(eval)" input
+  return $ compile [parsed]
+
+-- | Convenience function: Parse and compile a string containing a translation
+-- unit, but always returns a string even in the case of an error.
+p :: String -> String
+p input = case compileUnit input of
+            Left error -> show error
+            Right ast -> ppShow ast
+
+-- | Pretty-prints the result of parsing and compiling an input string.
+--
+-- To facilitate quick testing in the REPL; example:
+--
+--     pp "unlet g:var"
+pp :: String -> IO ()
+pp = putStrLn . p
+
+-- | Parse and compile an input string into Vim help format.
+pv :: String -> String
+pv input = case compileUnit input of
+            Left error -> show error
+            Right ast -> vimHelp ast
+
+-- | Pretty-prints the result of parsing and compiling an input string and
+-- transforming into Vim help format.
+--
+-- For logging in the REPL.
+ppv :: String -> IO ()
+ppv = putStr . pv
+
+-- | Parse and compile an input string into Markdown help format.
+pm :: String -> String
+pm input = case compileUnit input of
+            Left error -> show error
+            Right ast -> markdown ast
+
+-- | Pretty-prints the result of parsing and compiling an input string and
+-- transforming into Markdown format.
+--
+-- For logging in the REPL.
+ppm :: String -> IO ()
+ppm = putStr . pm
index 683fa3fa2f933d7ddcb4b50b98fedb466c3f8d0e..fa4e0801e9fcb0d102c32f4e405e8212a624fb91 100644 (file)
@@ -54,6 +54,83 @@ To generate help tags under Pathogen, you can do so from inside Vim with:
 :call pathogen#helptags()
 ```
 
+Searches for {pattern} in all the files under the current directory (see <strong>`:pwd`</strong>), unless otherwise overridden via {options}, and displays the results in the <strong>`quickfix`</strong> listing.
+
+`ag` (The Silver Searcher) will be used preferentially if present on the system, because it is faster, falling back to `ack` and then `grep` as needed.
+
+If dispatch.vim is installed the search process will run asynchronously via the <strong>`:Make`</strong> command, otherwise it will be run synchronously via <strong>`:cexpr`</strong>. Asynchronous searches are preferred because they do not block, despite the fact that Vim itself is single threaded. The <strong>`g:FerretDispatch`</strong> option can be used to prevent the use of dispatch.vim.
+
+The {pattern} is passed through as-is to the underlying search program, and no escaping is required other than preceding spaces by a single backslash. For example, to search for "\bfoo[0-9]{2} bar\b" (ie. using `ag`'s Perl-style regular expression syntax), you could do:
+
+```
+:Ack \bfoo[0-9]{2}\ bar\b
+```
+
+Likewise, {options} are passed through. In this example, we pass the `-w` option (to search on word boundaries), and scope the search to the "foo" and "bar" subdirectories: >
+
+```
+:Ack -w something foo bar
+```
+
+As a convenience <leader>a is set-up (<strong>`<Plug>(FerretAck)`</strong>) as a shortcut to enter <strong>`Cmdline-mode`</strong> with `:Ack` inserted on the <strong>`Cmdline`</strong>. Likewise <leader>s (<strong>`<Plug>(FerretAckWord)`</strong>) is a shortcut for running <strong>`:Ack`</strong> with the word currently under the cursor.
+
+Just like <strong>`:Ack`</strong>, but instead of using the <strong>`quickfix`</strong> listing, which is global across an entire Vim instance, it uses the <strong>`location-list`</strong>, which is a per-window construct.
+
+Note that <strong>`:Lack`</strong> always runs synchronously via <strong>`:cexpr`</strong>, because dispatch.vim doesn't currently support the <strong>`location-list`</strong>.
+
+Takes all of the files currently in the <strong>`quickfix`</strong> listing and performs a substitution of all instances of {pattern} (a standard Vim search <strong>`pattern`</strong>) by {replacement}.
+
+A typical sequence consists of an <strong>`:Ack`</strong> invocation to populate the <strong>`quickfix`</strong> listing and then <strong>`:Acks`</strong> (mnemonic: "Ack substitute") to perform replacements. For example, to replace "foo" with "bar" across all files in the current directory:
+
+```
+:Ack foo
+:Acks /foo/bar/
+```
+
+Controls whether to set up the Ferret mappings, such as <strong>`<Plug>(FerretAck)`</strong> (see <strong>`ferret-mappings`</strong> for a full list). To prevent any mapping from being configured, set to 0:
+
+```
+let g:FerretMap=0
+```
+
+Ferret maps <leader>a to <strong>`<Plug>(FerretAck)`</strong>, which triggers the <strong>`:Ack`</strong> command. To use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
+
+```
+" Instead of <leader>a, use <leader>x.
+nmap <leader>x <Plug>(FerretAck)
+```
+
+Ferret maps <leader>l to <strong>`<Plug>(FerretLack)`</strong>, which triggers the <strong>`:Lack`</strong> command. To use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
+
+```
+" Instead of <leader>l, use <leader>y.
+nmap <leader>y <Plug>(FerretLack)
+```
+
+Ferret maps <leader>s (mnemonix: "selection) to <strong>`<Plug>(FerretAckWord)`</strong>, which uses <strong>`:Ack`</strong> to search for the word currently under the cursor. To use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
+
+```
+" Instead of <leader>s, use <leader>z.
+nmap <leader>z <Plug>(FerretAckWord)
+```
+
+Ferret maps <leader>r (mnemonic: "replace") to <strong>`<Plug>(FerretAcks)`</strong>, which triggers the <strong>`:Acks`</strong> command and fills the prompt with the last search term from Ferret. to use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
+
+```
+" Instead of <leader>r, use <leader>u.
+nmap <leader>u <Plug>(FerretAcks)
+```
+
+This is a utility function that is used by the <strong>`:Acks`</strong> command but is also generally useful enough to warrant being exposed publicly.
+
+It takes the files currently in the <strong>`quickfix`</strong> listing and sets them as <strong>`:args`</strong> so that they can be operated on en masse via the <strong>`:argdo`</strong> command.
+
+Controls whether to set up custom versions of the <strong>`quickfix`</strong> commands, <strong>`:cn`</strong>, <strong>`:cnf`</strong>, <strong>`:cp`</strong> an <strong>`:cpf`</strong>. These overrides vertically center the match within the viewport on each jump. To prevent the custom versions from being configured, set to 0:
+
+```
+let g:FerretQFCommands=0
+```
+
 ### Circumstances where mappings do not get set up
 
 Note that Ferret will not try to set up the <leader> mappings if any of the following are true:
@@ -273,80 +350,3 @@ Other contributors that have submitted patches include (in alphabetical order):
 0.1 (8 July 2015)
 
 - Initial release, extracted from my dotfiles (https://github.com/wincent/wincent).
-
-Searches for {pattern} in all the files under the current directory (see <strong>`:pwd`</strong>), unless otherwise overridden via {options}, and displays the results in the <strong>`quickfix`</strong> listing.
-
-`ag` (The Silver Searcher) will be used preferentially if present on the system, because it is faster, falling back to `ack` and then `grep` as needed.
-
-If dispatch.vim is installed the search process will run asynchronously via the <strong>`:Make`</strong> command, otherwise it will be run synchronously via <strong>`:cexpr`</strong>. Asynchronous searches are preferred because they do not block, despite the fact that Vim itself is single threaded. The <strong>`g:FerretDispatch`</strong> option can be used to prevent the use of dispatch.vim.
-
-The {pattern} is passed through as-is to the underlying search program, and no escaping is required other than preceding spaces by a single backslash. For example, to search for "\bfoo[0-9]{2} bar\b" (ie. using `ag`'s Perl-style regular expression syntax), you could do:
-
-```
-:Ack \bfoo[0-9]{2}\ bar\b
-```
-
-Likewise, {options} are passed through. In this example, we pass the `-w` option (to search on word boundaries), and scope the search to the "foo" and "bar" subdirectories: >
-
-```
-:Ack -w something foo bar
-```
-
-As a convenience <leader>a is set-up (<strong>`<Plug>(FerretAck)`</strong>) as a shortcut to enter <strong>`Cmdline-mode`</strong> with `:Ack` inserted on the <strong>`Cmdline`</strong>. Likewise <leader>s (<strong>`<Plug>(FerretAckWord)`</strong>) is a shortcut for running <strong>`:Ack`</strong> with the word currently under the cursor.
-
-Just like <strong>`:Ack`</strong>, but instead of using the <strong>`quickfix`</strong> listing, which is global across an entire Vim instance, it uses the <strong>`location-list`</strong>, which is a per-window construct.
-
-Note that <strong>`:Lack`</strong> always runs synchronously via <strong>`:cexpr`</strong>, because dispatch.vim doesn't currently support the <strong>`location-list`</strong>.
-
-Takes all of the files currently in the <strong>`quickfix`</strong> listing and performs a substitution of all instances of {pattern} (a standard Vim search <strong>`pattern`</strong>) by {replacement}.
-
-A typical sequence consists of an <strong>`:Ack`</strong> invocation to populate the <strong>`quickfix`</strong> listing and then <strong>`:Acks`</strong> (mnemonic: "Ack substitute") to perform replacements. For example, to replace "foo" with "bar" across all files in the current directory:
-
-```
-:Ack foo
-:Acks /foo/bar/
-```
-
-Controls whether to set up the Ferret mappings, such as <strong>`<Plug>(FerretAck)`</strong> (see <strong>`ferret-mappings`</strong> for a full list). To prevent any mapping from being configured, set to 0:
-
-```
-let g:FerretMap=0
-```
-
-Ferret maps <leader>a to <strong>`<Plug>(FerretAck)`</strong>, which triggers the <strong>`:Ack`</strong> command. To use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
-
-```
-" Instead of <leader>a, use <leader>x.
-nmap <leader>x <Plug>(FerretAck)
-```
-
-Ferret maps <leader>l to <strong>`<Plug>(FerretLack)`</strong>, which triggers the <strong>`:Lack`</strong> command. To use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
-
-```
-" Instead of <leader>l, use <leader>y.
-nmap <leader>y <Plug>(FerretLack)
-```
-
-Ferret maps <leader>s (mnemonix: "selection) to <strong>`<Plug>(FerretAckWord)`</strong>, which uses <strong>`:Ack`</strong> to search for the word currently under the cursor. To use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
-
-```
-" Instead of <leader>s, use <leader>z.
-nmap <leader>z <Plug>(FerretAckWord)
-```
-
-Ferret maps <leader>r (mnemonic: "replace") to <strong>`<Plug>(FerretAcks)`</strong>, which triggers the <strong>`:Acks`</strong> command and fills the prompt with the last search term from Ferret. to use an alternative mapping instead, create a different one in your <strong>`.vimrc`</strong> instead using <strong>`:nmap`</strong>:
-
-```
-" Instead of <leader>r, use <leader>u.
-nmap <leader>u <Plug>(FerretAcks)
-```
-
-This is a utility function that is used by the <strong>`:Acks`</strong> command but is also generally useful enough to warrant being exposed publicly.
-
-It takes the files currently in the <strong>`quickfix`</strong> listing and sets them as <strong>`:args`</strong> so that they can be operated on en masse via the <strong>`:argdo`</strong> command.
-
-Controls whether to set up custom versions of the <strong>`quickfix`</strong> commands, <strong>`:cn`</strong>, <strong>`:cnf`</strong>, <strong>`:cp`</strong> an <strong>`:cpf`</strong>. These overrides vertically center the match within the viewport on each jump. To prevent the custom versions from being configured, set to 0:
-
-```
-let g:FerretQFCommands=0
-```
diff --git a/tests/fixtures/markdown/ordering-across-docblocks.golden b/tests/fixtures/markdown/ordering-across-docblocks.golden
new file mode 100644 (file)
index 0000000..a713225
--- /dev/null
@@ -0,0 +1,15 @@
+# Example
+
+In which the narrator says some things.
+
+Stuff about mappings.
+
+## License
+
+Released under the terms of the OMFGWTFBBQLMAOPL.
+
+## History
+
+### 0.1 (not yet released)
+
+- Initial release.
diff --git a/tests/fixtures/markdown/ordering-across-docblocks.vim b/tests/fixtures/markdown/ordering-across-docblocks.vim
new file mode 100644 (file)
index 0000000..974ff25
--- /dev/null
@@ -0,0 +1,24 @@
+""
+" @mappings
+"
+" Stuff about mappings.
+"
+
+""
+" @footer
+"
+" # License
+"
+" Released under the terms of the OMFGWTFBBQLMAOPL.
+"
+" # History
+"
+" ## 0.1 (not yet released)
+"
+" - Initial release.
+
+""
+" @plugin Example An example plug-in.
+"
+" In which the narrator says some things.
+"
diff --git a/tests/fixtures/markdown/ordering-within-docblocks.golden b/tests/fixtures/markdown/ordering-within-docblocks.golden
new file mode 100644 (file)
index 0000000..a713225
--- /dev/null
@@ -0,0 +1,15 @@
+# Example
+
+In which the narrator says some things.
+
+Stuff about mappings.
+
+## License
+
+Released under the terms of the OMFGWTFBBQLMAOPL.
+
+## History
+
+### 0.1 (not yet released)
+
+- Initial release.
diff --git a/tests/fixtures/markdown/ordering-within-docblocks.vim b/tests/fixtures/markdown/ordering-within-docblocks.vim
new file mode 100644 (file)
index 0000000..253b8b6
--- /dev/null
@@ -0,0 +1,21 @@
+""
+" @mappings
+"
+" Stuff about mappings.
+"
+" @footer
+"
+" # License
+"
+" Released under the terms of the OMFGWTFBBQLMAOPL.
+"
+" # History
+"
+" ## 0.1 (not yet released)
+"
+" - Initial release.
+"
+" @plugin Example An example plug-in.
+"
+" In which the narrator says some things.
+"
index d02d8fd62f2012628735e079777c9a550bca9826..08a88c4cf794b077a1e1e86eca491569b9cdfb71 100644 (file)
@@ -1,37 +1,41 @@
-Unit
-  [ DocBlock
-      [ Paragraph
-          [ Plaintext "We"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Code "backticks"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "well."
+Project
+  [ Project
+      [ Unit
+          [ DocBlock
+              [ Paragraph
+                  [ Plaintext "We"
+                  , Whitespace
+                  , Plaintext "can"
+                  , Whitespace
+                  , Plaintext "use"
+                  , Whitespace
+                  , Code "backticks"
+                  , Whitespace
+                  , Plaintext "as"
+                  , Whitespace
+                  , Plaintext "well."
+                  ]
+              , Paragraph
+                  [ Plaintext "Just"
+                  , Whitespace
+                  , Plaintext "remember"
+                  , Whitespace
+                  , Plaintext "to"
+                  , Whitespace
+                  , Code "git commit"
+                  , Whitespace
+                  , Plaintext "at"
+                  , Whitespace
+                  , Plaintext "the"
+                  , Whitespace
+                  , Plaintext "end"
+                  , Whitespace
+                  , Plaintext "of"
+                  , Whitespace
+                  , Plaintext "it."
+                  ]
+              , Paragraph [ Code "backticks in first column work too" ]
+              ]
           ]
-      , Paragraph
-          [ Plaintext "Just"
-          , Whitespace
-          , Plaintext "remember"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Code "git commit"
-          , Whitespace
-          , Plaintext "at"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "end"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "it."
-          ]
-      , Paragraph [ Code "backticks in first column work too" ]
       ]
   ]
index 549e1cfcb01513d0fc0f19ae7031848d5817d588..2a899e8fabd3175558e08e4d610e36fe7c09c136 100644 (file)
@@ -1,7 +1,11 @@
-Unit
-  [ DocBlock
-      [ LinkTargets [ "leading-blank-lines" ]
-      , LinkTargets [ "trailing-whitespace-is-ok-too" ]
-      , LinkTargets [ "trailing-blank-lines" ]
+Project
+  [ Project
+      [ Unit
+          [ DocBlock
+              [ LinkTargets [ "leading-blank-lines" ]
+              , LinkTargets [ "trailing-whitespace-is-ok-too" ]
+              , LinkTargets [ "trailing-blank-lines" ]
+              ]
+          ]
       ]
   ]
index 65760ac264fad38de22cf4ff6305a43330c019ce..0ef7bc73edaaa79281a0c09adf06332124df652e 100644 (file)
@@ -1,85 +1,89 @@
-Unit
-  [ DocBlock
-      [ Blockquote
-          [ Paragraph
-              [ Plaintext "Here"
-              , Whitespace
-              , Plaintext "is"
-              , Whitespace
-              , Plaintext "a"
-              , Whitespace
-              , Plaintext "single-line"
-              , Whitespace
-              , Plaintext "blockquote"
-              , Whitespace
-              , Plaintext "with"
-              , Whitespace
-              , Plaintext "trailing"
-              , Whitespace
-              , Plaintext "space..."
-              ]
-          ]
-      , Blockquote
-          [ Paragraph
-              [ Plaintext "And"
-              , Whitespace
-              , Plaintext "here"
-              , Whitespace
-              , Plaintext "is"
-              , Whitespace
-              , Plaintext "a"
-              , Whitespace
-              , Plaintext "multline"
-              , Whitespace
-              , Plaintext "one."
-              ]
-          ]
-      , Blockquote
-          [ Paragraph [ Plaintext "And" , Whitespace , Plaintext "this" ]
-          , Paragraph
-              [ Plaintext "is"
-              , Whitespace
-              , Plaintext "one"
-              , Whitespace
-              , Plaintext "with"
-              , Whitespace
-              , Plaintext "a"
-              , Whitespace
-              , Plaintext "blank"
-              , Whitespace
-              , Plaintext "line"
-              , Whitespace
-              , Plaintext "in"
-              , Whitespace
-              , Plaintext "the"
-              , Whitespace
-              , Plaintext "middle."
-              ]
-          ]
-      , Blockquote
-          [ Paragraph
-              [ Plaintext "This"
-              , Whitespace
-              , Plaintext "one"
-              , Whitespace
-              , Plaintext "with"
-              , Whitespace
-              , Plaintext "multiple"
-              ]
-          , Paragraph
-              [ Plaintext "consecutive" , Whitespace , Plaintext "blanks..." ]
-          ]
-      , Blockquote
-          [ Paragraph
-              [ Plaintext "Look"
-              , BreakTag
-              , Plaintext "Line"
-              , Whitespace
-              , Plaintext "breaks"
-              , Whitespace
-              , Plaintext "work"
-              , Whitespace
-              , Plaintext "too."
+Project
+  [ Project
+      [ Unit
+          [ DocBlock
+              [ Blockquote
+                  [ Paragraph
+                      [ Plaintext "Here"
+                      , Whitespace
+                      , Plaintext "is"
+                      , Whitespace
+                      , Plaintext "a"
+                      , Whitespace
+                      , Plaintext "single-line"
+                      , Whitespace
+                      , Plaintext "blockquote"
+                      , Whitespace
+                      , Plaintext "with"
+                      , Whitespace
+                      , Plaintext "trailing"
+                      , Whitespace
+                      , Plaintext "space..."
+                      ]
+                  ]
+              , Blockquote
+                  [ Paragraph
+                      [ Plaintext "And"
+                      , Whitespace
+                      , Plaintext "here"
+                      , Whitespace
+                      , Plaintext "is"
+                      , Whitespace
+                      , Plaintext "a"
+                      , Whitespace
+                      , Plaintext "multline"
+                      , Whitespace
+                      , Plaintext "one."
+                      ]
+                  ]
+              , Blockquote
+                  [ Paragraph [ Plaintext "And" , Whitespace , Plaintext "this" ]
+                  , Paragraph
+                      [ Plaintext "is"
+                      , Whitespace
+                      , Plaintext "one"
+                      , Whitespace
+                      , Plaintext "with"
+                      , Whitespace
+                      , Plaintext "a"
+                      , Whitespace
+                      , Plaintext "blank"
+                      , Whitespace
+                      , Plaintext "line"
+                      , Whitespace
+                      , Plaintext "in"
+                      , Whitespace
+                      , Plaintext "the"
+                      , Whitespace
+                      , Plaintext "middle."
+                      ]
+                  ]
+              , Blockquote
+                  [ Paragraph
+                      [ Plaintext "This"
+                      , Whitespace
+                      , Plaintext "one"
+                      , Whitespace
+                      , Plaintext "with"
+                      , Whitespace
+                      , Plaintext "multiple"
+                      ]
+                  , Paragraph
+                      [ Plaintext "consecutive" , Whitespace , Plaintext "blanks..." ]
+                  ]
+              , Blockquote
+                  [ Paragraph
+                      [ Plaintext "Look"
+                      , BreakTag
+                      , Plaintext "Line"
+                      , Whitespace
+                      , Plaintext "breaks"
+                      , Whitespace
+                      , Plaintext "work"
+                      , Whitespace
+                      , Plaintext "too."
+                      ]
+                  ]
               ]
           ]
       ]
index e9828aafb15a4948854c60db8ef854ae66387c8e..26ca64d32e9076f569c86154e45dd15361fa3e62 100644 (file)
@@ -1,52 +1,56 @@
-Unit
-  [ DocBlock
-      [ Paragraph [ Plaintext "This." , BreakTag , Plaintext "That." ]
-      , Paragraph [ Plaintext "This." , BreakTag , Plaintext "That." ]
-      , Paragraph [ Plaintext "This." , BreakTag , Plaintext "That." ]
-      , Paragraph [ Plaintext "This." , BreakTag , Plaintext "That." ]
-      , Paragraph
-          [ Plaintext "Note"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "surrounding"
-          , Whitespace
-          , Plaintext "whitespace"
-          , BreakTag
-          , Plaintext "gets"
-          , Whitespace
-          , Plaintext "slurped"
-          , Whitespace
-          , Plaintext "(at"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "end"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "line)."
-          ]
-      , Paragraph
-          [ Plaintext "And"
-          , BreakTag
-          , Plaintext "internally"
-          , Whitespace
-          , Plaintext "too."
-          ]
-      , Paragraph
-          [ Plaintext "Also,"
-          , BreakTag
-          , Plaintext "we"
-          , BreakTag
-          , Plaintext "are"
-          , BreakTag
-          , Plaintext "case"
-          , BreakTag
-          , Plaintext "insensitive."
-          , BreakTag
+Project
+  [ Project
+      [ Unit
+          [ DocBlock
+              [ Paragraph [ Plaintext "This." , BreakTag , Plaintext "That." ]
+              , Paragraph [ Plaintext "This." , BreakTag , Plaintext "That." ]
+              , Paragraph [ Plaintext "This." , BreakTag , Plaintext "That." ]
+              , Paragraph [ Plaintext "This." , BreakTag , Plaintext "That." ]
+              , Paragraph
+                  [ Plaintext "Note"
+                  , Whitespace
+                  , Plaintext "that"
+                  , Whitespace
+                  , Plaintext "surrounding"
+                  , Whitespace
+                  , Plaintext "whitespace"
+                  , BreakTag
+                  , Plaintext "gets"
+                  , Whitespace
+                  , Plaintext "slurped"
+                  , Whitespace
+                  , Plaintext "(at"
+                  , Whitespace
+                  , Plaintext "the"
+                  , Whitespace
+                  , Plaintext "end"
+                  , Whitespace
+                  , Plaintext "of"
+                  , Whitespace
+                  , Plaintext "the"
+                  , Whitespace
+                  , Plaintext "line)."
+                  ]
+              , Paragraph
+                  [ Plaintext "And"
+                  , BreakTag
+                  , Plaintext "internally"
+                  , Whitespace
+                  , Plaintext "too."
+                  ]
+              , Paragraph
+                  [ Plaintext "Also,"
+                  , BreakTag
+                  , Plaintext "we"
+                  , BreakTag
+                  , Plaintext "are"
+                  , BreakTag
+                  , Plaintext "case"
+                  , BreakTag
+                  , Plaintext "insensitive."
+                  , BreakTag
+                  ]
+              ]
           ]
       ]
   ]
index cd73ba2e926fe630e8d2c0dfdfc63277c3acf626..940306e712f3dfc141a0db0034cf9101d733a6d2 100644 (file)
@@ -1 +1 @@
-Unit []
+Project [ Project [ Unit [] ] ]
index fdc3dbb7fc8e566a55309700b05029975ff3a382..9fe99e5f9d92c71d0599ae628726496e78eb6fb9 100644 (file)
@@ -1,9 +1,13 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = False
-      , functionName = "Foo"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = False
+              , functionName = "Foo"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          ]
+      ]
   ]
index cd73ba2e926fe630e8d2c0dfdfc63277c3acf626..940306e712f3dfc141a0db0034cf9101d733a6d2 100644 (file)
@@ -1 +1 @@
-Unit []
+Project [ Project [ Unit [] ] ]
index 7647b12229b118520b6a4c99be82a85677edcc36..1e3910c391e0c0995bee166fde409ed3f3a7ed99 100644 (file)
@@ -1,46 +1,50 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = True
-      , functionName = "A"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody =
-          [ GenericStatement "for l:item in getqflist()"
-          , GenericStatement "echo l:item"
-          , GenericStatement "endfo"
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = True
+              , functionName = "A"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody =
+                  [ GenericStatement "for l:item in getqflist()"
+                  , GenericStatement "echo l:item"
+                  , GenericStatement "endfo"
+                  ]
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "B"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody =
+                  [ GenericStatement "for l:item in getqflist()"
+                  , GenericStatement "echo l:item"
+                  , GenericStatement "endfor"
+                  ]
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "C"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody =
+                  [ GenericStatement "for l:item in getqflist()"
+                  , GenericStatement "echo l:item"
+                  , GenericStatement "endfo"
+                  ]
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "D"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody =
+                  [ GenericStatement "for l:item in getqflist()"
+                  , GenericStatement "echo l:item"
+                  , GenericStatement "endfo"
+                  ]
+              }
           ]
-      }
-  , FunctionDeclaration
-      { functionBang = True
-      , functionName = "B"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody =
-          [ GenericStatement "for l:item in getqflist()"
-          , GenericStatement "echo l:item"
-          , GenericStatement "endfor"
-          ]
-      }
-  , FunctionDeclaration
-      { functionBang = True
-      , functionName = "C"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody =
-          [ GenericStatement "for l:item in getqflist()"
-          , GenericStatement "echo l:item"
-          , GenericStatement "endfo"
-          ]
-      }
-  , FunctionDeclaration
-      { functionBang = True
-      , functionName = "D"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody =
-          [ GenericStatement "for l:item in getqflist()"
-          , GenericStatement "echo l:item"
-          , GenericStatement "endfo"
-          ]
-      }
+      ]
   ]
index d15930880af2cdcb0e242666b10909ddefa57f64..8c3c7e7dff22c68f45f60fe7c531a96851d4d1ca 100644 (file)
@@ -1,14 +1,18 @@
-Unit
-  [ DocBlock
-      [ Fenced
-          [ "Here is a fenced code block."
-          , "    All internal     whitespace is preserved."
-          , "But not trailing whitespace."
-          ]
-      , Fenced
-          [ "We can do better too."
-          , "  This will be good."
-          , "Adapt to find real indent."
+Project
+  [ Project
+      [ Unit
+          [ DocBlock
+              [ Fenced
+                  [ "Here is a fenced code block."
+                  , "    All internal     whitespace is preserved."
+                  , "But not trailing whitespace."
+                  ]
+              , Fenced
+                  [ "We can do better too."
+                  , "  This will be good."
+                  , "Adapt to find real indent."
+                  ]
+              ]
           ]
       ]
   ]
index c12d50b52915f1d0d5e0fb47a4b369b312b8c31c..e4f0a75466b80ea5198615bfc79d544482835d9a 100644 (file)
@@ -1,9 +1,13 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = False
-      , functionName = "this#that#the#other"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = False
+              , functionName = "this#that#the#other"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          ]
+      ]
   ]
index 3016723cf132fa36b539abefc259df2feee6357d..70494c445ac2e6be37eac2a0a51cf973d0274297 100644 (file)
@@ -1,9 +1,13 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = True
-      , functionName = "Foo"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = True
+              , functionName = "Foo"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          ]
+      ]
   ]
index f7680222b1090ef48bd316502c7d5d7e7fd08bf5..f359d0841744d82c12931f42a1f1a3ec35eb9bac 100644 (file)
@@ -1,79 +1,83 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function1"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function2"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function3"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function4"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function5"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function6"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function7"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function8"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = True
-      , functionName = "FunctionWithBang1"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = True
-      , functionName = "FunctionWithBang2"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = True
-      , functionName = "FunctionWithBang3"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function1"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function2"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function3"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function4"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function5"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function6"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function7"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function8"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "FunctionWithBang1"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "FunctionWithBang2"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "FunctionWithBang3"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          ]
+      ]
   ]
index 5dcad52153c5549b0d1b84608ef3c2d4e70c3a2c..a32207d7000082e20ac007efd2bd4b24d9d1028a 100644 (file)
@@ -1,23 +1,27 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = True
-      , functionName = "s:foo"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = True
-      , functionName = "s:underscores_too"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = True
-      , functionName = "s:"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody = []
-      }
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = True
+              , functionName = "s:foo"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "s:underscores_too"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = True
+              , functionName = "s:"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody = []
+              }
+          ]
+      ]
   ]
index b945c6d96b577d7664195d1b661b625dbce8898b..feb51fa6014c62659bceda4b7f7d85a8f96dea94 100644 (file)
@@ -1,25 +1,29 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = True
-      , functionName = "Foo"
-      , functionArguments =
-          ArgumentList [ Argument "varargs" , Argument "..." ]
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Bar"
-      , functionArguments = ArgumentList [ Argument "..." ]
-      , functionAttributes = []
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Baz"
-      , functionArguments =
-          ArgumentList [ Argument "..." , Argument "other" ]
-      , functionAttributes = []
-      , functionBody = []
-      }
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = True
+              , functionName = "Foo"
+              , functionArguments =
+                  ArgumentList [ Argument "varargs" , Argument "..." ]
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Bar"
+              , functionArguments = ArgumentList [ Argument "..." ]
+              , functionAttributes = []
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Baz"
+              , functionArguments =
+                  ArgumentList [ Argument "..." , Argument "other" ]
+              , functionAttributes = []
+              , functionBody = []
+              }
+          ]
+      ]
   ]
index e5f3bfb68f2e19db44746f0b6badafe3fa1d5f8a..bd1b841678c2c9461a0f7a1c2f1696160ac85f6d 100644 (file)
@@ -1,10 +1,14 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = False
-      , functionName = "Foo"
-      , functionArguments = ArgumentList []
-      , functionAttributes = []
-      , functionBody =
-          [ LetStatement { letLexpr = "g:foo" , letValue = "1" } ]
-      }
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = False
+              , functionName = "Foo"
+              , functionArguments = ArgumentList []
+              , functionAttributes = []
+              , functionBody =
+                  [ LetStatement { letLexpr = "g:foo" , letValue = "1" } ]
+              }
+          ]
+      ]
   ]
index 9e0e2dd6c1f9827103e919c3aefdc9eb838b54cc..f2ad7ccc05ff29b56943172c77e946091176ff58 100644 (file)
@@ -1,37 +1,41 @@
-Unit
-  [ FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function1"
-      , functionArguments = ArgumentList []
-      , functionAttributes = [ "abort" ]
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function2"
-      , functionArguments = ArgumentList []
-      , functionAttributes = [ "range" ]
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function3"
-      , functionArguments = ArgumentList []
-      , functionAttributes = [ "dict" ]
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function4"
-      , functionArguments = ArgumentList []
-      , functionAttributes = [ "abort" , "range" , "dict" ]
-      , functionBody = []
-      }
-  , FunctionDeclaration
-      { functionBang = False
-      , functionName = "Function5"
-      , functionArguments = ArgumentList []
-      , functionAttributes = [ "abort" , "range" , "abort" , "abort" ]
-      , functionBody = []
-      }
+Project
+  [ Project
+      [ Unit
+          [ FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function1"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "abort" ]
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function2"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "range" ]
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function3"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "dict" ]
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function4"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "abort" , "range" , "dict" ]
+              , functionBody = []
+              }
+          , FunctionDeclaration
+              { functionBang = False
+              , functionName = "Function5"
+              , functionArguments = ArgumentList []
+              , functionAttributes = [ "abort" , "range" , "abort" , "abort" ]
+              , functionBody = []
+              }
+          ]
+      ]
   ]
index 796ca47075da2f5fb10a08fa5018303393d1c7b4..27b65afa525ff3b8f219da84894350b4e808e320 100644 (file)
@@ -1,7 +1,11 @@
-Unit
-  [ DocBlock
-      [ HeadingAnnotation "Heading"
-      , SubheadingAnnotation "Subheading"
-      , HeadingAnnotation "Heading with trailing whitespace"
+Project
+  [ Project
+      [ Unit
+          [ DocBlock
+              [ HeadingAnnotation "Heading"
+              , SubheadingAnnotation "Subheading"
+              , HeadingAnnotation "Heading with trailing whitespace"
+              ]
+          ]
       ]
   ]
index ae232e719ec0cf6ea88033b32ef0eb13b3b2bd02..fc6e217d440171b0a10a7ffb7cb91602bd6d913e 100644 (file)
-Unit
-  [ DocBlock
-      [ PluginAnnotation
-          "docvim" "Syntax highlighting for docvim comments"
-      , LinkTargets [ "vim-docvim" ]
-      , HeadingAnnotation "Intro"
-      , Paragraph
-          [ Plaintext "vim-docvim"
-          , Whitespace
-          , Plaintext "provides"
-          , Whitespace
-          , Plaintext "additional"
-          , Whitespace
-          , Plaintext "syntax"
-          , Whitespace
-          , Plaintext "highlighting"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "script"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "contain"
-          , Whitespace
-          , Plaintext "embedded"
-          , Whitespace
-          , Plaintext "docvim"
-          , Whitespace
-          , Plaintext "comments."
-          ]
-      , Paragraph
-          [ Plaintext "docvim"
-          , Whitespace
-          , Plaintext "(the"
-          , Whitespace
-          , Plaintext "tool,"
-          , Whitespace
-          , Plaintext "not"
-          , Whitespace
-          , Plaintext "this"
-          , Whitespace
-          , Plaintext "plug-in)"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "documentation"
-          , Whitespace
-          , Plaintext "generator"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "processes"
-          , Whitespace
-          , Plaintext "those"
-          , Whitespace
-          , Plaintext "embedded"
-          , Whitespace
-          , Plaintext "comments"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "produces"
-          , Whitespace
-          , Plaintext "documentation"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "Markdown"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "\"help\""
-          , Whitespace
-          , Plaintext "formats."
-          , Whitespace
-          , Plaintext "To"
-          , Whitespace
-          , Plaintext "avoid"
-          , Whitespace
-          , Plaintext "confusion,"
-          , Whitespace
-          , Plaintext "this"
-          , Whitespace
-          , Plaintext "document"
-          , Whitespace
-          , Plaintext "refers"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "plug-in"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "\"vim-docvim\""
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "separate"
-          , Whitespace
-          , Plaintext "generation"
-          , Whitespace
-          , Plaintext "tool"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "\"docvim\"."
-          ]
-      , HeadingAnnotation "Installation"
-      , Paragraph
-          [ Plaintext "To"
-          , Whitespace
-          , Plaintext "install"
-          , Whitespace
-          , Plaintext "vim-docvim,"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Plaintext "your"
-          , Whitespace
-          , Plaintext "plug-in"
-          , Whitespace
-          , Plaintext "management"
-          , Whitespace
-          , Plaintext "system"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "choice."
-          ]
-      , Paragraph
-          [ Plaintext "If"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "don't"
-          , Whitespace
-          , Plaintext "have"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "\"plug-in"
-          , Whitespace
-          , Plaintext "management"
-          , Whitespace
-          , Plaintext "system"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "choice\","
-          , Whitespace
-          , Plaintext "I"
-          , Whitespace
-          , Plaintext "recommend"
-          , Whitespace
-          , Plaintext "Pathogen"
-          , Whitespace
-          , Plaintext "(https://github.com/tpope/vim-pathogen)"
-          , Whitespace
-          , Plaintext "due"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "its"
-          , Whitespace
-          , Plaintext "simplicity"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "robustness."
-          , Whitespace
-          , Plaintext "Assuming"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "have"
-          , Whitespace
-          , Plaintext "Pathogen"
+Project
+  [ PluginAnnotation
+      "docvim" "Syntax highlighting for docvim comments"
+  , LinkTargets [ "vim-docvim" ]
+  , HeadingAnnotation "Intro"
+  , Paragraph
+      [ Plaintext "vim-docvim"
+      , Whitespace
+      , Plaintext "provides"
+      , Whitespace
+      , Plaintext "additional"
+      , Whitespace
+      , Plaintext "syntax"
+      , Whitespace
+      , Plaintext "highlighting"
+      , Whitespace
+      , Plaintext "for"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "script"
+      , Whitespace
+      , Plaintext "files"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "contain"
+      , Whitespace
+      , Plaintext "embedded"
+      , Whitespace
+      , Plaintext "docvim"
+      , Whitespace
+      , Plaintext "comments."
+      ]
+  , Paragraph
+      [ Plaintext "docvim"
+      , Whitespace
+      , Plaintext "(the"
+      , Whitespace
+      , Plaintext "tool,"
+      , Whitespace
+      , Plaintext "not"
+      , Whitespace
+      , Plaintext "this"
+      , Whitespace
+      , Plaintext "plug-in)"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "documentation"
+      , Whitespace
+      , Plaintext "generator"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "processes"
+      , Whitespace
+      , Plaintext "those"
+      , Whitespace
+      , Plaintext "embedded"
+      , Whitespace
+      , Plaintext "comments"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "produces"
+      , Whitespace
+      , Plaintext "documentation"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "Markdown"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "\"help\""
+      , Whitespace
+      , Plaintext "formats."
+      , Whitespace
+      , Plaintext "To"
+      , Whitespace
+      , Plaintext "avoid"
+      , Whitespace
+      , Plaintext "confusion,"
+      , Whitespace
+      , Plaintext "this"
+      , Whitespace
+      , Plaintext "document"
+      , Whitespace
+      , Plaintext "refers"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "plug-in"
+      , Whitespace
+      , Plaintext "as"
+      , Whitespace
+      , Plaintext "\"vim-docvim\""
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "separate"
+      , Whitespace
+      , Plaintext "generation"
+      , Whitespace
+      , Plaintext "tool"
+      , Whitespace
+      , Plaintext "as"
+      , Whitespace
+      , Plaintext "\"docvim\"."
+      ]
+  , HeadingAnnotation "Installation"
+  , Paragraph
+      [ Plaintext "To"
+      , Whitespace
+      , Plaintext "install"
+      , Whitespace
+      , Plaintext "vim-docvim,"
+      , Whitespace
+      , Plaintext "use"
+      , Whitespace
+      , Plaintext "your"
+      , Whitespace
+      , Plaintext "plug-in"
+      , Whitespace
+      , Plaintext "management"
+      , Whitespace
+      , Plaintext "system"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "choice."
+      ]
+  , Paragraph
+      [ Plaintext "If"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "don't"
+      , Whitespace
+      , Plaintext "have"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "\"plug-in"
+      , Whitespace
+      , Plaintext "management"
+      , Whitespace
+      , Plaintext "system"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "choice\","
+      , Whitespace
+      , Plaintext "I"
+      , Whitespace
+      , Plaintext "recommend"
+      , Whitespace
+      , Plaintext "Pathogen"
+      , Whitespace
+      , Plaintext "(https://github.com/tpope/vim-pathogen)"
+      , Whitespace
+      , Plaintext "due"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "its"
+      , Whitespace
+      , Plaintext "simplicity"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "robustness."
+      , Whitespace
+      , Plaintext "Assuming"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "have"
+      , Whitespace
+      , Plaintext "Pathogen"
+      , Whitespace
+      , Plaintext "installed"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "configured,"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "want"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "install"
+      , Whitespace
+      , Plaintext "vim-docvim"
+      , Whitespace
+      , Plaintext "into"
+      , Whitespace
+      , Code "~/.vim/bundle"
+      , Plaintext ","
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "can"
+      , Whitespace
+      , Plaintext "do"
+      , Whitespace
+      , Plaintext "so"
+      , Whitespace
+      , Plaintext "with:"
+      ]
+  , Fenced
+      [ "git clone https://github.com/wincent/vim-docvim.git ~/.vim/bundle/vim-docvim"
+      ]
+  , Paragraph
+      [ Plaintext "Alternatively,"
+      , Whitespace
+      , Plaintext "if"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "use"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "Git"
+      , Whitespace
+      , Plaintext "submodule"
+      , Whitespace
+      , Plaintext "for"
+      , Whitespace
+      , Plaintext "each"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "plug-in,"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "could"
+      , Whitespace
+      , Plaintext "do"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "following"
+      , Whitespace
+      , Plaintext "after"
+      , Whitespace
+      , Code "cd"
+      , Plaintext "-ing"
+      , Whitespace
+      , Plaintext "into"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "top-level"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "your"
+      , Whitespace
+      , Plaintext "Git"
+      , Whitespace
+      , Plaintext "superproject:"
+      ]
+  , Fenced
+      [ "git submodule add https://github.com/wincent/vim-docvim.git ~/vim/bundle/vim-docvim"
+      , "git submodule init"
+      ]
+  , Paragraph
+      [ Plaintext "To"
+      , Whitespace
+      , Plaintext "generate"
+      , Whitespace
+      , Plaintext "help"
+      , Whitespace
+      , Plaintext "tags"
+      , Whitespace
+      , Plaintext "under"
+      , Whitespace
+      , Plaintext "Pathogen,"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "can"
+      , Whitespace
+      , Plaintext "do"
+      , Whitespace
+      , Plaintext "so"
+      , Whitespace
+      , Plaintext "from"
+      , Whitespace
+      , Plaintext "inside"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "with:"
+      ]
+  , Fenced [ ":call pathogen#helptags()" ]
+  , HeadingAnnotation "Related"
+  , Paragraph
+      [ Plaintext "The"
+      , Whitespace
+      , Plaintext "docvim"
+      , Whitespace
+      , Plaintext "tool"
+      , Whitespace
+      , Plaintext "itself"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "Haskell"
+      , Whitespace
+      , Plaintext "module,"
+      , Whitespace
+      , Plaintext "available"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , Paragraph
+      [ Plaintext "http://hackage.haskell.org/package/docvim" ]
+  , Paragraph
+      [ Plaintext "The"
+      , Whitespace
+      , Plaintext "official"
+      , Whitespace
+      , Plaintext "source"
+      , Whitespace
+      , Plaintext "code"
+      , Whitespace
+      , Plaintext "repo"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , Paragraph [ Plaintext "http://git.wincent.com/docvim.git" ]
+  , Paragraph
+      [ Plaintext "Mirrors"
+      , Whitespace
+      , Plaintext "exist"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , List
+      [ ListItem [ Plaintext "https://github.com/wincent/docvim" ]
+      , ListItem [ Plaintext "https://gitlab.com/wincent/docvim" ]
+      , ListItem [ Plaintext "https://bitbucket.org/ghurrell/docvim" ]
+      ]
+  , HeadingAnnotation "Website"
+  , Paragraph
+      [ Plaintext "The"
+      , Whitespace
+      , Plaintext "official"
+      , Whitespace
+      , Plaintext "vim-docvim"
+      , Whitespace
+      , Plaintext "source"
+      , Whitespace
+      , Plaintext "code"
+      , Whitespace
+      , Plaintext "repo"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , Paragraph [ Plaintext "http://git.wincent.com/vim-docvim.git" ]
+  , Paragraph
+      [ Plaintext "A"
+      , Whitespace
+      , Plaintext "mirror"
+      , Whitespace
+      , Plaintext "exists"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , Paragraph [ Plaintext "https://github.com/wincent/vim-docvim" ]
+  , Paragraph
+      [ Plaintext "Official"
+      , Whitespace
+      , Plaintext "releases"
+      , Whitespace
+      , Plaintext "are"
+      , Whitespace
+      , Plaintext "listed"
+      , Whitespace
+      , Plaintext "at:"
+      ]
+  , Paragraph
+      [ Plaintext
+          "http://www.vim.org/scripts/script.php?script_id=[TODO]"
+      ]
+  , HeadingAnnotation "License"
+  , Paragraph
+      [ Plaintext "Copyright"
+      , Whitespace
+      , Plaintext "(c)"
+      , Whitespace
+      , Plaintext "2015-present"
+      , Whitespace
+      , Plaintext "Greg"
+      , Whitespace
+      , Plaintext "Hurrell"
+      ]
+  , Paragraph
+      [ Plaintext "Permission"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "hereby"
+      , Whitespace
+      , Plaintext "granted,"
+      , Whitespace
+      , Plaintext "free"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "charge,"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "any"
+      , Whitespace
+      , Plaintext "person"
+      , Whitespace
+      , Plaintext "obtaining"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "copy"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "this"
+      , Whitespace
+      , Plaintext "software"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "associated"
+      , Whitespace
+      , Plaintext "documentation"
+      , Whitespace
+      , Plaintext "files"
+      , Whitespace
+      , Plaintext "(the"
+      , Whitespace
+      , Plaintext "\"Software\"),"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "deal"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "Software"
+      , Whitespace
+      , Plaintext "without"
+      , Whitespace
+      , Plaintext "restriction,"
+      , Whitespace
+      , Plaintext "including"
+      , Whitespace
+      , Plaintext "without"
+      , Whitespace
+      , Plaintext "limitation"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "rights"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "use,"
+      , Whitespace
+      , Plaintext "copy,"
+      , Whitespace
+      , Plaintext "modify,"
+      , Whitespace
+      , Plaintext "merge,"
+      , Whitespace
+      , Plaintext "publish,"
+      , Whitespace
+      , Plaintext "distribute,"
+      , Whitespace
+      , Plaintext "sublicense,"
+      , Whitespace
+      , Plaintext "and/or"
+      , Whitespace
+      , Plaintext "sell"
+      , Whitespace
+      , Plaintext "copies"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "Software,"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "permit"
+      , Whitespace
+      , Plaintext "persons"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "whom"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "Software"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "furnished"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "do"
+      , Whitespace
+      , Plaintext "so,"
+      , Whitespace
+      , Plaintext "subject"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "following"
+      , Whitespace
+      , Plaintext "conditions:"
+      ]
+  , Paragraph
+      [ Plaintext "The"
+      , Whitespace
+      , Plaintext "above"
+      , Whitespace
+      , Plaintext "copyright"
+      , Whitespace
+      , Plaintext "notice"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "this"
+      , Whitespace
+      , Plaintext "permission"
+      , Whitespace
+      , Plaintext "notice"
+      , Whitespace
+      , Plaintext "shall"
+      , Whitespace
+      , Plaintext "be"
+      , Whitespace
+      , Plaintext "included"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "all"
+      , Whitespace
+      , Plaintext "copies"
+      , Whitespace
+      , Plaintext "or"
+      , Whitespace
+      , Plaintext "substantial"
+      , Whitespace
+      , Plaintext "portions"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "Software."
+      ]
+  , Paragraph
+      [ Plaintext "THE"
+      , Whitespace
+      , Plaintext "SOFTWARE"
+      , Whitespace
+      , Plaintext "IS"
+      , Whitespace
+      , Plaintext "PROVIDED"
+      , Whitespace
+      , Plaintext "\"AS"
+      , Whitespace
+      , Plaintext "IS\","
+      , Whitespace
+      , Plaintext "WITHOUT"
+      , Whitespace
+      , Plaintext "WARRANTY"
+      , Whitespace
+      , Plaintext "OF"
+      , Whitespace
+      , Plaintext "ANY"
+      , Whitespace
+      , Plaintext "KIND,"
+      , Whitespace
+      , Plaintext "EXPRESS"
+      , Whitespace
+      , Plaintext "OR"
+      , Whitespace
+      , Plaintext "IMPLIED,"
+      , Whitespace
+      , Plaintext "INCLUDING"
+      , Whitespace
+      , Plaintext "BUT"
+      , Whitespace
+      , Plaintext "NOT"
+      , Whitespace
+      , Plaintext "LIMITED"
+      , Whitespace
+      , Plaintext "TO"
+      , Whitespace
+      , Plaintext "THE"
+      , Whitespace
+      , Plaintext "WARRANTIES"
+      , Whitespace
+      , Plaintext "OF"
+      , Whitespace
+      , Plaintext "MERCHANTABILITY,"
+      , Whitespace
+      , Plaintext "FITNESS"
+      , Whitespace
+      , Plaintext "FOR"
+      , Whitespace
+      , Plaintext "A"
+      , Whitespace
+      , Plaintext "PARTICULAR"
+      , Whitespace
+      , Plaintext "PURPOSE"
+      , Whitespace
+      , Plaintext "AND"
+      , Whitespace
+      , Plaintext "NONINFRINGEMENT."
+      , Whitespace
+      , Plaintext "IN"
+      , Whitespace
+      , Plaintext "NO"
+      , Whitespace
+      , Plaintext "EVENT"
+      , Whitespace
+      , Plaintext "SHALL"
+      , Whitespace
+      , Plaintext "THE"
+      , Whitespace
+      , Plaintext "AUTHORS"
+      , Whitespace
+      , Plaintext "OR"
+      , Whitespace
+      , Plaintext "COPYRIGHT"
+      , Whitespace
+      , Plaintext "HOLDERS"
+      , Whitespace
+      , Plaintext "BE"
+      , Whitespace
+      , Plaintext "LIABLE"
+      , Whitespace
+      , Plaintext "FOR"
+      , Whitespace
+      , Plaintext "ANY"
+      , Whitespace
+      , Plaintext "CLAIM,"
+      , Whitespace
+      , Plaintext "DAMAGES"
+      , Whitespace
+      , Plaintext "OR"
+      , Whitespace
+      , Plaintext "OTHER"
+      , Whitespace
+      , Plaintext "LIABILITY,"
+      , Whitespace
+      , Plaintext "WHETHER"
+      , Whitespace
+      , Plaintext "IN"
+      , Whitespace
+      , Plaintext "AN"
+      , Whitespace
+      , Plaintext "ACTION"
+      , Whitespace
+      , Plaintext "OF"
+      , Whitespace
+      , Plaintext "CONTRACT,"
+      , Whitespace
+      , Plaintext "TORT"
+      , Whitespace
+      , Plaintext "OR"
+      , Whitespace
+      , Plaintext "OTHERWISE,"
+      , Whitespace
+      , Plaintext "ARISING"
+      , Whitespace
+      , Plaintext "FROM,"
+      , Whitespace
+      , Plaintext "OUT"
+      , Whitespace
+      , Plaintext "OF"
+      , Whitespace
+      , Plaintext "OR"
+      , Whitespace
+      , Plaintext "IN"
+      , Whitespace
+      , Plaintext "CONNECTION"
+      , Whitespace
+      , Plaintext "WITH"
+      , Whitespace
+      , Plaintext "THE"
+      , Whitespace
+      , Plaintext "SOFTWARE"
+      , Whitespace
+      , Plaintext "OR"
+      , Whitespace
+      , Plaintext "THE"
+      , Whitespace
+      , Plaintext "USE"
+      , Whitespace
+      , Plaintext "OR"
+      , Whitespace
+      , Plaintext "OTHER"
+      , Whitespace
+      , Plaintext "DEALINGS"
+      , Whitespace
+      , Plaintext "IN"
+      , Whitespace
+      , Plaintext "THE"
+      , Whitespace
+      , Plaintext "SOFTWARE."
+      ]
+  , HeadingAnnotation "Development"
+  , SubheadingAnnotation "Contributing patches"
+  , Paragraph
+      [ Plaintext "Patches"
+      , Whitespace
+      , Plaintext "can"
+      , Whitespace
+      , Plaintext "be"
+      , Whitespace
+      , Plaintext "sent"
+      , Whitespace
+      , Plaintext "via"
+      , Whitespace
+      , Plaintext "mail"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "greg@hurrell.net,"
+      , Whitespace
+      , Plaintext "or"
+      , Whitespace
+      , Plaintext "as"
+      , Whitespace
+      , Plaintext "GitHub"
+      , Whitespace
+      , Plaintext "pull"
+      , Whitespace
+      , Plaintext "requests"
+      , Whitespace
+      , Plaintext "at:"
+      , Whitespace
+      , Plaintext "https://github.com/wincent/vim-docvim/pulls"
+      ]
+  , SubheadingAnnotation "Cutting a new release"
+  , Paragraph
+      [ Plaintext "At"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "moment"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "release"
+      , Whitespace
+      , Plaintext "process"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "manual:"
+      ]
+  , List
+      [ ListItem
+          [ Plaintext "Perform"
           , Whitespace
-          , Plaintext "installed"
+          , Plaintext "final"
           , Whitespace
-          , Plaintext "and"
+          , Plaintext "sanity"
           , Whitespace
-          , Plaintext "configured,"
+          , Plaintext "checks"
           , Whitespace
           , Plaintext "and"
           , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "want"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "install"
-          , Whitespace
-          , Plaintext "vim-docvim"
-          , Whitespace
-          , Plaintext "into"
-          , Whitespace
-          , Code "~/.vim/bundle"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "so"
+          , Plaintext "manual"
           , Whitespace
-          , Plaintext "with:"
+          , Plaintext "testing"
           ]
-      , Fenced
-          [ "git clone https://github.com/wincent/vim-docvim.git ~/.vim/bundle/vim-docvim"
-          ]
-      , Paragraph
-          [ Plaintext "Alternatively,"
-          , Whitespace
-          , Plaintext "if"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "Git"
-          , Whitespace
-          , Plaintext "submodule"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "each"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "plug-in,"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "could"
-          , Whitespace
-          , Plaintext "do"
+      , ListItem
+          [ Plaintext "Update"
           , Whitespace
           , Plaintext "the"
           , Whitespace
-          , Plaintext "following"
+          , Link "docvim-history"
           , Whitespace
-          , Plaintext "after"
-          , Whitespace
-          , Code "cd"
-          , Plaintext "-ing"
-          , Whitespace
-          , Plaintext "into"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "top-level"
+          , Plaintext "section"
           , Whitespace
           , Plaintext "of"
           , Whitespace
-          , Plaintext "your"
-          , Whitespace
-          , Plaintext "Git"
-          , Whitespace
-          , Plaintext "superproject:"
-          ]
-      , Fenced
-          [ "git submodule add https://github.com/wincent/vim-docvim.git ~/vim/bundle/vim-docvim"
-          , "git submodule init"
-          ]
-      , Paragraph
-          [ Plaintext "To"
-          , Whitespace
-          , Plaintext "generate"
-          , Whitespace
-          , Plaintext "help"
-          , Whitespace
-          , Plaintext "tags"
-          , Whitespace
-          , Plaintext "under"
-          , Whitespace
-          , Plaintext "Pathogen,"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "so"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "inside"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "with:"
-          ]
-      , Fenced [ ":call pathogen#helptags()" ]
-      , HeadingAnnotation "Related"
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "docvim"
-          , Whitespace
-          , Plaintext "tool"
-          , Whitespace
-          , Plaintext "itself"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "Haskell"
-          , Whitespace
-          , Plaintext "module,"
-          , Whitespace
-          , Plaintext "available"
-          , Whitespace
-          , Plaintext "at:"
-          ]
-      , Paragraph
-          [ Plaintext "http://hackage.haskell.org/package/docvim" ]
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "official"
-          , Whitespace
-          , Plaintext "source"
-          , Whitespace
-          , Plaintext "code"
-          , Whitespace
-          , Plaintext "repo"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "at:"
-          ]
-      , Paragraph [ Plaintext "http://git.wincent.com/docvim.git" ]
-      , Paragraph
-          [ Plaintext "Mirrors"
-          , Whitespace
-          , Plaintext "exist"
-          , Whitespace
-          , Plaintext "at:"
-          ]
-      , List
-          [ ListItem [ Plaintext "https://github.com/wincent/docvim" ]
-          , ListItem [ Plaintext "https://gitlab.com/wincent/docvim" ]
-          , ListItem [ Plaintext "https://bitbucket.org/ghurrell/docvim" ]
-          ]
-      , HeadingAnnotation "Website"
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "official"
-          , Whitespace
-          , Plaintext "vim-docvim"
-          , Whitespace
-          , Plaintext "source"
-          , Whitespace
-          , Plaintext "code"
-          , Whitespace
-          , Plaintext "repo"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "at:"
-          ]
-      , Paragraph [ Plaintext "http://git.wincent.com/vim-docvim.git" ]
-      , Paragraph
-          [ Plaintext "A"
-          , Whitespace
-          , Plaintext "mirror"
-          , Whitespace
-          , Plaintext "exists"
-          , Whitespace
-          , Plaintext "at:"
-          ]
-      , Paragraph [ Plaintext "https://github.com/wincent/vim-docvim" ]
-      , Paragraph
-          [ Plaintext "Official"
-          , Whitespace
-          , Plaintext "releases"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "listed"
+          , Plaintext "the"
           , Whitespace
-          , Plaintext "at:"
-          ]
-      , Paragraph
-          [ Plaintext
-              "http://www.vim.org/scripts/script.php?script_id=[TODO]"
+          , Plaintext "documentation"
           ]
-      , HeadingAnnotation "License"
-      , Paragraph
-          [ Plaintext "Copyright"
-          , Whitespace
-          , Plaintext "(c)"
+      , ListItem
+          [ Plaintext "Verify"
           , Whitespace
-          , Plaintext "2015-present"
+          , Plaintext "clean"
           , Whitespace
-          , Plaintext "Greg"
+          , Plaintext "work"
           , Whitespace
-          , Plaintext "Hurrell"
+          , Plaintext "tree:"
           ]
-      , Paragraph
-          [ Plaintext "Permission"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "hereby"
-          , Whitespace
-          , Plaintext "granted,"
-          , Whitespace
-          , Plaintext "free"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "charge,"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "any"
-          , Whitespace
-          , Plaintext "person"
-          , Whitespace
-          , Plaintext "obtaining"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "copy"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "this"
-          , Whitespace
-          , Plaintext "software"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "associated"
-          , Whitespace
-          , Plaintext "documentation"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "(the"
-          , Whitespace
-          , Plaintext "\"Software\"),"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "deal"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "Software"
-          , Whitespace
-          , Plaintext "without"
-          , Whitespace
-          , Plaintext "restriction,"
-          , Whitespace
-          , Plaintext "including"
-          , Whitespace
-          , Plaintext "without"
-          , Whitespace
-          , Plaintext "limitation"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "rights"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "use,"
-          , Whitespace
-          , Plaintext "copy,"
-          , Whitespace
-          , Plaintext "modify,"
-          , Whitespace
-          , Plaintext "merge,"
-          , Whitespace
-          , Plaintext "publish,"
-          , Whitespace
-          , Plaintext "distribute,"
-          , Whitespace
-          , Plaintext "sublicense,"
-          , Whitespace
-          , Plaintext "and/or"
-          , Whitespace
-          , Plaintext "sell"
-          , Whitespace
-          , Plaintext "copies"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "Software,"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "permit"
-          , Whitespace
-          , Plaintext "persons"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "whom"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "Software"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "furnished"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "so,"
-          , Whitespace
-          , Plaintext "subject"
-          , Whitespace
-          , Plaintext "to"
+      ]
+  , Fenced [ "git status" ]
+  , List
+      [ ListItem
+          [ Plaintext "Tag"
           , Whitespace
           , Plaintext "the"
           , Whitespace
-          , Plaintext "following"
-          , Whitespace
-          , Plaintext "conditions:"
+          , Plaintext "release:"
           ]
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "above"
-          , Whitespace
-          , Plaintext "copyright"
-          , Whitespace
-          , Plaintext "notice"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "this"
-          , Whitespace
-          , Plaintext "permission"
-          , Whitespace
-          , Plaintext "notice"
-          , Whitespace
-          , Plaintext "shall"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "included"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "all"
-          , Whitespace
-          , Plaintext "copies"
-          , Whitespace
-          , Plaintext "or"
-          , Whitespace
-          , Plaintext "substantial"
-          , Whitespace
-          , Plaintext "portions"
-          , Whitespace
-          , Plaintext "of"
+      ]
+  , Fenced [ "git tag -s -m \"$VERSION release\" $VERSION" ]
+  , List
+      [ ListItem
+          [ Plaintext "Publish"
           , Whitespace
           , Plaintext "the"
           , Whitespace
-          , Plaintext "Software."
-          ]
-      , Paragraph
-          [ Plaintext "THE"
-          , Whitespace
-          , Plaintext "SOFTWARE"
-          , Whitespace
-          , Plaintext "IS"
-          , Whitespace
-          , Plaintext "PROVIDED"
-          , Whitespace
-          , Plaintext "\"AS"
-          , Whitespace
-          , Plaintext "IS\","
-          , Whitespace
-          , Plaintext "WITHOUT"
-          , Whitespace
-          , Plaintext "WARRANTY"
-          , Whitespace
-          , Plaintext "OF"
-          , Whitespace
-          , Plaintext "ANY"
-          , Whitespace
-          , Plaintext "KIND,"
-          , Whitespace
-          , Plaintext "EXPRESS"
-          , Whitespace
-          , Plaintext "OR"
-          , Whitespace
-          , Plaintext "IMPLIED,"
-          , Whitespace
-          , Plaintext "INCLUDING"
-          , Whitespace
-          , Plaintext "BUT"
-          , Whitespace
-          , Plaintext "NOT"
-          , Whitespace
-          , Plaintext "LIMITED"
-          , Whitespace
-          , Plaintext "TO"
-          , Whitespace
-          , Plaintext "THE"
-          , Whitespace
-          , Plaintext "WARRANTIES"
-          , Whitespace
-          , Plaintext "OF"
-          , Whitespace
-          , Plaintext "MERCHANTABILITY,"
-          , Whitespace
-          , Plaintext "FITNESS"
-          , Whitespace
-          , Plaintext "FOR"
-          , Whitespace
-          , Plaintext "A"
-          , Whitespace
-          , Plaintext "PARTICULAR"
-          , Whitespace
-          , Plaintext "PURPOSE"
-          , Whitespace
-          , Plaintext "AND"
-          , Whitespace
-          , Plaintext "NONINFRINGEMENT."
-          , Whitespace
-          , Plaintext "IN"
-          , Whitespace
-          , Plaintext "NO"
-          , Whitespace
-          , Plaintext "EVENT"
-          , Whitespace
-          , Plaintext "SHALL"
-          , Whitespace
-          , Plaintext "THE"
-          , Whitespace
-          , Plaintext "AUTHORS"
-          , Whitespace
-          , Plaintext "OR"
-          , Whitespace
-          , Plaintext "COPYRIGHT"
-          , Whitespace
-          , Plaintext "HOLDERS"
-          , Whitespace
-          , Plaintext "BE"
-          , Whitespace
-          , Plaintext "LIABLE"
-          , Whitespace
-          , Plaintext "FOR"
-          , Whitespace
-          , Plaintext "ANY"
-          , Whitespace
-          , Plaintext "CLAIM,"
-          , Whitespace
-          , Plaintext "DAMAGES"
-          , Whitespace
-          , Plaintext "OR"
-          , Whitespace
-          , Plaintext "OTHER"
-          , Whitespace
-          , Plaintext "LIABILITY,"
-          , Whitespace
-          , Plaintext "WHETHER"
-          , Whitespace
-          , Plaintext "IN"
-          , Whitespace
-          , Plaintext "AN"
-          , Whitespace
-          , Plaintext "ACTION"
-          , Whitespace
-          , Plaintext "OF"
-          , Whitespace
-          , Plaintext "CONTRACT,"
-          , Whitespace
-          , Plaintext "TORT"
-          , Whitespace
-          , Plaintext "OR"
-          , Whitespace
-          , Plaintext "OTHERWISE,"
-          , Whitespace
-          , Plaintext "ARISING"
-          , Whitespace
-          , Plaintext "FROM,"
-          , Whitespace
-          , Plaintext "OUT"
-          , Whitespace
-          , Plaintext "OF"
-          , Whitespace
-          , Plaintext "OR"
-          , Whitespace
-          , Plaintext "IN"
-          , Whitespace
-          , Plaintext "CONNECTION"
-          , Whitespace
-          , Plaintext "WITH"
-          , Whitespace
-          , Plaintext "THE"
-          , Whitespace
-          , Plaintext "SOFTWARE"
-          , Whitespace
-          , Plaintext "OR"
-          , Whitespace
-          , Plaintext "THE"
-          , Whitespace
-          , Plaintext "USE"
-          , Whitespace
-          , Plaintext "OR"
-          , Whitespace
-          , Plaintext "OTHER"
-          , Whitespace
-          , Plaintext "DEALINGS"
-          , Whitespace
-          , Plaintext "IN"
-          , Whitespace
-          , Plaintext "THE"
-          , Whitespace
-          , Plaintext "SOFTWARE."
-          ]
-      , HeadingAnnotation "Development"
-      , SubheadingAnnotation "Contributing patches"
-      , Paragraph
-          [ Plaintext "Patches"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "sent"
-          , Whitespace
-          , Plaintext "via"
-          , Whitespace
-          , Plaintext "mail"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "greg@hurrell.net,"
-          , Whitespace
-          , Plaintext "or"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "GitHub"
-          , Whitespace
-          , Plaintext "pull"
-          , Whitespace
-          , Plaintext "requests"
-          , Whitespace
-          , Plaintext "at:"
-          , Whitespace
-          , Plaintext "https://github.com/wincent/vim-docvim/pulls"
+          , Plaintext "code:"
           ]
-      , SubheadingAnnotation "Cutting a new release"
-      , Paragraph
-          [ Plaintext "At"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "moment"
+      ]
+  , 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 "process"
-          , Whitespace
-          , Plaintext "is"
-          , 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 "docvim-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"
+          , Plaintext "archive:"
           ]
-      , List
-          [ ListItem
-              [ Plaintext "Produce"
-              , Whitespace
-              , Plaintext "the"
-              , Whitespace
-              , Plaintext "release"
-              , Whitespace
-              , Plaintext "archive:"
-              ]
-          ]
-      , Fenced [ "git archive -o vim-docvim-$VERSION.zip HEAD -- ." ]
-      , List
-          [ ListItem
-              [ Plaintext "Upload"
-              , Whitespace
-              , Plaintext "to"
-              , Whitespace
-              , Plaintext
-                  "http://www.vim.org/scripts/script.php?script_id=[TODO]"
-              ]
-          ]
-      , HeadingAnnotation "Authors"
-      , Paragraph
-          [ Plaintext "vim-docvim"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "written"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "maintained"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "Greg"
-          , Whitespace
-          , Plaintext "Hurrell"
-          , Whitespace
-          , Plaintext "<greg@hurrell.net>."
-          ]
-      , HeadingAnnotation "History"
-      , Paragraph
-          [ Plaintext "0.1"
-          , Whitespace
-          , Plaintext "(not"
+      ]
+  , Fenced [ "git archive -o vim-docvim-$VERSION.zip HEAD -- ." ]
+  , List
+      [ ListItem
+          [ Plaintext "Upload"
           , Whitespace
-          , Plaintext "yet"
+          , Plaintext "to"
           , Whitespace
-          , Plaintext "released)"
-          ]
-      , List
-          [ ListItem
-              [ Plaintext "Initial" , Whitespace , Plaintext "release." ]
+          , Plaintext
+              "http://www.vim.org/scripts/script.php?script_id=[TODO]"
           ]
       ]
+  , HeadingAnnotation "Authors"
+  , Paragraph
+      [ Plaintext "vim-docvim"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "written"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "maintained"
+      , Whitespace
+      , Plaintext "by"
+      , Whitespace
+      , Plaintext "Greg"
+      , Whitespace
+      , Plaintext "Hurrell"
+      , Whitespace
+      , Plaintext "<greg@hurrell.net>."
+      ]
+  , HeadingAnnotation "History"
+  , Paragraph
+      [ Plaintext "0.1"
+      , Whitespace
+      , Plaintext "(not"
+      , Whitespace
+      , Plaintext "yet"
+      , Whitespace
+      , Plaintext "released)"
+      ]
+  , List
+      [ ListItem
+          [ Plaintext "Initial" , Whitespace , Plaintext "release." ]
+      ]
+  , Project [ Unit [ DocBlock [] ] ]
   ]
index d28efe095493f58e8f05e5ecca9dcd4239be7c30..42ba8f0351f3b1b73d9bea31bd8d5f0bd6fd9a8a 100644 (file)
-Unit
-  [ DocBlock
-      [ OptionAnnotation "g:FerretQFOptions" "boolean" (Just "1")
-      , Paragraph
-          [ Plaintext "Controls"
-          , Whitespace
-          , Plaintext "whether"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "up"
-          , Whitespace
-          , Plaintext "setting"
-          , Whitespace
-          , Plaintext "overrides"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "windows."
-          , Whitespace
-          , Plaintext "These"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "various"
-          , Whitespace
-          , Plaintext "settings,"
-          , Whitespace
-          , Plaintext "such"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Link "norelativenumber"
-          , Plaintext ","
-          , Whitespace
-          , Link "nolist"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Link "nowrap"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "intended"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "make"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "window,"
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "typically"
-          , Whitespace
-          , Plaintext "very"
-          , Whitespace
-          , Plaintext "small"
-          , Whitespace
-          , Plaintext "relative"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "other"
-          , Whitespace
-          , Plaintext "windows,"
-          , Whitespace
-          , Plaintext "more"
-          , Whitespace
-          , Plaintext "usable."
-          ]
-      , Paragraph
-          [ Plaintext "A"
-          , Whitespace
-          , Plaintext "full"
-          , Whitespace
-          , Plaintext "list"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "overridden"
-          , Whitespace
-          , Plaintext "settings"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "found"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Link "ferret-overrides"
-          , Plaintext "."
-          ]
-      , Paragraph
-          [ Plaintext "To"
-          , Whitespace
-          , Plaintext "prevent"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "custom"
-          , Whitespace
-          , Plaintext "settings"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "being"
-          , Whitespace
-          , Plaintext "applied,"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Link "g:FerretQFOptions"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "0:"
-          ]
-      , Fenced [ "let g:FerretQFOptions=0" ]
-      ]
-  , LetStatement
-      { letLexpr = "s:options"
-      , letValue = "get(g:, 'FerretQFOptions', 1)"
-      }
-  , GenericStatement "if s:options"
-  , GenericStatement "setlocal nolist"
-  , GenericStatement "if exists('+relativenumber')"
-  , GenericStatement "setlocal norelativenumber"
-  , GenericStatement "endif"
-  , GenericStatement "setlocal nowrap"
-  , GenericStatement "setlocal number"
-  , LetStatement
-      { letLexpr = "s:original_scrolloff" , letValue = "&scrolloff" }
-  , GenericStatement "set scrolloff=0"
-  , GenericStatement "if has('autocmd')"
-  , GenericStatement "augroup FerretQF"
-  , GenericStatement "autocmd!"
-  , GenericStatement
-      "autocmd BufLeave <buffer> execute 'set scrolloff=' . s:original_scrolloff"
-  , GenericStatement
-      "autocmd BufEnter <buffer> set scrolloff=0 | setlocal nocursorline"
-  , GenericStatement "augroup END"
-  , GenericStatement "endif"
-  , GenericStatement "endif"
-  , DocBlock
-      [ OptionAnnotation "g:FerretQFMap" "boolean" (Just "1")
-      , Paragraph
-          [ Plaintext "Controls"
-          , Whitespace
-          , Plaintext "whether"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "up"
-          , Whitespace
-          , Plaintext "mappings"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "results"
-          , Whitespace
-          , Plaintext "window"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "deleting"
-          , Whitespace
-          , Plaintext "results."
-          , Whitespace
-          , Plaintext "The"
-          , Whitespace
-          , Plaintext "mappings"
-          , Whitespace
-          , Plaintext "include:"
-          ]
-      , List
-          [ ListItem
-              [ Code "d"
-              , Whitespace
-              , Plaintext "("
-              , Link "visual-mode"
-              , Plaintext "):"
-              , Whitespace
-              , Plaintext "delete"
-              , Whitespace
-              , Plaintext "visual"
-              , Whitespace
-              , Plaintext "selection"
-              ]
-          , ListItem
-              [ Code "dd"
-              , Whitespace
-              , Plaintext "("
-              , Link "Normal-mode"
-              , Plaintext "):"
-              , Whitespace
-              , Plaintext "delete"
-              , Whitespace
-              , Plaintext "current"
-              , Whitespace
-              , Plaintext "line"
+Project
+  [ Project
+      [ Unit
+          [ DocBlock
+              [ OptionAnnotation "g:FerretQFOptions" "boolean" (Just "1")
+              , Paragraph
+                  [ Plaintext "Controls"
+                  , Whitespace
+                  , Plaintext "whether"
+                  , Whitespace
+                  , Plaintext "to"
+                  , Whitespace
+                  , Plaintext "set"
+                  , Whitespace
+                  , Plaintext "up"
+                  , Whitespace
+                  , Plaintext "setting"
+                  , Whitespace
+                  , Plaintext "overrides"
+                  , Whitespace
+                  , Plaintext "for"
+                  , Whitespace
+                  , Link "quickfix"
+                  , Whitespace
+                  , Plaintext "windows."
+                  , Whitespace
+                  , Plaintext "These"
+                  , Whitespace
+                  , Plaintext "are"
+                  , Whitespace
+                  , Plaintext "various"
+                  , Whitespace
+                  , Plaintext "settings,"
+                  , Whitespace
+                  , Plaintext "such"
+                  , Whitespace
+                  , Plaintext "as"
+                  , Whitespace
+                  , Link "norelativenumber"
+                  , Plaintext ","
+                  , Whitespace
+                  , Link "nolist"
+                  , Whitespace
+                  , Plaintext "and"
+                  , Whitespace
+                  , Link "nowrap"
+                  , Plaintext ","
+                  , Whitespace
+                  , Plaintext "that"
+                  , Whitespace
+                  , Plaintext "are"
+                  , Whitespace
+                  , Plaintext "intended"
+                  , Whitespace
+                  , Plaintext "to"
+                  , Whitespace
+                  , Plaintext "make"
+                  , Whitespace
+                  , Plaintext "the"
+                  , Whitespace
+                  , Link "quickfix"
+                  , Whitespace
+                  , Plaintext "window,"
+                  , Whitespace
+                  , Plaintext "which"
+                  , Whitespace
+                  , Plaintext "is"
+                  , Whitespace
+                  , Plaintext "typically"
+                  , Whitespace
+                  , Plaintext "very"
+                  , Whitespace
+                  , Plaintext "small"
+                  , Whitespace
+                  , Plaintext "relative"
+                  , Whitespace
+                  , Plaintext "to"
+                  , Whitespace
+                  , Plaintext "other"
+                  , Whitespace
+                  , Plaintext "windows,"
+                  , Whitespace
+                  , Plaintext "more"
+                  , Whitespace
+                  , Plaintext "usable."
+                  ]
+              , Paragraph
+                  [ Plaintext "A"
+                  , Whitespace
+                  , Plaintext "full"
+                  , Whitespace
+                  , Plaintext "list"
+                  , Whitespace
+                  , Plaintext "of"
+                  , Whitespace
+                  , Plaintext "overridden"
+                  , Whitespace
+                  , Plaintext "settings"
+                  , Whitespace
+                  , Plaintext "can"
+                  , Whitespace
+                  , Plaintext "be"
+                  , Whitespace
+                  , Plaintext "found"
+                  , Whitespace
+                  , Plaintext "in"
+                  , Whitespace
+                  , Link "ferret-overrides"
+                  , Plaintext "."
+                  ]
+              , Paragraph
+                  [ Plaintext "To"
+                  , Whitespace
+                  , Plaintext "prevent"
+                  , Whitespace
+                  , Plaintext "the"
+                  , Whitespace
+                  , Plaintext "custom"
+                  , Whitespace
+                  , Plaintext "settings"
+                  , Whitespace
+                  , Plaintext "from"
+                  , Whitespace
+                  , Plaintext "being"
+                  , Whitespace
+                  , Plaintext "applied,"
+                  , Whitespace
+                  , Plaintext "set"
+                  , Whitespace
+                  , Link "g:FerretQFOptions"
+                  , Whitespace
+                  , Plaintext "to"
+                  , Whitespace
+                  , Plaintext "0:"
+                  ]
+              , Fenced [ "let g:FerretQFOptions=0" ]
               ]
-          , ListItem
-              [ Code "d"
-              , Plaintext "{motion}"
-              , Whitespace
-              , Plaintext "("
-              , Link "Normal-mode"
-              , Plaintext "):"
-              , Whitespace
-              , Plaintext "delete"
-              , Whitespace
-              , Plaintext "range"
-              , Whitespace
-              , Plaintext "indicated"
-              , Whitespace
-              , Plaintext "by"
-              , Whitespace
-              , Plaintext "{motion}"
+          , LetStatement
+              { letLexpr = "s:options"
+              , letValue = "get(g:, 'FerretQFOptions', 1)"
+              }
+          , GenericStatement "if s:options"
+          , GenericStatement "setlocal nolist"
+          , GenericStatement "if exists('+relativenumber')"
+          , GenericStatement "setlocal norelativenumber"
+          , GenericStatement "endif"
+          , GenericStatement "setlocal nowrap"
+          , GenericStatement "setlocal number"
+          , LetStatement
+              { letLexpr = "s:original_scrolloff" , letValue = "&scrolloff" }
+          , GenericStatement "set scrolloff=0"
+          , GenericStatement "if has('autocmd')"
+          , GenericStatement "augroup FerretQF"
+          , GenericStatement "autocmd!"
+          , GenericStatement
+              "autocmd BufLeave <buffer> execute 'set scrolloff=' . s:original_scrolloff"
+          , GenericStatement
+              "autocmd BufEnter <buffer> set scrolloff=0 | setlocal nocursorline"
+          , GenericStatement "augroup END"
+          , GenericStatement "endif"
+          , GenericStatement "endif"
+          , DocBlock
+              [ OptionAnnotation "g:FerretQFMap" "boolean" (Just "1")
+              , Paragraph
+                  [ Plaintext "Controls"
+                  , Whitespace
+                  , Plaintext "whether"
+                  , Whitespace
+                  , Plaintext "to"
+                  , Whitespace
+                  , Plaintext "set"
+                  , Whitespace
+                  , Plaintext "up"
+                  , Whitespace
+                  , Plaintext "mappings"
+                  , Whitespace
+                  , Plaintext "in"
+                  , Whitespace
+                  , Plaintext "the"
+                  , Whitespace
+                  , Link "quickfix"
+                  , Whitespace
+                  , Plaintext "results"
+                  , Whitespace
+                  , Plaintext "window"
+                  , Whitespace
+                  , Plaintext "for"
+                  , Whitespace
+                  , Plaintext "deleting"
+                  , Whitespace
+                  , Plaintext "results."
+                  , Whitespace
+                  , Plaintext "The"
+                  , Whitespace
+                  , Plaintext "mappings"
+                  , Whitespace
+                  , Plaintext "include:"
+                  ]
+              , List
+                  [ ListItem
+                      [ Code "d"
+                      , Whitespace
+                      , Plaintext "("
+                      , Link "visual-mode"
+                      , Plaintext "):"
+                      , Whitespace
+                      , Plaintext "delete"
+                      , Whitespace
+                      , Plaintext "visual"
+                      , Whitespace
+                      , Plaintext "selection"
+                      ]
+                  , ListItem
+                      [ Code "dd"
+                      , Whitespace
+                      , Plaintext "("
+                      , Link "Normal-mode"
+                      , Plaintext "):"
+                      , Whitespace
+                      , Plaintext "delete"
+                      , Whitespace
+                      , Plaintext "current"
+                      , Whitespace
+                      , Plaintext "line"
+                      ]
+                  , ListItem
+                      [ Code "d"
+                      , Plaintext "{motion}"
+                      , Whitespace
+                      , Plaintext "("
+                      , Link "Normal-mode"
+                      , Plaintext "):"
+                      , Whitespace
+                      , Plaintext "delete"
+                      , Whitespace
+                      , Plaintext "range"
+                      , Whitespace
+                      , Plaintext "indicated"
+                      , Whitespace
+                      , Plaintext "by"
+                      , Whitespace
+                      , Plaintext "{motion}"
+                      ]
+                  ]
+              , Paragraph
+                  [ Plaintext "To"
+                  , Whitespace
+                  , Plaintext "prevent"
+                  , Whitespace
+                  , Plaintext "these"
+                  , Whitespace
+                  , Plaintext "mappings"
+                  , Whitespace
+                  , Plaintext "from"
+                  , Whitespace
+                  , Plaintext "being"
+                  , Whitespace
+                  , Plaintext "set"
+                  , Whitespace
+                  , Plaintext "up,"
+                  , Whitespace
+                  , Plaintext "set"
+                  , Whitespace
+                  , Plaintext "to"
+                  , Whitespace
+                  , Plaintext "0:"
+                  ]
+              , Fenced [ "let g:FerretQFMap=0" ]
               ]
+          , LetStatement
+              { letLexpr = "s:map" , letValue = "get(g:, 'FerretQFMap', 1)" }
+          , GenericStatement "if s:map"
+          , GenericStatement
+              "nnoremap <buffer> <silent> d :set operatorfunc=ferret#private#qf_delete_motion<CR>g@"
+          , GenericStatement
+              "nnoremap <buffer> <silent> dd :call ferret#private#qf_delete()<CR>"
+          , GenericStatement
+              "vnoremap <buffer> <silent> d :call ferret#private#qf_delete()<CR>"
+          , GenericStatement "endif"
           ]
-      , Paragraph
-          [ Plaintext "To"
-          , Whitespace
-          , Plaintext "prevent"
-          , Whitespace
-          , Plaintext "these"
-          , Whitespace
-          , Plaintext "mappings"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "being"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "up,"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "0:"
-          ]
-      , Fenced [ "let g:FerretQFMap=0" ]
       ]
-  , LetStatement
-      { letLexpr = "s:map" , letValue = "get(g:, 'FerretQFMap', 1)" }
-  , GenericStatement "if s:map"
-  , GenericStatement
-      "nnoremap <buffer> <silent> d :set operatorfunc=ferret#private#qf_delete_motion<CR>g@"
-  , GenericStatement
-      "nnoremap <buffer> <silent> dd :call ferret#private#qf_delete()<CR>"
-  , GenericStatement
-      "vnoremap <buffer> <silent> d :call ferret#private#qf_delete()<CR>"
-  , GenericStatement "endif"
   ]
index 5cfc641ffbb3530e74a1de1ffc149c936598a2ac..46c33ae53e1c80203ac5580f571ca0f8431c59ab 100644 (file)
-Unit
-  [ DocBlock
-      [ PluginAnnotation "ferret" "Ferret plug-in for Vim"
-      , HeadingAnnotation "Intro"
-      , Blockquote
-          [ Paragraph
-              [ Plaintext "\"ferret"
-              , Whitespace
-              , Plaintext "(verb)"
-              , BreakTag
-              , Plaintext "(ferret"
-              , Whitespace
-              , Plaintext "something"
-              , Whitespace
-              , Plaintext "out)"
-              , Whitespace
-              , Plaintext "search"
-              , Whitespace
-              , Plaintext "tenaciously"
-              , Whitespace
-              , Plaintext "for"
-              , Whitespace
-              , Plaintext "and"
-              , Whitespace
-              , Plaintext "find"
-              , Whitespace
-              , Plaintext "something:"
-              , Whitespace
-              , Plaintext "she"
-              , Whitespace
-              , Plaintext "had"
-              , Whitespace
-              , Plaintext "the"
-              , Whitespace
-              , Plaintext "ability"
-              , Whitespace
-              , Plaintext "to"
-              , Whitespace
-              , Plaintext "ferret"
-              , Whitespace
-              , Plaintext "out"
-              , Whitespace
-              , Plaintext "the"
-              , Whitespace
-              , Plaintext "facts.\""
-              ]
-          ]
-      , LinkTargets [ "ferret-features" ]
-      , Paragraph
-          [ Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "improves"
-          , Whitespace
-          , Plaintext "Vim's"
-          , Whitespace
-          , Plaintext "multi-file"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "four"
-          , Whitespace
-          , Plaintext "ways:"
-          ]
-      , SubheadingAnnotation "1. Powerful multi-file search"
-      , Paragraph
-          [ Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "provides"
-          , Whitespace
-          , Plaintext "an"
-          , Whitespace
-          , Link ":Ack"
-          , Whitespace
-          , Plaintext "command"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "searching"
-          , Whitespace
-          , Plaintext "across"
-          , Whitespace
-          , Plaintext "multiple"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "using"
-          , Whitespace
-          , Plaintext "The"
-          , Whitespace
-          , Plaintext "Silver"
-          , Whitespace
-          , Plaintext "Searcher"
-          , Whitespace
-          , Plaintext "(https://github.com/ggreer/the_silver_searcher),"
-          , Whitespace
-          , Plaintext "Ack"
-          , Whitespace
-          , Plaintext "(http://beyondgrep.com/),"
-          , Whitespace
-          , Plaintext "or"
-          , Whitespace
-          , Plaintext "Grep"
-          , Whitespace
-          , Plaintext "(http://www.gnu.org/software/grep/)."
-          , Whitespace
-          , Plaintext "Support"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "passing"
-          , Whitespace
-          , Plaintext "options"
-          , Whitespace
-          , Plaintext "through"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "underlying"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "command"
-          , Whitespace
-          , Plaintext "exists,"
-          , Whitespace
-          , Plaintext "along"
-          , Whitespace
-          , Plaintext "with"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "ability"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Plaintext "full"
-          , Whitespace
-          , Plaintext "regular"
-          , Whitespace
-          , Plaintext "expression"
-          , Whitespace
-          , Plaintext "syntax"
-          , Whitespace
-          , Plaintext "without"
-          , Whitespace
-          , Plaintext "doing"
-          , Whitespace
-          , Plaintext "special"
-          , Whitespace
-          , Plaintext "escaping."
-          ]
-      , Paragraph
-          [ Plaintext "Shortcut"
-          , Whitespace
-          , Plaintext "mappings"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "provided"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "start"
-          , Whitespace
-          , Plaintext "an"
-          , Whitespace
-          , Link ":Ack"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "(<leader>a)"
-          , Whitespace
-          , Plaintext "or"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "word"
-          , Whitespace
-          , Plaintext "currently"
-          , Whitespace
-          , Plaintext "under"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "cursor"
-          , Whitespace
-          , Plaintext "(<leader>s)."
-          ]
-      , Paragraph
-          [ Plaintext "Results"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "normally"
-          , Whitespace
-          , Plaintext "displayed"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "window,"
-          , Whitespace
-          , Plaintext "but"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "also"
-          , Whitespace
-          , Plaintext "provides"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Link ":Lack"
-          , Whitespace
-          , Plaintext "command"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "behaves"
-          , Whitespace
-          , Plaintext "like"
-          , Whitespace
-          , Link ":Ack"
-          , Whitespace
-          , Plaintext "but"
-          , Whitespace
-          , Plaintext "uses"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "location-list"
-          , Whitespace
-          , Plaintext "instead,"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "<leader>l"
-          , Whitespace
-          , Plaintext "mapping"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "shortcut"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Link ":Lack"
-          , Plaintext "."
-          ]
-      , Paragraph
-          [ Plaintext "Finally,"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "offers"
-          , Whitespace
-          , Plaintext "integration"
-          , Whitespace
-          , Plaintext "with"
-          , Whitespace
-          , Plaintext "dispatch.vim"
-          , Whitespace
-          , Plaintext "(https://github.com/tpope/vim-dispatch),"
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "enables"
-          , Whitespace
-          , Plaintext "asynchronous"
-          , Whitespace
-          , Plaintext "searching"
-          , Whitespace
-          , Plaintext "despite"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "fact"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "itself"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "single-threaded."
-          ]
-      , SubheadingAnnotation "2. Streamlined multi-file replace"
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "companion"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Link ":Ack"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Link ":Acks"
-          , Whitespace
-          , Plaintext "(mnemonic:"
-          , Whitespace
-          , Plaintext "\"Ack"
-          , Whitespace
-          , Plaintext "substitute\","
-          , Whitespace
-          , Plaintext "accessible"
-          , Whitespace
-          , Plaintext "via"
-          , Whitespace
-          , Plaintext "shortcut"
-          , Whitespace
-          , Plaintext "<leader>r),"
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "allows"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "run"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "multi-file"
-          , Whitespace
-          , Plaintext "replace"
-          , Whitespace
-          , Plaintext "across"
-          , Whitespace
-          , Plaintext "all"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "placed"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "window"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "previous"
-          , Whitespace
-          , Plaintext "invocation"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Link ":Ack"
-          , Plaintext "."
-          ]
-      , SubheadingAnnotation "3. Quickfix listing enhancements"
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listing"
-          , Whitespace
-          , Plaintext "itself"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "enhanced"
-          , Whitespace
-          , Plaintext "with"
-          , Whitespace
-          , Plaintext "settings"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "improve"
-          , Whitespace
-          , Plaintext "its"
-          , Whitespace
-          , Plaintext "usability,"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "natural"
-          , Whitespace
-          , Plaintext "mappings"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "allow"
-          , Whitespace
-          , Plaintext "quick"
-          , Whitespace
-          , Plaintext "removal"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "items"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "list"
-          , Whitespace
-          , Plaintext "(for"
-          , Whitespace
-          , Plaintext "example,"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "reduce"
-          , Whitespace
-          , Plaintext "clutter"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "listing"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "removing"
-          , Whitespace
-          , Plaintext "lines"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "don't"
-          , Whitespace
-          , Plaintext "intend"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "make"
-          , Whitespace
-          , Plaintext "changes"
-          , Whitespace
-          , Plaintext "to)."
-          ]
-      , Paragraph
-          [ Plaintext "Additionally,"
-          , Whitespace
-          , Plaintext "Vim's"
-          , Whitespace
-          , Link ":cn"
-          , Plaintext ","
-          , Whitespace
-          , Link ":cp"
-          , Plaintext ","
-          , Whitespace
-          , Link ":cnf"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Link ":cpf"
-          , Whitespace
-          , Plaintext "commands"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "tweaked"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "make"
-          , Whitespace
-          , Plaintext "it"
-          , Whitespace
-          , Plaintext "easier"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "immediately"
-          , Whitespace
-          , Plaintext "identify"
-          , Whitespace
-          , Plaintext "matches"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "centering"
-          , Whitespace
-          , Plaintext "them"
-          , Whitespace
-          , Plaintext "within"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "viewport."
-          ]
-      , SubheadingAnnotation
-          "4. Easy operations on files in the quickfix listing"
-      , Paragraph
-          [ Plaintext "Finally,"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "provides"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Link ":Qargs"
-          , Whitespace
-          , Plaintext "command"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "puts"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "currently"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listing"
-          , Whitespace
-          , Plaintext "into"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link ":args"
-          , Whitespace
-          , Plaintext "list,"
-          , Whitespace
-          , Plaintext "where"
-          , Whitespace
-          , Plaintext "they"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "operated"
-          , Whitespace
-          , Plaintext "on"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "bulk"
-          , Whitespace
-          , Plaintext "via"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link ":argdo"
-          , Whitespace
-          , Plaintext "command."
-          , Whitespace
-          , Plaintext "This"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "what's"
-          , Whitespace
-          , Plaintext "used"
-          , Whitespace
-          , Plaintext "under"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "covers"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Link ":Acks"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "its"
-          , Whitespace
-          , Plaintext "work."
-          ]
-      , HeadingAnnotation "Installation"
-      , Paragraph
-          [ Plaintext "To"
-          , Whitespace
-          , Plaintext "install"
-          , Whitespace
-          , Plaintext "Ferret,"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Plaintext "your"
-          , Whitespace
-          , Plaintext "plug-in"
-          , Whitespace
-          , Plaintext "management"
-          , Whitespace
-          , Plaintext "system"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "choice."
-          ]
-      , Paragraph
-          [ Plaintext "If"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "don't"
-          , Whitespace
-          , Plaintext "have"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "\"plug-in"
-          , Whitespace
-          , Plaintext "management"
-          , Whitespace
-          , Plaintext "system"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "choice\","
-          , Whitespace
-          , Plaintext "I"
-          , Whitespace
-          , Plaintext "recommend"
-          , Whitespace
-          , Plaintext "Pathogen"
-          , Whitespace
-          , Plaintext "(https://github.com/tpope/vim-pathogen)"
-          , Whitespace
-          , Plaintext "due"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "its"
-          , Whitespace
-          , Plaintext "simplicity"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "robustness."
-          , Whitespace
-          , Plaintext "Assuming"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "have"
-          , Whitespace
-          , Plaintext "Pathogen"
-          , Whitespace
-          , Plaintext "installed"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "configured,"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "want"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "install"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "into"
-          , Whitespace
-          , Code "~/.vim/bundle"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "so"
-          , Whitespace
-          , Plaintext "with:"
-          ]
-      , Fenced
-          [ "git clone https://github.com/wincent/ferret.git ~/.vim/bundle/ferret"
-          ]
-      , Paragraph
-          [ Plaintext "Alternatively,"
-          , Whitespace
-          , Plaintext "if"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "Git"
-          , Whitespace
-          , Plaintext "submodule"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "each"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "plug-in,"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "could"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "following"
-          , Whitespace
-          , Plaintext "after"
-          , Whitespace
-          , Code "cd"
-          , Plaintext "-ing"
-          , Whitespace
-          , Plaintext "into"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "top-level"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "your"
-          , Whitespace
-          , Plaintext "Git"
-          , Whitespace
-          , Plaintext "superproject:"
-          ]
-      , Fenced
-          [ "git submodule add https://github.com/wincent/ferret.git ~/vim/bundle/ferret"
-          , "git submodule init"
-          ]
-      , Paragraph
-          [ Plaintext "To"
-          , Whitespace
-          , Plaintext "generate"
-          , Whitespace
-          , Plaintext "help"
-          , Whitespace
-          , Plaintext "tags"
-          , Whitespace
-          , Plaintext "under"
-          , Whitespace
-          , Plaintext "Pathogen,"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "so"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "inside"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "with:"
-          ]
-      , Fenced [ ":call pathogen#helptags()" ]
-      , MappingsAnnotation
-      , SubheadingAnnotation
-          "Circumstances where mappings do not get set up"
-      , Paragraph
-          [ Plaintext "Note"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "will"
-          , Whitespace
-          , Plaintext "not"
-          , Whitespace
-          , Plaintext "try"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "up"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "<leader>"
-          , Whitespace
-          , Plaintext "mappings"
-          , Whitespace
-          , Plaintext "if"
-          , Whitespace
-          , Plaintext "any"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "following"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "true:"
-          ]
-      , List
-          [ ListItem
-              [ Plaintext "A"
-              , Whitespace
-              , Plaintext "mapping"
-              , Whitespace
-              , Plaintext "for"
-              , Whitespace
-              , Plaintext "already"
-              , Whitespace
-              , Plaintext "exists."
-              ]
-          , ListItem
-              [ Plaintext "An"
-              , Whitespace
-              , Plaintext "alternative"
-              , Whitespace
-              , Plaintext "mapping"
-              , Whitespace
-              , Plaintext "for"
-              , Whitespace
-              , Plaintext "the"
-              , Whitespace
-              , Plaintext "same"
-              , Whitespace
-              , Plaintext "functionality"
-              , 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:FerretMap"
-              , Whitespace
-              , Plaintext "to"
-              , Whitespace
-              , Plaintext "1"
-              , Whitespace
-              , Plaintext "in"
-              , Whitespace
-              , Plaintext "your"
-              , Whitespace
-              , Link ".vimrc"
-              , Plaintext "."
-              ]
-          ]
-      , SubheadingAnnotation "Mappings specific to the quickfix window"
-      , Paragraph
-          [ Plaintext "Additionally,"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "will"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "up"
-          , Whitespace
-          , Plaintext "special"
-          , Whitespace
-          , Plaintext "mappings"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listings,"
-          , Whitespace
-          , Plaintext "unless"
-          , Whitespace
-          , Plaintext "prevented"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "doing"
-          , Whitespace
-          , Plaintext "so"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Link "g:FerretQFMap"
-          , Plaintext ":"
-          ]
-      , List
-          [ ListItem
-              [ Code "d"
-              , Whitespace
-              , Plaintext "("
-              , Link "visual-mode"
-              , Plaintext "):"
-              , Whitespace
-              , Plaintext "delete"
-              , Whitespace
-              , Plaintext "visual"
-              , Whitespace
-              , Plaintext "selection"
-              ]
-          , ListItem
-              [ Code "dd"
-              , Whitespace
-              , Plaintext "("
-              , Link "Normal-mode"
-              , Plaintext "):"
-              , Whitespace
-              , Plaintext "delete"
-              , Whitespace
-              , Plaintext "current"
-              , Whitespace
-              , Plaintext "line"
-              ]
-          , ListItem
-              [ Code "d"
-              , Plaintext "{motion}"
-              , Whitespace
-              , Plaintext "("
-              , Link "Normal-mode"
-              , Plaintext "):"
-              , Whitespace
-              , Plaintext "delete"
-              , Whitespace
-              , Plaintext "range"
-              , Whitespace
-              , Plaintext "indicated"
-              , Whitespace
-              , Plaintext "by"
-              , Whitespace
-              , Plaintext "{motion}"
-              ]
-          ]
-      , FooterAnnotation
-      , HeadingAnnotation "Custom autocommands"
-      , LinkTargets [ "FerretWillWrite" , "FerretDidWrite" ]
-      , Paragraph
-          [ Plaintext "For"
-          , Whitespace
-          , Plaintext "maximum"
-          , Whitespace
-          , Plaintext "compatibility"
-          , Whitespace
-          , Plaintext "with"
-          , Whitespace
-          , Plaintext "other"
-          , Whitespace
-          , Plaintext "plug-ins,"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "runs"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "following"
-          , Whitespace
-          , Plaintext "\"User\""
-          , Whitespace
-          , Plaintext "autocommands"
-          , Whitespace
-          , Plaintext "before"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "after"
-          , Whitespace
-          , Plaintext "running"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "file"
-          , Whitespace
-          , Plaintext "writing"
-          , Whitespace
-          , Plaintext "operations"
-          , Whitespace
-          , Plaintext "during"
-          , Whitespace
-          , Link ":Acks"
-          , Plaintext ":"
-          ]
-      , List
-          [ ListItem [ Plaintext "FerretWillWrite" ]
-          , ListItem [ Plaintext "FerretDidWrite" ]
-          ]
-      , Paragraph
-          [ Plaintext "For"
-          , Whitespace
-          , Plaintext "example,"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "call"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "pair"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "custom"
-          , Whitespace
-          , Plaintext "functions"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "response"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "these"
-          , Whitespace
-          , Plaintext "events,"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "might"
-          , Whitespace
-          , Plaintext "do:"
-          ]
-      , Fenced
-          [ "autocmd! User FerretWillWrite"
-          , "autocmd User FerretWillWrite call CustomWillWrite()"
-          , "autocmd! User FerretDidWrite"
-          , "autocmd User FerretDidWrite call CustomDidWrite()"
-          ]
-      , HeadingAnnotation "Overrides"
-      , Paragraph
-          [ Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "overrides"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "'grepformat'"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "'grepprg'"
-          , Whitespace
-          , Plaintext "settings,"
-          , Whitespace
-          , Plaintext "preferentially"
-          , Whitespace
-          , Plaintext "setting"
-          , Whitespace
-          , Code "ag"
-          , Plaintext ","
-          , Whitespace
-          , Code "ack"
-          , Whitespace
-          , Plaintext "or"
-          , Whitespace
-          , Code "grep"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "'grepprg'"
-          , Whitespace
-          , Plaintext "(in"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "order)"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "configuring"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "suitable"
-          , Whitespace
-          , Plaintext "'grepformat'."
-          ]
-      , Paragraph
-          [ Plaintext "Additionally,"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "includes"
-          , Whitespace
-          , Plaintext "an"
-          , Whitespace
-          , Link "ftplugin"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listing"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "adjusts"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "number"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "settings"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "improve"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "usability"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "results."
-          ]
-      , IndentAnnotation
-      , LinkTargets [ "ferret-nolist" ]
-      , Paragraph [ Plaintext "'nolist'" ]
-      , Paragraph
-          [ Plaintext "Turned"
-          , Whitespace
-          , Plaintext "off"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "reduce"
-          , Whitespace
-          , Plaintext "visual"
-          , Whitespace
-          , Plaintext "clutter"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "results,"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "because"
-          , Whitespace
-          , Plaintext "'list'"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "most"
-          , Whitespace
-          , Plaintext "useful"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "being"
-          , Whitespace
-          , Plaintext "actively"
-          , Whitespace
-          , Plaintext "edited,"
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "not"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "case"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "results."
-          ]
-      , LinkTargets [ "ferret-norelativenumber" ]
-      , Paragraph [ Plaintext "'norelativenumber'" ]
-      , Paragraph
-          [ Plaintext "Turned"
-          , Whitespace
-          , Plaintext "off,"
-          , Whitespace
-          , Plaintext "because"
-          , Whitespace
-          , Plaintext "it"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "more"
-          , Whitespace
-          , Plaintext "useful"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "have"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "sense"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "absolute"
-          , Whitespace
-          , Plaintext "progress"
-          , Whitespace
-          , Plaintext "through"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "results"
-          , Whitespace
-          , Plaintext "list"
-          , Whitespace
-          , Plaintext "than"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "have"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "ability"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "jump"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "nearby"
-          , Whitespace
-          , Plaintext "results"
-          , Whitespace
-          , Plaintext "(especially"
-          , Whitespace
-          , Plaintext "seeing"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "most"
-          , Whitespace
-          , Plaintext "common"
-          , Whitespace
-          , Plaintext "operations"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "moving"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "next"
-          , Whitespace
-          , Plaintext "or"
-          , Whitespace
-          , Plaintext "previous"
-          , Whitespace
-          , Plaintext "file,"
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "both"
-          , Whitespace
-          , Plaintext "handled"
-          , Whitespace
-          , Plaintext "nicely"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Link ":cnf"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Link ":cpf"
-          , Whitespace
-          , Plaintext "respectively)."
-          ]
-      , LinkTargets [ "ferret-nowrap" ]
-      , Paragraph [ Plaintext "'nowrap'" ]
-      , Paragraph
-          [ Plaintext "Turned"
-          , Whitespace
-          , Plaintext "off"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "avoid"
-          , Whitespace
-          , Plaintext "ugly"
-          , Whitespace
-          , Plaintext "wrapping"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "makes"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "results"
-          , Whitespace
-          , Plaintext "list"
-          , Whitespace
-          , Plaintext "hard"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "read,"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "because"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "results,"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "most"
-          , Whitespace
-          , Plaintext "relevant"
-          , Whitespace
-          , Plaintext "information"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "filename,"
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "on"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "left"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "usually"
-          , Whitespace
-          , Plaintext "visible"
-          , Whitespace
-          , Plaintext "even"
-          , Whitespace
-          , Plaintext "without"
-          , Whitespace
-          , Plaintext "wrapping."
-          ]
-      , LinkTargets [ "ferret-number" ]
-      , Paragraph [ Plaintext "'number'" ]
-      , Paragraph
-          [ Plaintext "Turned"
-          , Whitespace
-          , Plaintext "on"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "give"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "sense"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "absolute"
-          , Whitespace
-          , Plaintext "progress"
-          , Whitespace
-          , Plaintext "through"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "results."
-          ]
-      , LinkTargets [ "ferret-scrolloff" ]
-      , Paragraph [ Plaintext "'scrolloff'" ]
-      , Paragraph
-          [ Plaintext "Set"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "0"
-          , Whitespace
-          , Plaintext "because"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listing"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "usually"
-          , Whitespace
-          , Plaintext "small"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "default,"
-          , Whitespace
-          , Plaintext "so"
-          , Whitespace
-          , Plaintext "trying"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "keep"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "current"
-          , Whitespace
-          , Plaintext "line"
-          , Whitespace
-          , Plaintext "away"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "edge"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "viewpoint"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "futile;"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "definition"
-          , Whitespace
-          , Plaintext "it"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "usually"
-          , Whitespace
-          , Plaintext "near"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "edge."
-          ]
-      , LinkTargets [ "ferret-nocursorline" ]
-      , Paragraph [ Plaintext "'nocursorline'" ]
-      , Paragraph
-          [ Plaintext "Turned"
-          , Whitespace
-          , Plaintext "off"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "reduce"
-          , Whitespace
-          , Plaintext "visual"
-          , Whitespace
-          , Plaintext "clutter."
-          ]
-      , DedentAnnotation
-      , Paragraph
-          [ Plaintext "To"
-          , Whitespace
-          , Plaintext "prevent"
-          , Whitespace
-          , Plaintext "any"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "these"
-          , Whitespace
-          , Link "quickfix"
-          , Plaintext "-specific"
-          , Whitespace
-          , Plaintext "overrides"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "being"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "up,"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Link "g:FerretQFOptions"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "0"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "your"
-          , Whitespace
-          , Link ".vimrc"
-          , Plaintext ":"
-          ]
-      , Fenced [ "let g:FerretQFOptions=0" ]
-      , HeadingAnnotation "Troubleshooting"
-      , LinkTargets [ "ferret-quotes" ]
-      , SubheadingAnnotation
-          "Ferret fails to find patterns containing spaces"
-      , Paragraph
-          [ Plaintext "As"
-          , Whitespace
-          , Plaintext "described"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "documentation"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Link ":Ack"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "pattern"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "passed"
-          , Whitespace
-          , Plaintext "through"
-          , Whitespace
-          , Plaintext "as-is"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "underlying"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "command,"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "no"
-          , Whitespace
-          , Plaintext "escaping"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "required"
-          , Whitespace
-          , Plaintext "other"
-          , Whitespace
-          , Plaintext "than"
-          , Whitespace
-          , Plaintext "preceding"
-          , Whitespace
-          , Plaintext "spaces"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "single"
-          , Whitespace
-          , Plaintext "backslash."
-          ]
-      , Paragraph
-          [ Plaintext "So,"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "find"
-          , Whitespace
-          , Plaintext "\"foo"
-          , Whitespace
-          , Plaintext "bar\","
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "would"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "like:"
-          ]
-      , Fenced [ ":Ack foo\\ bar" ]
-      , Paragraph
-          [ Plaintext "Unescaped"
-          , Whitespace
-          , Plaintext "spaces"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "treated"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "argument"
-          , Whitespace
-          , Plaintext "separators,"
-          , Whitespace
-          , Plaintext "so"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "command"
-          , Whitespace
-          , Plaintext "like"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "following"
-          , Whitespace
-          , Plaintext "means"
-          , Whitespace
-          , Plaintext "pass"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Code "-w"
-          , Whitespace
-          , Plaintext "option"
-          , Whitespace
-          , Plaintext "through,"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "pattern"
-          , Whitespace
-          , Plaintext "\"foo\","
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "limit"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "\"bar\""
-          , Whitespace
-          , Plaintext "directory:"
-          ]
-      , Fenced [ ":Ack -w foo bar" ]
-      , Paragraph
-          [ Plaintext "Note"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "including"
-          , Whitespace
-          , Plaintext "quotes"
-          , Whitespace
-          , Plaintext "will"
-          , Whitespace
-          , Plaintext "not"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "what"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "intend."
-          ]
-      , Fenced
-          [ " \" Search for '\"foo' in the 'bar\"' directory:"
-          , " :Ack \"foo bar\""
-          , ""
-          , " \" Search for \"'foo' in the \"bar'\" directory:"
-          , " :Ack 'foo bar'"
-          ]
-      , Paragraph
-          [ Plaintext "This"
-          , Whitespace
-          , Plaintext "approach"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "escaping"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "taken"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "order"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "make"
-          , Whitespace
-          , Plaintext "it"
-          , Whitespace
-          , Plaintext "straightfoward"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Plaintext "powerful"
-          , Whitespace
-          , Plaintext "Perl-compatible"
-          , Whitespace
-          , Plaintext "regular"
-          , Whitespace
-          , Plaintext "expression"
-          , Whitespace
-          , Plaintext "syntax"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "an"
-          , Whitespace
-          , Plaintext "unambiguous"
-          , Whitespace
-          , Plaintext "way"
-          , Whitespace
-          , Plaintext "without"
-          , Whitespace
-          , Plaintext "having"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "worry"
-          , Whitespace
-          , Plaintext "about"
-          , Whitespace
-          , Plaintext "shell"
-          , Whitespace
-          , Plaintext "escaping"
-          , Whitespace
-          , Plaintext "rules:"
-          ]
-      , Fenced
-          [ ":Ack \\blog\\((['\"]).*?\\1\\) -i --ignore-dir=src/vendor src dist build"
-          ]
-      , HeadingAnnotation "FAQ"
-      , SubheadingAnnotation
-          "Why do Ferret commands start with \"Ack\", \"Lack\" and so on?"
-      , Paragraph
-          [ Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "was"
-          , Whitespace
-          , Plaintext "originally"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "thinnest"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "wrappers"
-          , Whitespace
-          , Plaintext "(7"
-          , Whitespace
-          , Plaintext "lines"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "code"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "my"
-          , Whitespace
-          , Link ".vimrc"
-          , Plaintext ")"
-          , Whitespace
-          , Plaintext "around"
-          , Whitespace
-          , Code "ack"
-          , Plaintext "."
-          , Whitespace
-          , Plaintext "The"
-          , Whitespace
-          , Plaintext "earliest"
-          , Whitespace
-          , Plaintext "traces"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "it"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "seen"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "initial"
-          , Whitespace
-          , Plaintext "commit"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "my"
-          , Whitespace
-          , Plaintext "dotfiles"
-          , Whitespace
-          , Plaintext "repo"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "May,"
-          , Whitespace
-          , Plaintext "2009"
-          , Whitespace
-          , Plaintext "(https://wt.pe/h)."
-          ]
-      , Paragraph
-          [ Plaintext "So,"
-          , Whitespace
-          , Plaintext "even"
-          , Whitespace
-          , Plaintext "though"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "has"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "new"
-          , Whitespace
-          , Plaintext "name"
-          , Whitespace
-          , Plaintext "now"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "actually"
-          , Whitespace
-          , Plaintext "prefers"
-          , Whitespace
-          , Code "ag"
-          , Whitespace
-          , Plaintext "over"
-          , Whitespace
-          , Code "ack"
-          , Whitespace
-          , Plaintext "when"
-          , Whitespace
-          , Plaintext "available,"
-          , Whitespace
-          , Plaintext "I"
-          , Whitespace
-          , Plaintext "prefer"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "keep"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "command"
-          , Whitespace
-          , Plaintext "names"
-          , Whitespace
-          , Plaintext "intact"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "benefit"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "years"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "accumulated"
-          , Whitespace
-          , Plaintext "muscle-memory."
-          ]
-      , HeadingAnnotation "Related"
-      , Paragraph
-          [ Plaintext "Just"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "aims"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "improve"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "multi-file"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "replace"
-          , Whitespace
-          , Plaintext "experience,"
-          , Whitespace
-          , Plaintext "Loupe"
-          , Whitespace
-          , Plaintext "does"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "same"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "within-file"
-          , Whitespace
-          , Plaintext "searching:"
-          ]
-      , Paragraph [ Plaintext "https://github.com/wincent/loupe" ]
-      , HeadingAnnotation "Website"
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "official"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "source"
-          , Whitespace
-          , Plaintext "code"
-          , Whitespace
-          , Plaintext "repo"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "at:"
-          ]
-      , Paragraph [ Plaintext "http://git.wincent.com/ferret.git" ]
-      , Paragraph
-          [ Plaintext "A"
-          , Whitespace
-          , Plaintext "mirror"
-          , Whitespace
-          , Plaintext "exists"
-          , Whitespace
-          , Plaintext "at:"
-          ]
-      , Paragraph [ Plaintext "https://github.com/wincent/ferret" ]
-      , Paragraph
-          [ Plaintext "Official"
-          , Whitespace
-          , Plaintext "releases"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "listed"
-          , Whitespace
-          , Plaintext "at:"
-          ]
-      , Paragraph
-          [ Plaintext "http://www.vim.org/scripts/script.php?script_id=5220"
-          ]
-      , 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."
-          , Whitespace
-          , 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."
-          ]
-      , HeadingAnnotation "Development"
-      , SubheadingAnnotation "Contributing patches"
-      , Paragraph
-          [ Plaintext "Patches"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "sent"
-          , Whitespace
-          , Plaintext "via"
-          , Whitespace
-          , Plaintext "mail"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "greg@hurrell.net,"
-          , Whitespace
-          , Plaintext "or"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "GitHub"
-          , Whitespace
-          , Plaintext "pull"
-          , Whitespace
-          , Plaintext "requests"
-          , Whitespace
-          , Plaintext "at:"
-          , Whitespace
-          , Plaintext "https://github.com/wincent/ferret/pulls"
-          ]
-      , SubheadingAnnotation "Cutting a new release"
-      , Paragraph
-          [ Plaintext "At"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "moment"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "release"
-          , Whitespace
-          , Plaintext "process"
-          , Whitespace
-          , Plaintext "is"
-          , 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 "ferret-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 ferret-$VERSION.zip HEAD -- ." ]
-      , List
-          [ ListItem
-              [ Plaintext "Upload"
-              , Whitespace
-              , Plaintext "to"
-              , Whitespace
-              , Plaintext "http://www.vim.org/scripts/script.php?script_id=5220"
-              ]
-          ]
-      , HeadingAnnotation "Authors"
-      , Paragraph
-          [ Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "written"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "maintained"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "Greg"
-          , Whitespace
-          , Plaintext "Hurrell"
-          , Whitespace
-          , Plaintext "<greg@hurrell.net>."
-          ]
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "idea"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "vim-dispatch"
-          , Whitespace
-          , Plaintext "integration"
-          , Whitespace
-          , Plaintext "was"
-          , Whitespace
-          , Plaintext "taken"
-          , Whitespace
-          , Plaintext "from"
-          , Whitespace
-          , Plaintext "Miles"
-          , Whitespace
-          , Plaintext "Sterrett's"
-          , Whitespace
-          , Plaintext "ack.vim"
-          , Whitespace
-          , Plaintext "plug-in"
-          , Whitespace
-          , Plaintext "(https://github.com/mileszs/ack.vim)."
-          ]
-      , Paragraph
-          [ Plaintext "Other"
-          , Whitespace
-          , Plaintext "contributors"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "have"
-          , Whitespace
-          , Plaintext "submitted"
-          , Whitespace
-          , Plaintext "patches"
-          , Whitespace
-          , Plaintext "include"
-          , Whitespace
-          , Plaintext "(in"
-          , Whitespace
-          , Plaintext "alphabetical"
-          , Whitespace
-          , Plaintext "order):"
-          ]
-      , List
-          [ ListItem [ Plaintext "Daniel" , Whitespace , Plaintext "Silva" ]
-          , ListItem [ Plaintext "Joe" , Whitespace , Plaintext "Lencioni" ]
-          , ListItem
-              [ Plaintext "Nelo-Thara" , Whitespace , Plaintext "Wallus" ]
-          , ListItem [ Plaintext "Vaibhav" , Whitespace , Plaintext "Sagar" ]
-          ]
-      , HeadingAnnotation "History"
-      , Paragraph
-          [ Plaintext "0.3.1"
-          , Whitespace
-          , Plaintext "(not"
-          , Whitespace
-          , Plaintext "yet"
-          , Whitespace
-          , Plaintext "released)"
-          ]
-      , List
-          [ ListItem
-              [ Plaintext "Fix"
-              , Whitespace
-              , Plaintext "broken"
-              , Whitespace
-              , Link ":Qargs"
-              , Whitespace
-              , Plaintext "command"
-              , Whitespace
-              , Plaintext "(patch"
-              , Whitespace
-              , Plaintext "from"
-              , Whitespace
-              , Plaintext "Daniel"
-              , Whitespace
-              , Plaintext "Silva)."
-              ]
-          ]
-      , Paragraph
-          [ Plaintext "0.3"
-          , Whitespace
-          , Plaintext "(24"
-          , Whitespace
-          , Plaintext "July"
-          , Whitespace
-          , Plaintext "2015)"
-          ]
-      , List
-          [ ListItem
-              [ Plaintext "Added"
-              , Whitespace
-              , Plaintext "highlighting"
-              , Whitespace
-              , Plaintext "of"
-              , Whitespace
-              , Plaintext "search"
-              , Whitespace
-              , Plaintext "pattern"
-              , Whitespace
-              , Plaintext "and"
-              , Whitespace
-              , Plaintext "related"
-              , Whitespace
-              , Link "g:FerretHlsearch"
-              , Whitespace
-              , Plaintext "option"
-              , Whitespace
-              , Plaintext "(patch"
-              , Whitespace
-              , Plaintext "from"
-              , Whitespace
-              , Plaintext "Nelo-Thara"
-              , Whitespace
-              , Plaintext "Wallus)."
-              ]
-          , ListItem
-              [ Plaintext "Add"
-              , Whitespace
-              , Plaintext "better"
-              , Whitespace
-              , Plaintext "error"
-              , Whitespace
-              , Plaintext "reporting"
-              , Whitespace
-              , Plaintext "for"
-              , Whitespace
-              , Plaintext "failed"
-              , Whitespace
-              , Plaintext "or"
-              , Whitespace
-              , Plaintext "incorrect"
-              , Whitespace
-              , Plaintext "searches."
-              ]
-          ]
-      , Paragraph
-          [ Plaintext "0.2"
-          , Whitespace
-          , Plaintext "(16"
-          , Whitespace
-          , Plaintext "July"
-          , Whitespace
-          , Plaintext "2015)"
-          ]
-      , List
-          [ ListItem
-              [ Plaintext "Added"
-              , Whitespace
-              , Link "FerretDidWrite"
-              , Whitespace
-              , Plaintext "and"
-              , Whitespace
-              , Link "FerretWillWrite"
-              , Whitespace
-              , Plaintext "autocommands"
-              , Whitespace
-              , Plaintext "(patch"
-              , Whitespace
-              , Plaintext "from"
-              , Whitespace
-              , Plaintext "Joe"
-              , Whitespace
-              , Plaintext "Lencioni)."
-              ]
-          , ListItem
-              [ Plaintext "Add"
-              , Whitespace
-              , Link "<Plug>(FerretAcks)"
-              , Whitespace
-              , Plaintext "mapping"
-              , Whitespace
-              , Plaintext "(patch"
-              , Whitespace
-              , Plaintext "from"
-              , Whitespace
-              , Plaintext "Nelo-Thara"
-              , Whitespace
-              , Plaintext "Wallus)."
-              ]
-          ]
-      , Paragraph
-          [ Plaintext "0.1"
-          , Whitespace
-          , Plaintext "(8"
-          , Whitespace
-          , Plaintext "July"
-          , Whitespace
-          , Plaintext "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)."
-              ]
-          ]
-      ]
-  , GenericStatement "\"\""
-  , GenericStatement
-      "if exists('g:FerretLoaded') || &compatible || v:version < 700"
-  , GenericStatement "finish"
-  , GenericStatement "endif"
-  , LetStatement { letLexpr = "g:FerretLoaded " , letValue = "1" }
-  , LetStatement
-      { letLexpr = "s:cpoptions " , letValue = "&cpoptions" }
-  , GenericStatement "set cpoptions&vim"
-  , GenericStatement
-      "if executable('ag') \" The Silver Searcher: faster than ack."
-  , LetStatement
-      { letLexpr = "s:ackprg "
-      , letValue = "'ag --column --nocolor --nogroup'"
-      }
-  , GenericStatement
-      "elseif executable('ack') \" Ack: better than grep."
-  , LetStatement
-      { letLexpr = "s:ackprg " , letValue = "'ack --column'" }
-  , GenericStatement
-      "elseif executable('grep') \" Grep: it's just grep."
-  , LetStatement
-      { letLexpr = "s:ackprg "
-      , letValue = "&grepprg \" default is: grep -n $* /dev/null"
-      }
-  , GenericStatement "endif"
-  , GenericStatement "if !empty(s:ackprg)"
-  , LetStatement { letLexpr = "&grepprg" , letValue = "s:ackprg" }
-  , GenericStatement "set grepformat=%f:%l:%c:%m"
-  , GenericStatement "endif"
-  , GenericStatement "if has('autocmd')"
-  , GenericStatement "augroup Ferret"
-  , GenericStatement "autocmd!"
-  , GenericStatement "autocmd QuickFixCmdPost [^l]* nested cwindow"
-  , GenericStatement "autocmd QuickFixCmdPost l* nested lwindow"
-  , GenericStatement "augroup END"
-  , GenericStatement "endif"
-  , DocBlock
-      [ CommandAnnotation ":Ack {pattern} {options}"
-      , Paragraph
-          [ Plaintext "Searches"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "{pattern}"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "all"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "under"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "current"
-          , Whitespace
-          , Plaintext "directory"
-          , Whitespace
-          , Plaintext "(see"
-          , Whitespace
-          , Link ":pwd"
-          , Plaintext "),"
-          , Whitespace
-          , Plaintext "unless"
-          , Whitespace
-          , Plaintext "otherwise"
-          , Whitespace
-          , Plaintext "overridden"
-          , Whitespace
-          , Plaintext "via"
-          , Whitespace
-          , Plaintext "{options},"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "displays"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "results"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listing."
-          ]
-      , Paragraph
-          [ Code "ag"
-          , Whitespace
-          , Plaintext "(The"
-          , Whitespace
-          , Plaintext "Silver"
-          , Whitespace
-          , Plaintext "Searcher)"
-          , Whitespace
-          , Plaintext "will"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "used"
-          , Whitespace
-          , Plaintext "preferentially"
-          , Whitespace
-          , Plaintext "if"
-          , Whitespace
-          , Plaintext "present"
-          , Whitespace
-          , Plaintext "on"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "system,"
-          , Whitespace
-          , Plaintext "because"
-          , Whitespace
-          , Plaintext "it"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "faster,"
-          , Whitespace
-          , Plaintext "falling"
-          , Whitespace
-          , Plaintext "back"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Code "ack"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "then"
-          , Whitespace
-          , Code "grep"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "needed."
-          ]
-      , Paragraph
-          [ Plaintext "If"
-          , Whitespace
-          , Plaintext "dispatch.vim"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "installed"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "process"
-          , Whitespace
-          , Plaintext "will"
-          , Whitespace
-          , Plaintext "run"
-          , Whitespace
-          , Plaintext "asynchronously"
-          , Whitespace
-          , Plaintext "via"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link ":Make"
-          , Whitespace
-          , Plaintext "command,"
-          , Whitespace
-          , Plaintext "otherwise"
-          , Whitespace
-          , Plaintext "it"
-          , Whitespace
-          , Plaintext "will"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "run"
-          , Whitespace
-          , Plaintext "synchronously"
-          , Whitespace
-          , Plaintext "via"
-          , Whitespace
-          , Link ":cexpr"
-          , Plaintext "."
-          , Whitespace
-          , Plaintext "Asynchronous"
-          , Whitespace
-          , Plaintext "searches"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "preferred"
-          , Whitespace
-          , Plaintext "because"
-          , Whitespace
-          , Plaintext "they"
-          , Whitespace
-          , Plaintext "do"
-          , Whitespace
-          , Plaintext "not"
-          , Whitespace
-          , Plaintext "block,"
-          , Whitespace
-          , Plaintext "despite"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "fact"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "itself"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "single"
-          , Whitespace
-          , Plaintext "threaded."
-          , Whitespace
-          , Plaintext "The"
-          , Whitespace
-          , Link "g:FerretDispatch"
-          , Whitespace
-          , Plaintext "option"
-          , Whitespace
-          , Plaintext "can"
-          , Whitespace
-          , Plaintext "be"
-          , Whitespace
-          , Plaintext "used"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "prevent"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "dispatch.vim."
-          ]
-      , Paragraph
-          [ Plaintext "The"
-          , Whitespace
-          , Plaintext "{pattern}"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "passed"
-          , Whitespace
-          , Plaintext "through"
-          , Whitespace
-          , Plaintext "as-is"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "underlying"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "program,"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "no"
-          , Whitespace
-          , Plaintext "escaping"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "required"
-          , Whitespace
-          , Plaintext "other"
-          , Whitespace
-          , Plaintext "than"
-          , Whitespace
-          , Plaintext "preceding"
-          , Whitespace
-          , Plaintext "spaces"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "single"
-          , Whitespace
-          , Plaintext "backslash."
-          , Whitespace
-          , Plaintext "For"
-          , Whitespace
-          , Plaintext "example,"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "\"\\bfoo[0-9]{2}"
-          , Whitespace
-          , Plaintext "bar\\b\""
-          , Whitespace
-          , Plaintext "(ie."
-          , Whitespace
-          , Plaintext "using"
-          , Whitespace
-          , Code "ag"
-          , Plaintext "'s"
-          , Whitespace
-          , Plaintext "Perl-style"
-          , Whitespace
-          , Plaintext "regular"
-          , Whitespace
-          , Plaintext "expression"
-          , Whitespace
-          , Plaintext "syntax),"
-          , Whitespace
-          , Plaintext "you"
-          , Whitespace
-          , Plaintext "could"
-          , Whitespace
-          , Plaintext "do:"
-          ]
-      , Fenced [ ":Ack \\bfoo[0-9]{2}\\ bar\\b" ]
-      , Paragraph
-          [ Plaintext "Likewise,"
-          , Whitespace
-          , Plaintext "{options}"
-          , Whitespace
-          , Plaintext "are"
-          , Whitespace
-          , Plaintext "passed"
-          , Whitespace
-          , Plaintext "through."
-          , Whitespace
-          , Plaintext "In"
-          , Whitespace
-          , Plaintext "this"
-          , Whitespace
-          , Plaintext "example,"
-          , Whitespace
-          , Plaintext "we"
-          , Whitespace
-          , Plaintext "pass"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Code "-w"
-          , Whitespace
-          , Plaintext "option"
-          , Whitespace
-          , Plaintext "(to"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "on"
-          , Whitespace
-          , Plaintext "word"
-          , Whitespace
-          , Plaintext "boundaries),"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "scope"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "\"foo\""
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "\"bar\""
-          , Whitespace
-          , Plaintext "subdirectories:"
-          , Whitespace
-          , Plaintext ">"
-          ]
-      , Fenced [ ":Ack -w something foo bar" ]
-      , Paragraph
-          [ Plaintext "As"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "convenience"
-          , Whitespace
-          , Plaintext "<leader>a"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "set-up"
-          , Whitespace
-          , Plaintext "("
-          , Link "<Plug>(FerretAck)"
-          , Plaintext ")"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "shortcut"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "enter"
-          , Whitespace
-          , Link "Cmdline-mode"
-          , Whitespace
-          , Plaintext "with"
-          , Whitespace
-          , Code ":Ack"
-          , Whitespace
-          , Plaintext "inserted"
-          , Whitespace
-          , Plaintext "on"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "Cmdline"
-          , Plaintext "."
-          , Whitespace
-          , Plaintext "Likewise"
-          , Whitespace
-          , Plaintext "<leader>s"
-          , Whitespace
-          , Plaintext "("
-          , Link "<Plug>(FerretAckWord)"
-          , Plaintext ")"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "shortcut"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "running"
-          , Whitespace
-          , Link ":Ack"
-          , Whitespace
-          , Plaintext "with"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "word"
-          , Whitespace
-          , Plaintext "currently"
-          , Whitespace
-          , Plaintext "under"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "cursor."
-          ]
-      ]
-  , GenericStatement
-      "command! -nargs=+ -complete=file Ack call ferret#private#ack(<q-args>)"
-  , DocBlock
-      [ CommandAnnotation ":Lack {pattern} {options}"
-      , Paragraph
-          [ Plaintext "Just"
-          , Whitespace
-          , Plaintext "like"
-          , Whitespace
-          , Link ":Ack"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "but"
-          , Whitespace
-          , Plaintext "instead"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "using"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listing,"
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "global"
-          , Whitespace
-          , Plaintext "across"
-          , Whitespace
-          , Plaintext "an"
-          , Whitespace
-          , Plaintext "entire"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "instance,"
-          , Whitespace
-          , Plaintext "it"
-          , Whitespace
-          , Plaintext "uses"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "location-list"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "is"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "per-window"
-          , Whitespace
-          , Plaintext "construct."
-          ]
-      , Paragraph
-          [ Plaintext "Note"
-          , Whitespace
-          , Plaintext "that"
-          , Whitespace
-          , Link ":Lack"
-          , Whitespace
-          , Plaintext "always"
-          , Whitespace
-          , Plaintext "runs"
-          , Whitespace
-          , Plaintext "synchronously"
-          , Whitespace
-          , Plaintext "via"
-          , Whitespace
-          , Link ":cexpr"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "because"
-          , Whitespace
-          , Plaintext "dispatch.vim"
-          , Whitespace
-          , Plaintext "doesn't"
-          , Whitespace
-          , Plaintext "currently"
-          , Whitespace
-          , Plaintext "support"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "location-list"
-          , Plaintext "."
-          ]
-      ]
-  , GenericStatement
-      "command! -nargs=+ -complete=file Lack call ferret#private#lack(<q-args>)"
-  , DocBlock
-      [ CommandAnnotation ":Acks /{pattern}/{replacement}/"
-      , Paragraph
-          [ Plaintext "Takes"
-          , Whitespace
-          , Plaintext "all"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "currently"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listing"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "performs"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "substitution"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "all"
-          , Whitespace
-          , Plaintext "instances"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "{pattern}"
-          , Whitespace
-          , Plaintext "(a"
-          , Whitespace
-          , Plaintext "standard"
-          , Whitespace
-          , Plaintext "Vim"
-          , Whitespace
-          , Plaintext "search"
-          , Whitespace
-          , Link "pattern"
-          , Plaintext ")"
-          , Whitespace
-          , Plaintext "by"
-          , Whitespace
-          , Plaintext "{replacement}."
-          ]
-      , Paragraph
-          [ Plaintext "A"
-          , Whitespace
-          , Plaintext "typical"
-          , Whitespace
-          , Plaintext "sequence"
-          , Whitespace
-          , Plaintext "consists"
-          , Whitespace
-          , Plaintext "of"
-          , Whitespace
-          , Plaintext "an"
-          , Whitespace
-          , Link ":Ack"
-          , Whitespace
-          , Plaintext "invocation"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "populate"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link "quickfix"
-          , Whitespace
-          , Plaintext "listing"
-          , Whitespace
-          , Plaintext "and"
-          , Whitespace
-          , Plaintext "then"
-          , Whitespace
-          , Link ":Acks"
-          , Whitespace
-          , Plaintext "(mnemonic:"
-          , Whitespace
-          , Plaintext "\"Ack"
-          , Whitespace
-          , Plaintext "substitute\")"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "perform"
-          , Whitespace
-          , Plaintext "replacements."
-          , Whitespace
-          , Plaintext "For"
-          , Whitespace
-          , Plaintext "example,"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "replace"
-          , Whitespace
-          , Plaintext "\"foo\""
-          , Whitespace
-          , Plaintext "with"
-          , Whitespace
-          , Plaintext "\"bar\""
-          , Whitespace
-          , Plaintext "across"
-          , Whitespace
-          , Plaintext "all"
-          , Whitespace
-          , Plaintext "files"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "current"
-          , Whitespace
-          , Plaintext "directory:"
-          ]
-      , Fenced [ ":Ack foo" , ":Acks /foo/bar/" ]
-      ]
-  , GenericStatement
-      "command! -nargs=1 Acks call ferret#private#acks(<q-args>)"
-  , DocBlock
-      [ OptionAnnotation "g:FerretMap" "boolean" (Just "1")
-      , Paragraph
-          [ Plaintext "Controls"
-          , Whitespace
-          , Plaintext "whether"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Plaintext "set"
-          , Whitespace
-          , Plaintext "up"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "mappings,"
-          , Whitespace
-          , Plaintext "such"
-          , Whitespace
-          , Plaintext "as"
-          , Whitespace
-          , Link "<Plug>(FerretAck)"
-          , Whitespace
-          , Plaintext "(see"
-          , Whitespace
-          , Link "ferret-mappings"
-          , Whitespace
-          , Plaintext "for"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "full"
-          , Whitespace
-          , Plaintext "list)."
-          , 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:FerretMap=0" ]
-      ]
-  , LetStatement
-      { letLexpr = "s:map" , letValue = "get(g:, 'FerretMap', 1)" }
-  , GenericStatement "if s:map"
-  , GenericStatement
-      "if !hasmapto('<Plug>(FerretAck)') && maparg('<leader>a', 'n') ==# ''"
-  , DocBlock
-      [ MappingAnnotation "<Plug>(FerretAck)"
-      , Paragraph
-          [ Plaintext "Ferret"
-          , Whitespace
-          , Plaintext "maps"
-          , Whitespace
-          , Plaintext "<leader>a"
-          , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Link "<Plug>(FerretAck)"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "triggers"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link ":Ack"
-          , Whitespace
-          , Plaintext "command."
-          , Whitespace
-          , Plaintext "To"
-          , Whitespace
-          , Plaintext "use"
-          , Whitespace
-          , Plaintext "an"
-          , Whitespace
-          , Plaintext "alternative"
-          , Whitespace
-          , Plaintext "mapping"
-          , Whitespace
-          , Plaintext "instead,"
-          , Whitespace
-          , Plaintext "create"
-          , Whitespace
-          , Plaintext "a"
-          , Whitespace
-          , Plaintext "different"
-          , Whitespace
-          , Plaintext "one"
-          , Whitespace
-          , Plaintext "in"
-          , Whitespace
-          , Plaintext "your"
-          , Whitespace
-          , Link ".vimrc"
-          , Whitespace
-          , Plaintext "instead"
-          , Whitespace
-          , Plaintext "using"
-          , Whitespace
-          , Link ":nmap"
-          , Plaintext ":"
-          ]
-      , Fenced
-          [ "\" Instead of <leader>a, use <leader>x."
-          , "nmap <leader>x <Plug>(FerretAck)"
-          ]
-      ]
-  , GenericStatement "nmap <unique> <leader>a <Plug>(FerretAck)"
-  , GenericStatement "endif"
-  , GenericStatement "nnoremap <Plug>(FerretAck) :Ack<space>"
-  , GenericStatement
-      "if !hasmapto('<Plug>FerretLack') && maparg('<leader>l', 'n') ==# ''"
-  , DocBlock
-      [ MappingAnnotation "<Plug>(FerretLack)"
-      , Paragraph
-          [ Plaintext "Ferret"
+Project
+  [ PluginAnnotation "ferret" "Ferret plug-in for Vim"
+  , HeadingAnnotation "Intro"
+  , Blockquote
+      [ Paragraph
+          [ Plaintext "\"ferret"
           , Whitespace
-          , Plaintext "maps"
+          , Plaintext "(verb)"
+          , BreakTag
+          , Plaintext "(ferret"
           , Whitespace
-          , Plaintext "<leader>l"
+          , Plaintext "something"
           , Whitespace
-          , Plaintext "to"
-          , Whitespace
-          , Link "<Plug>(FerretLack)"
-          , Plaintext ","
-          , Whitespace
-          , Plaintext "which"
-          , Whitespace
-          , Plaintext "triggers"
-          , Whitespace
-          , Plaintext "the"
-          , Whitespace
-          , Link ":Lack"
-          , Whitespace
-          , Plaintext "command."
+          , Plaintext "out)"
           , Whitespace
-          , Plaintext "To"
-          , Whitespace
-          , Plaintext "use"
+          , Plaintext "search"
           , Whitespace
-          , Plaintext "an"
+          , Plaintext "tenaciously"
           , Whitespace
-          , Plaintext "alternative"
+          , Plaintext "for"
           , Whitespace
-          , Plaintext "mapping"
+          , Plaintext "and"
           , Whitespace
-          , Plaintext "instead,"
+          , Plaintext "find"
           , Whitespace
-          , Plaintext "create"
+          , Plaintext "something:"
           , Whitespace
-          , Plaintext "a"
+          , Plaintext "she"
           , Whitespace
-          , Plaintext "different"
+          , Plaintext "had"
           , Whitespace
-          , Plaintext "one"
+          , Plaintext "the"
           , Whitespace
-          , Plaintext "in"
+          , Plaintext "ability"
           , Whitespace
-          , Plaintext "your"
+          , Plaintext "to"
           , Whitespace
-          , Link ".vimrc"
+          , Plaintext "ferret"
           , Whitespace
-          , Plaintext "instead"
+          , Plaintext "out"
           , Whitespace
-          , Plaintext "using"
+          , Plaintext "the"
           , Whitespace
-          , Link ":nmap"
-          , Plaintext ":"
+          , Plaintext "facts.\""
           ]
-      , Fenced
-          [ "\" Instead of <leader>l, use <leader>y."
-          , "nmap <leader>y <Plug>(FerretLack)"
+      ]
+  , LinkTargets [ "ferret-features" ]
+  , Paragraph
+      [ Plaintext "Ferret"
+      , Whitespace
+      , Plaintext "improves"
+      , Whitespace
+      , Plaintext "Vim's"
+      , Whitespace
+      , Plaintext "multi-file"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "four"
+      , Whitespace
+      , Plaintext "ways:"
+      ]
+  , SubheadingAnnotation "1. Powerful multi-file search"
+  , Paragraph
+      [ Plaintext "Ferret"
+      , Whitespace
+      , Plaintext "provides"
+      , Whitespace
+      , Plaintext "an"
+      , Whitespace
+      , Link ":Ack"
+      , Whitespace
+      , Plaintext "command"
+      , Whitespace
+      , Plaintext "for"
+      , Whitespace
+      , Plaintext "searching"
+      , Whitespace
+      , Plaintext "across"
+      , Whitespace
+      , Plaintext "multiple"
+      , Whitespace
+      , Plaintext "files"
+      , Whitespace
+      , Plaintext "using"
+      , Whitespace
+      , Plaintext "The"
+      , Whitespace
+      , Plaintext "Silver"
+      , Whitespace
+      , Plaintext "Searcher"
+      , Whitespace
+      , Plaintext "(https://github.com/ggreer/the_silver_searcher),"
+      , Whitespace
+      , Plaintext "Ack"
+      , Whitespace
+      , Plaintext "(http://beyondgrep.com/),"
+      , Whitespace
+      , Plaintext "or"
+      , Whitespace
+      , Plaintext "Grep"
+      , Whitespace
+      , Plaintext "(http://www.gnu.org/software/grep/)."
+      , Whitespace
+      , Plaintext "Support"
+      , Whitespace
+      , Plaintext "for"
+      , Whitespace
+      , Plaintext "passing"
+      , Whitespace
+      , Plaintext "options"
+      , Whitespace
+      , Plaintext "through"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "underlying"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "command"
+      , Whitespace
+      , Plaintext "exists,"
+      , Whitespace
+      , Plaintext "along"
+      , Whitespace
+      , Plaintext "with"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "ability"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "use"
+      , Whitespace
+      , Plaintext "full"
+      , Whitespace
+      , Plaintext "regular"
+      , Whitespace
+      , Plaintext "expression"
+      , Whitespace
+      , Plaintext "syntax"
+      , Whitespace
+      , Plaintext "without"
+      , Whitespace
+      , Plaintext "doing"
+      , Whitespace
+      , Plaintext "special"
+      , Whitespace
+      , Plaintext "escaping."
+      ]
+  , Paragraph
+      [ Plaintext "Shortcut"
+      , Whitespace
+      , Plaintext "mappings"
+      , Whitespace
+      , Plaintext "are"
+      , Whitespace
+      , Plaintext "provided"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "start"
+      , Whitespace
+      , Plaintext "an"
+      , Whitespace
+      , Link ":Ack"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "(<leader>a)"
+      , Whitespace
+      , Plaintext "or"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "search"
+      , Whitespace
+      , Plaintext "for"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "word"
+      , Whitespace
+      , Plaintext "currently"
+      , Whitespace
+      , Plaintext "under"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "cursor"
+      , Whitespace
+      , Plaintext "(<leader>s)."
+      ]
+  , Paragraph
+      [ Plaintext "Results"
+      , Whitespace
+      , Plaintext "are"
+      , Whitespace
+      , Plaintext "normally"
+      , Whitespace
+      , Plaintext "displayed"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Link "quickfix"
+      , Whitespace
+      , Plaintext "window,"
+      , Whitespace
+      , Plaintext "but"
+      , Whitespace
+      , Plaintext "Ferret"
+      , Whitespace
+      , Plaintext "also"
+      , Whitespace
+      , Plaintext "provides"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Link ":Lack"
+      , Whitespace
+      , Plaintext "command"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "behaves"
+      , Whitespace
+      , Plaintext "like"
+      , Whitespace
+      , Link ":Ack"
+      , Whitespace
+      , Plaintext "but"
+      , Whitespace
+      , Plaintext "uses"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Link "location-list"
+      , Whitespace
+      , Plaintext "instead,"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "<leader>l"
+      , Whitespace
+      , Plaintext "mapping"
+      , Whitespace
+      , Plaintext "as"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "shortcut"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Link ":Lack"
+      , Plaintext "."
+      ]
+  , Paragraph
+      [ Plaintext "Finally,"
+      , Whitespace
+      , Plaintext "Ferret"
+      , Whitespace
+      , Plaintext "offers"
+      , Whitespace
+      , Plaintext "integration"
+      , Whitespace
+      , Plaintext "with"
+      , Whitespace
+      , Plaintext "dispatch.vim"
+      , Whitespace
+      , Plaintext "(https://github.com/tpope/vim-dispatch),"
+      , Whitespace
+      , Plaintext "which"
+      , Whitespace
+      , Plaintext "enables"
+      , Whitespace
+      , Plaintext "asynchronous"
+      , Whitespace
+      , Plaintext "searching"
+      , Whitespace
+      , Plaintext "despite"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "fact"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "itself"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "single-threaded."
+      ]
+  , SubheadingAnnotation "2. Streamlined multi-file replace"
+  , Paragraph
+      [ Plaintext "The"
+      , Whitespace
+      , Plaintext "companion"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Link ":Ack"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Link ":Acks"
+      , Whitespace
+      , Plaintext "(mnemonic:"
+      , Whitespace
+      , Plaintext "\"Ack"
+      , Whitespace
+      , Plaintext "substitute\","
+      , Whitespace
+      , Plaintext "accessible"
+      , Whitespace
+      , Plaintext "via"
+      , Whitespace
+      , Plaintext "shortcut"
+      , Whitespace
+      , Plaintext "<leader>r),"
+      , Whitespace
+      , Plaintext "which"
+      , Whitespace
+      , Plaintext "allows"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "run"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "multi-file"
+      , Whitespace
+      , Plaintext "replace"
+      , Whitespace
+      , Plaintext "across"
+      , Whitespace
+      , Plaintext "all"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "files"
+      , Whitespace
+      , Plaintext "placed"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Link "quickfix"
+      , Whitespace
+      , Plaintext "window"
+      , Whitespace
+      , Plaintext "by"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "previous"
+      , Whitespace
+      , Plaintext "invocation"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Link ":Ack"
+      , Plaintext "."
+      ]
+  , SubheadingAnnotation "3. Quickfix listing enhancements"
+  , Paragraph
+      [ Plaintext "The"
+      , Whitespace
+      , Link "quickfix"
+      , Whitespace
+      , Plaintext "listing"
+      , Whitespace
+      , Plaintext "itself"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "enhanced"
+      , Whitespace
+      , Plaintext "with"
+      , Whitespace
+      , Plaintext "settings"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "improve"
+      , Whitespace
+      , Plaintext "its"
+      , Whitespace
+      , Plaintext "usability,"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "natural"
+      , Whitespace
+      , Plaintext "mappings"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "allow"
+      , Whitespace
+      , Plaintext "quick"
+      , Whitespace
+      , Plaintext "removal"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "items"
+      , Whitespace
+      , Plaintext "from"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "list"
+      , Whitespace
+      , Plaintext "(for"
+      , Whitespace
+      , Plaintext "example,"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "can"
+      , Whitespace
+      , Plaintext "reduce"
+      , Whitespace
+      , Plaintext "clutter"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "listing"
+      , Whitespace
+      , Plaintext "by"
+      , Whitespace
+      , Plaintext "removing"
+      , Whitespace
+      , Plaintext "lines"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "don't"
+      , Whitespace
+      , Plaintext "intend"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "make"
+      , Whitespace
+      , Plaintext "changes"
+      , Whitespace
+      , Plaintext "to)."
+      ]
+  , Paragraph
+      [ Plaintext "Additionally,"
+      , Whitespace
+      , Plaintext "Vim's"
+      , Whitespace
+      , Link ":cn"
+      , Plaintext ","
+      , Whitespace
+      , Link ":cp"
+      , Plaintext ","
+      , Whitespace
+      , Link ":cnf"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Link ":cpf"
+      , Whitespace
+      , Plaintext "commands"
+      , Whitespace
+      , Plaintext "are"
+      , Whitespace
+      , Plaintext "tweaked"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "make"
+      , Whitespace
+      , Plaintext "it"
+      , Whitespace
+      , Plaintext "easier"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "immediately"
+      , Whitespace
+      , Plaintext "identify"
+      , Whitespace
+      , Plaintext "matches"
+      , Whitespace
+      , Plaintext "by"
+      , Whitespace
+      , Plaintext "centering"
+      , Whitespace
+      , Plaintext "them"
+      , Whitespace
+      , Plaintext "within"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "viewport."
+      ]
+  , SubheadingAnnotation
+      "4. Easy operations on files in the quickfix listing"
+  , Paragraph
+      [ Plaintext "Finally,"
+      , Whitespace
+      , Plaintext "Ferret"
+      , Whitespace
+      , Plaintext "provides"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Link ":Qargs"
+      , Whitespace
+      , Plaintext "command"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "puts"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "files"
+      , Whitespace
+      , Plaintext "currently"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Link "quickfix"
+      , Whitespace
+      , Plaintext "listing"
+      , Whitespace
+      , Plaintext "into"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Link ":args"
+      , Whitespace
+      , Plaintext "list,"
+      , Whitespace
+      , Plaintext "where"
+      , Whitespace
+      , Plaintext "they"
+      , Whitespace
+      , Plaintext "can"
+      , Whitespace
+      , Plaintext "be"
+      , Whitespace
+      , Plaintext "operated"
+      , Whitespace
+      , Plaintext "on"
+      , Whitespace
+      , Plaintext "in"
+      , Whitespace
+      , Plaintext "bulk"
+      , Whitespace
+      , Plaintext "via"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Link ":argdo"
+      , Whitespace
+      , Plaintext "command."
+      , Whitespace
+      , Plaintext "This"
+      , Whitespace
+      , Plaintext "is"
+      , Whitespace
+      , Plaintext "what's"
+      , Whitespace
+      , Plaintext "used"
+      , Whitespace
+      , Plaintext "under"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "covers"
+      , Whitespace
+      , Plaintext "by"
+      , Whitespace
+      , Link ":Acks"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "do"
+      , Whitespace
+      , Plaintext "its"
+      , Whitespace
+      , Plaintext "work."
+      ]
+  , HeadingAnnotation "Installation"
+  , Paragraph
+      [ Plaintext "To"
+      , Whitespace
+      , Plaintext "install"
+      , Whitespace
+      , Plaintext "Ferret,"
+      , Whitespace
+      , Plaintext "use"
+      , Whitespace
+      , Plaintext "your"
+      , Whitespace
+      , Plaintext "plug-in"
+      , Whitespace
+      , Plaintext "management"
+      , Whitespace
+      , Plaintext "system"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "choice."
+      ]
+  , Paragraph
+      [ Plaintext "If"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "don't"
+      , Whitespace
+      , Plaintext "have"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "\"plug-in"
+      , Whitespace
+      , Plaintext "management"
+      , Whitespace
+      , Plaintext "system"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "choice\","
+      , Whitespace
+      , Plaintext "I"
+      , Whitespace
+      , Plaintext "recommend"
+      , Whitespace
+      , Plaintext "Pathogen"
+      , Whitespace
+      , Plaintext "(https://github.com/tpope/vim-pathogen)"
+      , Whitespace
+      , Plaintext "due"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "its"
+      , Whitespace
+      , Plaintext "simplicity"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "robustness."
+      , Whitespace
+      , Plaintext "Assuming"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "have"
+      , Whitespace
+      , Plaintext "Pathogen"
+      , Whitespace
+      , Plaintext "installed"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "configured,"
+      , Whitespace
+      , Plaintext "and"
+      , Whitespace
+      , Plaintext "that"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "want"
+      , Whitespace
+      , Plaintext "to"
+      , Whitespace
+      , Plaintext "install"
+      , Whitespace
+      , Plaintext "Ferret"
+      , Whitespace
+      , Plaintext "into"
+      , Whitespace
+      , Code "~/.vim/bundle"
+      , Plaintext ","
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "can"
+      , Whitespace
+      , Plaintext "do"
+      , Whitespace
+      , Plaintext "so"
+      , Whitespace
+      , Plaintext "with:"
+      ]
+  , Fenced
+      [ "git clone https://github.com/wincent/ferret.git ~/.vim/bundle/ferret"
+      ]
+  , Paragraph
+      [ Plaintext "Alternatively,"
+      , Whitespace
+      , Plaintext "if"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "use"
+      , Whitespace
+      , Plaintext "a"
+      , Whitespace
+      , Plaintext "Git"
+      , Whitespace
+      , Plaintext "submodule"
+      , Whitespace
+      , Plaintext "for"
+      , Whitespace
+      , Plaintext "each"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "plug-in,"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "could"
+      , Whitespace
+      , Plaintext "do"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "following"
+      , Whitespace
+      , Plaintext "after"
+      , Whitespace
+      , Code "cd"
+      , Plaintext "-ing"
+      , Whitespace
+      , Plaintext "into"
+      , Whitespace
+      , Plaintext "the"
+      , Whitespace
+      , Plaintext "top-level"
+      , Whitespace
+      , Plaintext "of"
+      , Whitespace
+      , Plaintext "your"
+      , Whitespace
+      , Plaintext "Git"
+      , Whitespace
+      , Plaintext "superproject:"
+      ]
+  , Fenced
+      [ "git submodule add https://github.com/wincent/ferret.git ~/vim/bundle/ferret"
+      , "git submodule init"
+      ]
+  , Paragraph
+      [ Plaintext "To"
+      , Whitespace
+      , Plaintext "generate"
+      , Whitespace
+      , Plaintext "help"
+      , Whitespace
+      , Plaintext "tags"
+      , Whitespace
+      , Plaintext "under"
+      , Whitespace
+      , Plaintext "Pathogen,"
+      , Whitespace
+      , Plaintext "you"
+      , Whitespace
+      , Plaintext "can"
+      , Whitespace
+      , Plaintext "do"
+      , Whitespace
+      , Plaintext "so"
+      , Whitespace
+      , Plaintext "from"
+      , Whitespace
+      , Plaintext "inside"
+      , Whitespace
+      , Plaintext "Vim"
+      , Whitespace
+      , Plaintext "with:"
+      ]
+  , Fenced [ ":call pathogen#helptags()" ]
+  , Project
+      [ Unit
+          [ DocBlock []
+          , GenericStatement "\"\""
+          , GenericStatement
+              "if exists('g:FerretLoaded') || &compatible || v:version < 700"
+          , GenericStatement "finish"
+          , GenericStatement "endif"
+          , LetStatement { letLexpr = "g:FerretLoaded " , letValue = "1" }
+          , LetStatement
+              { letLexpr = "s:cpoptions " , letValue = "&cpoptions" }
+          , GenericStatement "set cpoptions&vim"
+          , GenericStatement
+              "if executable('ag') \" The Silver Searcher: faster than ack."
+          , LetStatement
+              { letLexpr = "s:ackprg "
+              , letValue = "'ag --column --nocolor --nogroup'"
+              }
+          , GenericStatement
+              "elseif executable('ack') \" Ack: better than grep."
+          , LetStatement
+              { letLexpr = "s:ackprg " , letValue = "'ack --column'" }
+          , GenericStatement
+              "elseif executable('grep') \" Grep: it's just grep."
+          , LetStatement
+              { letLexpr = "s:ackprg "
+              , letValue = "&grepprg \" default is: grep -n $* /dev/null"
+              }
+  &nbs