packages feed

docvim-0.3.1.2: tests/fixtures/integration/scalpel/golden/ast.golden

Project
  [ DocBlock
      [ PluginAnnotation "scalpel" "Scalpel plug-in for Vim"
      , TOC
          [ "Intro"
          , "Installation"
          , "Website"
          , "License"
          , "Development"
          , "Authors"
          , "History"
          ]
      ]
  , HeadingAnnotation "Intro"
  , Paragraph
      [ Plaintext "Scalpel"
      , Whitespace
      , Plaintext "provides"
      , Whitespace
      , Plaintext "a"
      , Whitespace
      , Plaintext "streamlined"
      , Whitespace
      , Plaintext "shortcut"
      , Whitespace
      , Plaintext "for"
      , Whitespace
      , Plaintext "replacing"
      , Whitespace
      , Plaintext "all"
      , Whitespace
      , Plaintext "instances"
      , Whitespace
      , Plaintext "of"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "word"
      , Whitespace
      , Plaintext "currently"
      , Whitespace
      , Plaintext "under"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "cursor"
      , Whitespace
      , Plaintext "throughout"
      , Whitespace
      , Plaintext "a"
      , Whitespace
      , Plaintext "file."
      ]
  , Paragraph
      [ Plaintext "In"
      , Whitespace
      , Plaintext "normal"
      , Whitespace
      , Plaintext "mode"
      , Whitespace
      , Plaintext "pressing"
      , Whitespace
      , Code "<Leader>e"
      , Whitespace
      , Plaintext "(mnemonic:"
      , Whitespace
      , Plaintext "\"edit\")"
      , Whitespace
      , Plaintext "will"
      , Whitespace
      , Plaintext "display"
      , Whitespace
      , Plaintext "a"
      , Whitespace
      , Plaintext "prompt"
      , Whitespace
      , Plaintext "pre-populated"
      , Whitespace
      , Plaintext "with"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "current"
      , Whitespace
      , Plaintext "word"
      , Whitespace
      , Plaintext "and"
      , Whitespace
      , Plaintext "with"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "cursor"
      , Whitespace
      , Plaintext "placed"
      , Whitespace
      , Plaintext "so"
      , Whitespace
      , Plaintext "that"
      , Whitespace
      , Plaintext "you"
      , Whitespace
      , Plaintext "can"
      , Whitespace
      , Plaintext "start"
      , Whitespace
      , Plaintext "typing"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "desired"
      , Whitespace
      , Plaintext "replacement:"
      ]
  , Fenced [ ":Scalpel/\\v<foo>//" ]
  , Paragraph
      [ Plaintext "Press"
      , Whitespace
      , Code "<Enter>"
      , Whitespace
      , Plaintext "and"
      , Whitespace
      , Plaintext "Scalpel"
      , Whitespace
      , Plaintext "will"
      , Whitespace
      , Plaintext "prompt"
      , Whitespace
      , Plaintext "to"
      , Whitespace
      , Plaintext "confirm"
      , Whitespace
      , Plaintext "each"
      , Whitespace
      , Plaintext "substitution,"
      , Whitespace
      , Plaintext "starting"
      , Whitespace
      , Plaintext "at"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "current"
      , Whitespace
      , Plaintext "word"
      , Whitespace
      , Plaintext "(unlike"
      , Whitespace
      , Plaintext "a"
      , Whitespace
      , Plaintext "normal"
      , Whitespace
      , Code ":%s"
      , Whitespace
      , Plaintext "command,"
      , Whitespace
      , Plaintext "which"
      , Whitespace
      , Plaintext "starts"
      , Whitespace
      , Plaintext "at"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "top"
      , Whitespace
      , Plaintext "of"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "file)."
      ]
  , Paragraph
      [ Plaintext "Scalpel"
      , Whitespace
      , Plaintext "works"
      , Whitespace
      , Plaintext "similarly"
      , Whitespace
      , Plaintext "in"
      , Whitespace
      , Plaintext "visual"
      , Whitespace
      , Plaintext "mode,"
      , Whitespace
      , Plaintext "except"
      , Whitespace
      , Plaintext "that"
      , Whitespace
      , Plaintext "it"
      , Whitespace
      , Plaintext "scopes"
      , Whitespace
      , Plaintext "itself"
      , Whitespace
      , Plaintext "to"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "current"
      , Whitespace
      , Plaintext "visual"
      , Whitespace
      , Plaintext "selection"
      , Whitespace
      , Plaintext "rather"
      , Whitespace
      , Plaintext "than"
      , Whitespace
      , Plaintext "operating"
      , Whitespace
      , Plaintext "over"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "entire"
      , Whitespace
      , Plaintext "file."
      ]
  , Paragraph
      [ Plaintext "Note"
      , Whitespace
      , Plaintext "that"
      , Whitespace
      , Code ":Scalpel"
      , Whitespace
      , Plaintext "just"
      , Whitespace
      , Plaintext "calls"
      , Whitespace
      , Plaintext "through"
      , Whitespace
      , Plaintext "to"
      , Whitespace
      , Plaintext "an"
      , Whitespace
      , Plaintext "underlying"
      , Whitespace
      , Code "scalpel#substitute"
      , Whitespace
      , Plaintext "function"
      , Whitespace
      , Plaintext "that"
      , Whitespace
      , Plaintext "does"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "real"
      , Whitespace
      , Plaintext "work,"
      , Whitespace
      , Plaintext "ultimately"
      , Whitespace
      , Plaintext "calling"
      , Whitespace
      , Plaintext "Vim's"
      , Whitespace
      , Plaintext "own"
      , Whitespace
      , Code ":substitute"
      , Plaintext "."
      , Whitespace
      , Plaintext "As"
      , Whitespace
      , Plaintext "such,"
      , Whitespace
      , Plaintext "be"
      , Whitespace
      , Plaintext "aware"
      , Whitespace
      , Plaintext "that"
      , Whitespace
      , Plaintext "whatever"
      , Whitespace
      , Plaintext "changes"
      , Whitespace
      , Plaintext "you"
      , Whitespace
      , Plaintext "make"
      , Whitespace
      , Plaintext "to"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "command-line"
      , Whitespace
      , Plaintext "prior"
      , Whitespace
      , Plaintext "to"
      , Whitespace
      , Plaintext "pressing"
      , Whitespace
      , Code "<Enter>"
      , Whitespace
      , Plaintext "must"
      , Whitespace
      , Plaintext "keep"
      , Whitespace
      , Plaintext "it"
      , Whitespace
      , Plaintext "a"
      , Whitespace
      , Plaintext "valid"
      , Whitespace
      , Plaintext "pattern,"
      , Whitespace
      , Plaintext "or"
      , Whitespace
      , Plaintext "bad"
      , Whitespace
      , Plaintext "things"
      , Whitespace
      , Plaintext "will"
      , Whitespace
      , Plaintext "happen."
      ]
  , Paragraph
      [ Plaintext "The"
      , Whitespace
      , Plaintext "mapping"
      , Whitespace
      , Plaintext "can"
      , Whitespace
      , Plaintext "be"
      , Whitespace
      , Plaintext "suppressed"
      , Whitespace
      , Plaintext "by"
      , Whitespace
      , Plaintext "setting:"
      ]
  , Fenced [ "let g:ScalpelMap=0" ]
  , Paragraph
      [ Plaintext "Or" , Whitespace , Plaintext "overridden:" ]
  , Fenced
      [ "\" Use <Leader>s instead of default <Leader>e:"
      , "nmap <Leader>s <Plug>(Scalpel)"
      ]
  , Paragraph
      [ Plaintext "In"
      , Whitespace
      , Plaintext "any"
      , Whitespace
      , Plaintext "case,"
      , Whitespace
      , Plaintext "Scalpel"
      , Whitespace
      , Plaintext "won't"
      , Whitespace
      , Plaintext "overwrite"
      , Whitespace
      , Plaintext "any"
      , Whitespace
      , Plaintext "pre-existing"
      , Whitespace
      , Plaintext "mapping"
      , Whitespace
      , Plaintext "that"
      , Whitespace
      , Plaintext "you"
      , Whitespace
      , Plaintext "might"
      , Whitespace
      , Plaintext "have"
      , Whitespace
      , Plaintext "defined"
      , Whitespace
      , Plaintext "for"
      , Whitespace
      , Code "<Leader>e"
      , Plaintext ","
      , Whitespace
      , Plaintext "nor"
      , Whitespace
      , Plaintext "will"
      , Whitespace
      , Plaintext "it"
      , Whitespace
      , Plaintext "create"
      , Whitespace
      , Plaintext "an"
      , Whitespace
      , Plaintext "unnecessary"
      , Whitespace
      , Plaintext "redundant"
      , Whitespace
      , Plaintext "mapping"
      , Whitespace
      , Plaintext "if"
      , Whitespace
      , Plaintext "you've"
      , Whitespace
      , Plaintext "already"
      , Whitespace
      , Plaintext "mapped"
      , Whitespace
      , Plaintext "something"
      , Whitespace
      , Plaintext "to"
      , Whitespace
      , Code "<Plug>(Scalpel)"
      , Plaintext "."
      ]
  , Paragraph
      [ Plaintext "The"
      , Whitespace
      , Code ":Scalpel"
      , Whitespace
      , Plaintext "command"
      , Whitespace
      , Plaintext "name"
      , Whitespace
      , Plaintext "can"
      , Whitespace
      , Plaintext "be"
      , Whitespace
      , Plaintext "overridden"
      , Whitespace
      , Plaintext "if"
      , Whitespace
      , Plaintext "desired."
      , Whitespace
      , Plaintext "For"
      , Whitespace
      , Plaintext "example,"
      , Whitespace
      , Plaintext "you"
      , Whitespace
      , Plaintext "could"
      , Whitespace
      , Plaintext "shorten"
      , Whitespace
      , Plaintext "it"
      , Whitespace
      , Plaintext "to"
      , Whitespace
      , Code ":S"
      , Whitespace
      , Plaintext "with:"
      ]
  , Fenced [ "let g:ScalpelCommand='S'" ]
  , Paragraph
      [ Plaintext "Then"
      , Whitespace
      , Plaintext "your"
      , Whitespace
      , Plaintext "Scalpel"
      , Whitespace
      , Plaintext "prompt"
      , Whitespace
      , Plaintext "would"
      , Whitespace
      , Plaintext "look"
      , Whitespace
      , Plaintext "like:"
      ]
  , Fenced [ ":S/\\v<foo>//" ]
  , Paragraph
      [ Plaintext "The"
      , Whitespace
      , Plaintext "command"
      , Whitespace
      , Plaintext "can"
      , Whitespace
      , Plaintext "be"
      , Whitespace
      , Plaintext "entirely"
      , Whitespace
      , Plaintext "suppressed"
      , Whitespace
      , Plaintext "by"
      , Whitespace
      , Plaintext "setting"
      , Whitespace
      , Code "g:ScalpelCommand"
      , Whitespace
      , Plaintext "to"
      , Whitespace
      , Plaintext "an"
      , Whitespace
      , Plaintext "empty"
      , Whitespace
      , Plaintext "string:"
      ]
  , Fenced [ "let g:ScalpelCommand=''" ]
  , Paragraph
      [ Plaintext "Finally,"
      , Whitespace
      , Plaintext "all"
      , Whitespace
      , Plaintext "plug-in"
      , Whitespace
      , Plaintext "functionality"
      , Whitespace
      , Plaintext "can"
      , Whitespace
      , Plaintext "be"
      , Whitespace
      , Plaintext "deactivated"
      , Whitespace
      , Plaintext "by"
      , Whitespace
      , Plaintext "setting:"
      ]
  , Fenced [ "let g:ScalpelLoaded=1" ]
  , Paragraph
      [ Plaintext "in"
      , Whitespace
      , Plaintext "your"
      , Whitespace
      , Code "~/.vimrc"
      , Plaintext "."
      ]
  , HeadingAnnotation "Installation"
  , Paragraph
      [ Plaintext "To"
      , Whitespace
      , Plaintext "install"
      , Whitespace
      , Plaintext "Scalpel,"
      , 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 "and"
      , Whitespace
      , Plaintext "your"
      , Whitespace
      , Plaintext "version"
      , Whitespace
      , Plaintext "of"
      , Whitespace
      , Plaintext "Vim"
      , Whitespace
      , Plaintext "has"
      , Whitespace
      , Code "packages"
      , Whitespace
      , Plaintext "support"
      , Whitespace
      , Plaintext "(ie."
      , Whitespace
      , Code "+packages"
      , Whitespace
      , Plaintext "appears"
      , Whitespace
      , Plaintext "in"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "output"
      , Whitespace
      , Plaintext "of"
      , Whitespace
      , Code ":version"
      , Plaintext ")"
      , Whitespace
      , Plaintext "then"
      , Whitespace
      , Plaintext "you"
      , Whitespace
      , Plaintext "can"
      , Whitespace
      , Plaintext "simply"
      , Whitespace
      , Plaintext "place"
      , Whitespace
      , Plaintext "the"
      , Whitespace
      , Plaintext "plugin"
      , Whitespace
      , Plaintext "at"
      , Whitespace
      , Plaintext "a"
      , Whitespace
      , Plaintext "location"
      , Whitespace
      , Plaintext "under"
      , Whitespace
      , Plaintext "your"
      , Whitespace
      , Code "'packpath'"
      , Whitespace
      , Plaintext "(eg."
      , Whitespace
      , Code "~/.vim/pack/bundle/start/scalpel"
      , Whitespace
      , Plaintext "or"
      , Whitespace
      , Plaintext "similar)."
      ]
  , Paragraph
      [ Plaintext "For"
      , Whitespace
      , Plaintext "older"
      , Whitespace
      , Plaintext "versions"
      , Whitespace
      , Plaintext "of"
      , Whitespace
      , Plaintext "Vim,"
      , Whitespace
      , Plaintext "I"
      , Whitespace
      , Plaintext "recommend"
      , Whitespace
      , Plaintext "[Pathogen](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 "Scalpel"
      , 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/scalpel.git ~/.vim/bundle/scalpel"
      ]
  , 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/scalpel.git ~/vim/bundle/scalpel"
      , "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 "Website"
  , Paragraph
      [ Plaintext "The"
      , Whitespace
      , Plaintext "official"
      , Whitespace
      , Plaintext "Scalpel"
      , Whitespace
      , Plaintext "source"
      , Whitespace
      , Plaintext "code"
      , Whitespace
      , Plaintext "repo"
      , Whitespace
      , Plaintext "is"
      , Whitespace
      , Plaintext "at:"
      ]
  , Paragraph [ Plaintext "http://git.wincent.com/scalpel.git" ]
  , Paragraph
      [ Plaintext "Mirrors"
      , Whitespace
      , Plaintext "exist"
      , Whitespace
      , Plaintext "at:"
      ]
  , List
      [ ListItem [ Plaintext "https://github.com/wincent/scalpel" ]
      , ListItem [ Plaintext "https://gitlab.com/wincent/scalpel" ]
      , ListItem [ Plaintext "https://bitbucket.org/ghurrell/scalpel" ]
      ]
  , 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=5381"
      ]
  , HeadingAnnotation "License"
  , Paragraph
      [ Plaintext "Copyright"
      , Whitespace
      , Plaintext "(c)"
      , Whitespace
      , Plaintext "2016-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/scalpel/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
          , Plaintext "[scalpel-history](#user-content-scalpel-history)"
          , Whitespace
          , Plaintext "section"
          , Whitespace
          , Plaintext "of"
          , Whitespace
          , Plaintext "the"
          , Whitespace
          , Plaintext "documentation."
          ]
      , ListItem
          [ Plaintext "Regenerate"
          , Whitespace
          , Plaintext "the"
          , Whitespace
          , Plaintext "documentation:"
          ]
      ]
  , Fenced [ "docvim README.md doc/scalpel.txt" ]
  , List
      [ 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 scalpel-$VERSION.zip HEAD -- ." ]
  , List
      [ ListItem
          [ Plaintext "Upload"
          , Whitespace
          , Plaintext "to"
          , Whitespace
          , Plaintext "http://www.vim.org/scripts/script.php?script_id=5381"
          ]
      ]
  , HeadingAnnotation "Authors"
  , Paragraph
      [ Plaintext "Scalpel"
      , 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"
  , SubheadingAnnotation "0.2 (not yet released)"
  , List
      [ ListItem
          [ Plaintext "Support"
          , Whitespace
          , Plaintext "visual"
          , Whitespace
          , Plaintext "mode."
          ]
      ]
  , SubheadingAnnotation "0.1 (29 April 2016)"
  , List
      [ ListItem
          [ Plaintext "Initial" , Whitespace , Plaintext "release." ]
      ]
  , Project
      [ Unit
          [ FunctionDeclaration
              { functionBang = True
              , functionName = "scalpel#cword"
              , functionArguments = ArgumentList [ Argument "curpos" ]
              , functionAttributes = [ "abort" ]
              , functionBody =
                  [ LetStatement
                      { letLexpr = "l:line" , letValue = "getline(a:curpos[1])" }
                  , LetStatement { letLexpr = "l:col" , letValue = "a:curpos[2]" }
                  , LetStatement
                      { letLexpr = "l:chars" , letValue = "split(l:line, '\\zs')" }
                  , LetStatement { letLexpr = "l:word" , letValue = "[]" }
                  , GenericStatement "for l:char in l:chars[l:col:]"
                  , GenericStatement "if match(l:char, '\\k') != -1"
                  , GenericStatement "call add(l:word, l:char)"
                  , GenericStatement "else"
                  , GenericStatement "break"
                  , GenericStatement "endif"
                  , GenericStatement "endfor"
                  , GenericStatement "for l:char in reverse(l:chars[:l:col - 1])"
                  , GenericStatement "if match(l:char, '\\k') != -1"
                  , GenericStatement "call insert(l:word, l:char, 0)"
                  , GenericStatement "else"
                  , GenericStatement "break"
                  , GenericStatement "endif"
                  , GenericStatement "endfor"
                  , GenericStatement "return join(l:word, '')"
                  ]
              }
          , FunctionDeclaration
              { functionBang = True
              , functionName = "scalpel#substitute"
              , functionArguments =
                  ArgumentList
                    [ Argument "patterns"
                    , Argument "line1"
                    , Argument "line2"
                    , Argument "count"
                    ]
              , functionAttributes = [ "abort" ]
              , functionBody =
                  [ GenericStatement "if a:count == -1"
                  , LetStatement
                      { letLexpr = "l:currentline" , letValue = "a:line1" }
                  , LetStatement { letLexpr = "l:firstline" , letValue = "1" }
                  , LetStatement { letLexpr = "l:lastline" , letValue = "line('$')" }
                  , GenericStatement "else"
                  , LetStatement
                      { letLexpr = "l:firstline"
                      , letValue = "a:line1 <= a:line2 ? a:line1 : a:line2"
                      }
                  , LetStatement
                      { letLexpr = "l:lastline"
                      , letValue = "a:line2 >= a:line2 ? a:line2 : a:line1"
                      }
                  , LetStatement
                      { letLexpr = "l:currentline" , letValue = "l:firstline" }
                  , GenericStatement "endif"
                  , GenericStatement
                      "if match(a:patterns, '\\v^/[^/]*/[^/]*/$') != 0"
                  , GenericStatement "echomsg 'Invalid patterns: ' . a:patterns"
                  , GenericStatement
                      "echomsg 'Expected patterns of the form \"/foo/bar/\".'"
                  , GenericStatement "return"
                  , GenericStatement "endif"
                  , GenericStatement "if getregtype('s') != ''"
                  , LetStatement
                      { letLexpr = "l:register" , letValue = "getreg('s')" }
                  , GenericStatement "endif"
                  , GenericStatement "normal! qs"
                  , GenericStatement "redir => l:replacements"
                  , GenericStatement "try"
                  , GenericStatement
                      "execute l:currentline . ',' . l:lastline . 's' . a:patterns . 'gce#'"
                  , GenericStatement "catch /^Vim:Interrupt$/"
                  , GenericStatement "return"
                  , GenericStatement "finally"
                  , GenericStatement "normal! q"
                  , LetStatement
                      { letLexpr = "l:transcript" , letValue = "getreg('s')" }
                  , GenericStatement "if exists('l:register')"
                  , GenericStatement "call setreg('s', l:register)"
                  , GenericStatement "endif"
                  , GenericStatement "endtry"
                  , GenericStatement "redir END"
                  , GenericStatement "if len(l:replacements) > 0"
                  , LetStatement
                      { letLexpr = "l:last"
                      , letValue = "strpart(l:transcript, len(l:transcript) - 1)"
                      }
                  , GenericStatement
                      "if l:last ==# 'l' || l:last ==# 'q' || l:last ==# '\ESC'"
                  , GenericStatement "return"
                  , GenericStatement "elseif l:last ==# 'a'"
                  , GenericStatement "if l:currentline > l:firstline"
                  , GenericStatement
                      "execute l:firstline . ',' . l:currentline . '-&gce'"
                  , GenericStatement "endif"
                  , GenericStatement "return"
                  , GenericStatement "endif"
                  , GenericStatement "endif"
                  , GenericStatement "if l:currentline > l:firstline"
                  , GenericStatement
                      "execute l:firstline . ',' . l:currentline . '-&gce'"
                  , GenericStatement "endif"
                  ]
              }
          ]
      , Unit
          [ GenericStatement
              "if exists('g:ScalpelLoaded') || &compatible || v:version < 700"
          , GenericStatement "finish"
          , GenericStatement "endif"
          , LetStatement { letLexpr = "g:ScalpelLoaded " , letValue = "1" }
          , LetStatement
              { letLexpr = "s:cpoptions " , letValue = "&cpoptions" }
          , GenericStatement "set cpoptions&vim"
          , LetStatement
              { letLexpr = "s:command"
              , letValue = "get(g:, 'ScalpelCommand', 'Scalpel')"
              }
          , GenericStatement "if s:command ==# ''"
          , GenericStatement "finish"
          , GenericStatement
              "elseif match(s:command, '\\v\\C^[A-Z][A-Za-z]*$') == -1"
          , GenericStatement
              "echoerr 'g:ScalpelCommand must contain only letters and start with a ' . 'capital letter'"
          , GenericStatement "finish"
          , GenericStatement "endif"
          , GenericStatement
              "execute 'command! -nargs=1 -range ' . s:command . ' call scalpel#substitute(<q-args>, <line1>, <line2>, <count>)'"
          , LetStatement { letLexpr = "s:curpos" , letValue = "getcurpos()" }
          , GenericStatement "augroup Scalpel"
          , GenericStatement "autocmd!"
          , GenericStatement "autocmd CursorMoved * let s:curpos=getcurpos()"
          , GenericStatement "augroup END"
          , FunctionDeclaration
              { functionBang = True
              , functionName = "s:GetCurpos"
              , functionArguments = ArgumentList []
              , functionAttributes = []
              , functionBody = [ GenericStatement "return s:curpos" ]
              }
          , GenericStatement
              "execute 'nnoremap <Plug>(Scalpel) :' . s:command . \"/\\\\v<<C-R>=expand('<cword>')<CR>>//<Left>\""
          , GenericStatement
              "execute 'vnoremap <Plug>(ScalpelVisual) :' . s:command . \"/\\\\v<<C-R>=scalpel#cword(<SID>GetCurpos())<CR>>//<Left>\""
          , LetStatement
              { letLexpr = "s:map" , letValue = "get(g:, 'ScalpelMap', 1)" }
          , GenericStatement "if s:map"
          , GenericStatement
              "if !hasmapto('<Plug>(Scalpel)') && maparg('<leader>e', 'n') ==# ''"
          , GenericStatement "nmap <unique> <Leader>e <Plug>(Scalpel)"
          , GenericStatement "endif"
          , GenericStatement
              "if !hasmapto('<Plug>(ScalpelVisual)') && maparg('<leader>e', 'v') ==# ''"
          , GenericStatement "vmap <unique> <Leader>e <Plug>(ScalpelVisual)"
          , GenericStatement "endif"
          , GenericStatement "endif"
          , LetStatement
              { letLexpr = "&cpoptions " , letValue = "s:cpoptions" }
          , UnletStatement { unletBang = False , unletBody = "s:cpoptions" }
          ]
      ]
  ]