--- /dev/null
+Project
+ [ DocBlock
+ [ PluginAnnotation "ferret" "Ferret plug-in for Vim"
+ , TOC
+ [ "Intro"
+ , "Installation"
+ , "Commands"
+ , "Mappings"
+ , "Options"
+ , "Custom autocommands"
+ , "Overrides"
+ , "Troubleshooting"
+ , "FAQ"
+ , "Related"
+ , "Website"
+ , "License"
+ , "Development"
+ , "Authors"
+ , "History"
+ ]
+ ]
+ , 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()" ]
+ , Project
+ [ Unit
+ [ LetStatement { letLexpr = "s:jobs" , letValue = "{}" }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "s:channel_id"
+ , functionArguments = ArgumentList [ Argument "channel" ]
+ , functionAttributes = []
+ , functionBody =
+ [ GenericStatement "return matchstr(a:channel, '\\d\\+')" ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "s:info_from_channel"
+ , functionArguments = ArgumentList [ Argument "channel" ]
+ , functionAttributes = []
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:channel_id"
+ , letValue = "s:channel_id(a:channel)"
+ }
+ , GenericStatement "if has_key(s:jobs, l:channel_id)"
+ , GenericStatement "return s:jobs[l:channel_id]"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#async#search"
+ , functionArguments =
+ ArgumentList [ Argument "command" , Argument "ack" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement "call ferret#private#async#cancel()"
+ , GenericStatement
+ "call ferret#private#autocmd('FerretAsyncStart')"
+ , LetStatement
+ { letLexpr = "l:command_and_args "
+ , letValue = "extend(split(&grepprg), a:command)"
+ }
+ , LetStatement
+ { letLexpr = "l:job"
+ , letValue = "job_start(l:command_and_args, {"
+ }
+ , GenericStatement
+ "\\ 'err_cb': 'ferret#private#async#err_cb', 'out_cb': 'ferret#private#async#out_cb', 'close_cb': 'ferret#private#async#close_cb', 'err_mode': 'raw', 'out_mode': 'raw' })"
+ , LetStatement
+ { letLexpr = "l:channel" , letValue = "job_getchannel(l:job)" }
+ , LetStatement
+ { letLexpr = "l:channel_id"
+ , letValue = "s:channel_id(l:channel)"
+ }
+ , LetStatement
+ { letLexpr = "s:jobs[l:channel_id]" , letValue = "{" }
+ , GenericStatement
+ "\\ 'channel_id': l:channel_id, 'job': l:job, 'errors': [], 'output': [], 'pending_error': '', 'pending_output': '', 'pending_error_length': 0, 'pending_output_length': 0, 'ack': a:ack, 'window': win_getid() }"
+ ]
+ }
+ , LetStatement
+ { letLexpr = "s:max_line_length" , letValue = "32768" }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#async#err_cb"
+ , functionArguments =
+ ArgumentList [ Argument "channel" , Argument "msg" ]
+ , functionAttributes = []
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:info"
+ , letValue = "s:info_from_channel(a:channel)"
+ }
+ , GenericStatement "if type(l:info) == 4"
+ , LetStatement { letLexpr = "l:start" , letValue = "0" }
+ , GenericStatement "while 1"
+ , LetStatement
+ { letLexpr = "l:idx" , letValue = "match(a:msg, '\\n', l:start)" }
+ , GenericStatement "if l:idx==-1"
+ , GenericStatement
+ "if l:info.pending_error_length < s:max_line_length"
+ , LetStatement
+ { letLexpr = "l:rest" , letValue = "strpart(a:msg, l:start)" }
+ , LetStatement
+ { letLexpr = "l:length" , letValue = "strlen(l:rest)" }
+ , LetStatement
+ { letLexpr = "l:info.pending_error." , letValue = "l:rest" }
+ , LetStatement
+ { letLexpr = "l:info.pending_error_length+"
+ , letValue = "l:length"
+ }
+ , GenericStatement "endif"
+ , GenericStatement "break"
+ , GenericStatement "else"
+ , GenericStatement
+ "if l:info.pending_error_length < s:max_line_length"
+ , LetStatement
+ { letLexpr = "l:info.pending_error."
+ , letValue = "strpart(a:msg, l:start, l:idx - l:start)"
+ }
+ , GenericStatement "endif"
+ , GenericStatement "call add(l:info.errors, l:info.pending_error)"
+ , LetStatement
+ { letLexpr = "l:info.pending_error" , letValue = "''" }
+ , LetStatement
+ { letLexpr = "l:info.pending_error_length" , letValue = "0" }
+ , GenericStatement "endif"
+ , LetStatement { letLexpr = "l:start" , letValue = "l:idx + 1" }
+ , GenericStatement "endwhile"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#async#out_cb"
+ , functionArguments =
+ ArgumentList [ Argument "channel" , Argument "msg" ]
+ , functionAttributes = []
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:info"
+ , letValue = "s:info_from_channel(a:channel)"
+ }
+ , GenericStatement "if type(l:info) == 4"
+ , LetStatement { letLexpr = "l:start" , letValue = "0" }
+ , GenericStatement "while 1"
+ , LetStatement
+ { letLexpr = "l:idx" , letValue = "match(a:msg, '\\n', l:start)" }
+ , GenericStatement "if l:idx==-1"
+ , GenericStatement
+ "if l:info.pending_output_length < s:max_line_length"
+ , LetStatement
+ { letLexpr = "l:rest" , letValue = "strpart(a:msg, l:start)" }
+ , LetStatement
+ { letLexpr = "l:length" , letValue = "strlen(l:rest)" }
+ , LetStatement
+ { letLexpr = "l:info.pending_output." , letValue = "l:rest" }
+ , LetStatement
+ { letLexpr = "l:info.pending_output_length+"
+ , letValue = "l:length"
+ }
+ , GenericStatement "endif"
+ , GenericStatement "break"
+ , GenericStatement "else"
+ , GenericStatement
+ "if l:info.pending_output_length < s:max_line_length"
+ , LetStatement
+ { letLexpr = "l:info.pending_output."
+ , letValue = "strpart(a:msg, l:start, l:idx - l:start)"
+ }
+ , GenericStatement "endif"
+ , GenericStatement "call add(l:info.output, l:info.pending_output)"
+ , LetStatement
+ { letLexpr = "l:info.pending_output" , letValue = "''" }
+ , LetStatement
+ { letLexpr = "l:info.pending_output_length" , letValue = "0" }
+ , GenericStatement "endif"
+ , LetStatement { letLexpr = "l:start" , letValue = "l:idx + 1" }
+ , GenericStatement "endwhile"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#async#close_cb"
+ , functionArguments = ArgumentList [ Argument "channel" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:info"
+ , letValue = "s:info_from_channel(a:channel)"
+ }
+ , GenericStatement "if type(l:info) == 4"
+ , GenericStatement "call remove(s:jobs, l:info.channel_id)"
+ , GenericStatement
+ "call ferret#private#autocmd('FerretAsyncFinish')"
+ , GenericStatement "if !l:info.ack"
+ , GenericStatement "call win_gotoid(l:info.window)"
+ , GenericStatement "endif"
+ , GenericStatement
+ "call s:finalize_search(l:info.output, l:info.ack)"
+ , GenericStatement "for l:error in l:info.errors"
+ , GenericStatement "unsilent echomsg l:error"
+ , GenericStatement "endfor"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#async#pull"
+ , functionArguments = ArgumentList []
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement "for l:channel_id in keys(s:jobs)"
+ , LetStatement
+ { letLexpr = "l:info" , letValue = "s:jobs[l:channel_id]" }
+ , GenericStatement
+ "call s:finalize_search(l:info.output, l:info.ack)"
+ , GenericStatement "endfor"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#async#cancel"
+ , functionArguments = ArgumentList []
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ LetStatement { letLexpr = "l:canceled" , letValue = "0" }
+ , GenericStatement "for l:channel_id in keys(s:jobs)"
+ , LetStatement
+ { letLexpr = "l:info" , letValue = "s:jobs[l:channel_id]" }
+ , GenericStatement "call job_stop(l:info.job)"
+ , GenericStatement "call remove(s:jobs, l:channel_id)"
+ , LetStatement { letLexpr = "l:canceled" , letValue = "1" }
+ , GenericStatement "endfor"
+ , GenericStatement "if l:canceled"
+ , GenericStatement
+ "call ferret#private#autocmd('FerretAsyncFinish')"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#async#debug"
+ , functionArguments = ArgumentList []
+ , functionAttributes = [ "abort" ]
+ , functionBody = [ GenericStatement "return s:jobs" ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "s:finalize_search"
+ , functionArguments =
+ ArgumentList [ Argument "output" , Argument "ack" ]
+ , functionAttributes = []
+ , functionBody =
+ [ GenericStatement "if a:ack"
+ , GenericStatement "cexpr a:output"
+ , GenericStatement
+ "execute get(g:, 'FerretQFHandler', 'botright cwindow')"
+ , GenericStatement "call ferret#private#post('qf')"
+ , GenericStatement "else"
+ , LexprStatement { lexprBang = False , lexprExpr = "a:output" }
+ , GenericStatement "execute get(g:, 'FerretLLHandler', 'lwindow')"
+ , GenericStatement "call ferret#private#post('location')"
+ , GenericStatement "endif"
+ ]
+ }
+ ]
+ , Unit
+ [ FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#dispatch#search"
+ , functionArguments = ArgumentList [ Argument "command" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement "if has('autocmd')"
+ , GenericStatement "augroup FerretPostQF"
+ , GenericStatement "autocmd!"
+ , GenericStatement
+ "autocmd QuickfixCmdPost cgetfile call ferret#private#post('qf')"
+ , GenericStatement "augroup END"
+ , GenericStatement "endif"
+ , LetStatement
+ { letLexpr = "l:original_makeprg" , letValue = "&l:makeprg" }
+ , LetStatement
+ { letLexpr = "l:original_errorformat"
+ , letValue = "&l:errorformat"
+ }
+ , GenericStatement "try"
+ , LetStatement
+ { letLexpr = "&l:makeprg"
+ , letValue = "&grepprg . ' ' . a:command"
+ }
+ , LetStatement
+ { letLexpr = "&l:errorformat" , letValue = "&grepformat" }
+ , GenericStatement "echomsg &l:makeprg"
+ , GenericStatement "Make"
+ , GenericStatement "catch"
+ , GenericStatement "call ferret#private#clearautocmd()"
+ , GenericStatement "finally"
+ , LetStatement
+ { letLexpr = "&l:makeprg" , letValue = "l:original_makeprg" }
+ , LetStatement
+ { letLexpr = "&l:errorformat"
+ , letValue = "l:original_errorformat"
+ }
+ , GenericStatement "endtry"
+ ]
+ }
+ ]
+ , Unit
+ [ FunctionDeclaration
+ { functionBang = True
+ , functionName = "s:finalize_search"
+ , functionArguments =
+ ArgumentList [ Argument "output" , Argument "ack" ]
+ , functionAttributes = []
+ , functionBody =
+ [ GenericStatement "if a:ack"
+ , GenericStatement "cexpr a:output"
+ , GenericStatement
+ "execute get(g:, 'FerretQFHandler', 'botright cwindow')"
+ , GenericStatement "call ferret#private#post('qf')"
+ , GenericStatement "else"
+ , LexprStatement { lexprBang = False , lexprExpr = "a:output" }
+ , GenericStatement "execute get(g:, 'FerretLLHandler', 'lwindow')"
+ , GenericStatement "call ferret#private#post('location')"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#vanilla#search"
+ , functionArguments =
+ ArgumentList [ Argument "command" , Argument "ack" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:output"
+ , letValue = "system(&grepprg . ' ' . a:command)"
+ }
+ , GenericStatement "call s:finalize_search(l:output, a:ack)"
+ ]
+ }
+ ]
+ , Unit
+ [ FunctionDeclaration
+ { functionBang = True
+ , functionName = "s:delete"
+ , functionArguments =
+ ArgumentList [ Argument "first" , Argument "last" ]
+ , functionAttributes = []
+ , functionBody =
+ [ LetStatement { letLexpr = "l:list" , letValue = "getqflist()" }
+ , LetStatement { letLexpr = "l:line" , letValue = "a:first" }
+ , GenericStatement "while l:line >= a:first && l:line <= a:last"
+ , LetStatement { letLexpr = "l:list[l:line - 1]" , letValue = "0" }
+ , LetStatement { letLexpr = "l:line" , letValue = "l:line + 1" }
+ , GenericStatement "endwhile"
+ , GenericStatement "call setqflist(l:list, 'r')"
+ , GenericStatement "execute 'cc ' . a:first"
+ , GenericStatement "execute \"normal \\<C-W>\\<C-P>\""
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#dispatch"
+ , functionArguments = ArgumentList []
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ Empty
+ , LetStatement
+ { letLexpr = "l:dispatch"
+ , letValue = "get(g:, 'FerretDispatch', 1)"
+ }
+ , GenericStatement "return l:dispatch && exists(':Make') == 2"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#async"
+ , functionArguments = ArgumentList []
+ , functionAttributes = []
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:async" , letValue = "get(g:, 'FerretJob', 1)" }
+ , GenericStatement "return l:async && has('patch-7-4-1829')"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#error"
+ , functionArguments = ArgumentList [ Argument "message" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement "call inputsave()"
+ , GenericStatement "echohl ErrorMsg"
+ , GenericStatement
+ "unsilent call input(a:message . ': press ENTER to continue')"
+ , GenericStatement "echohl NONE"
+ , GenericStatement "call inputrestore()"
+ , GenericStatement "unsilent echo"
+ , GenericStatement "redraw!"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "s:parse"
+ , functionArguments = ArgumentList [ Argument "args" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement "if exists('g:ferret_lastsearch')"
+ , UnletStatement
+ { unletBang = False , unletBody = "g:ferret_lastsearch" }
+ , GenericStatement "endif"
+ , LetStatement { letLexpr = "l:expanded_args" , letValue = "[]" }
+ , GenericStatement "for l:arg in a:args"
+ , GenericStatement "if ferret#private#option(l:arg)"
+ , GenericStatement "call add(l:expanded_args, l:arg)"
+ , GenericStatement "elseif exists('g:ferret_lastsearch')"
+ , LetStatement
+ { letLexpr = "l:file_args"
+ , letValue =
+ "glob(l:arg, 1, 1) \" Ignore 'wildignore', return a list."
+ }
+ , GenericStatement "if len(l:file_args)"
+ , GenericStatement "call extend(l:expanded_args, l:file_args)"
+ , GenericStatement "else"
+ , GenericStatement "call add(l:expanded_args, l:arg)"
+ , GenericStatement "endif"
+ , GenericStatement "else"
+ , LetStatement
+ { letLexpr = "g:ferret_lastsearch" , letValue = "l:arg" }
+ , GenericStatement "call add(l:expanded_args, l:arg)"
+ , GenericStatement "endif"
+ , GenericStatement "endfor"
+ , GenericStatement "if ferret#private#async()"
+ , GenericStatement "return l:expanded_args"
+ , GenericStatement "endif"
+ , LetStatement
+ { letLexpr = "l:each_word_shell_escaped"
+ , letValue = "map(l:expanded_args, 'shellescape(v:val)')"
+ }
+ , LetStatement
+ { letLexpr = "l:joined"
+ , letValue = "join(l:each_word_shell_escaped)"
+ }
+ , GenericStatement "return escape(l:joined, '<>#')"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#clearautocmd"
+ , functionArguments = ArgumentList []
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement "if has('autocmd')"
+ , GenericStatement "augroup FerretPostQF"
+ , GenericStatement "autocmd!"
+ , GenericStatement "augroup END"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#post"
+ , functionArguments = ArgumentList [ Argument "type" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement "call ferret#private#clearautocmd()"
+ , LetStatement
+ { letLexpr = "l:lastsearch "
+ , letValue = "get(g:, 'ferret_lastsearch', '')"
+ }
+ , LetStatement
+ { letLexpr = "l:qflist "
+ , letValue = "a:type == 'qf' ? getqflist() : getloclist(0)"
+ }
+ , LetStatement
+ { letLexpr = "l:tip "
+ , letValue = "' [see `:help ferret-quotes`]'"
+ }
+ , GenericStatement "if len(l:qflist) == 0"
+ , LetStatement
+ { letLexpr = "l:base "
+ , letValue =
+ "'No results for search pattern `' . l:lastsearch . '`'"
+ }
+ , GenericStatement
+ "if l:lastsearch =~ '\\v^([' . \"'\" . '\"])[^ \\1]+\\1$'"
+ , GenericStatement "call ferret#private#error(l:base . l:tip)"
+ , GenericStatement "else"
+ , GenericStatement "call ferret#private#error(l:base)"
+ , GenericStatement "endif"
+ , GenericStatement "else"
+ , LetStatement
+ { letLexpr = "l:invalid "
+ , letValue = "filter(copy(l:qflist), 'v:val.valid == 0')"
+ }
+ , GenericStatement "if len(l:invalid) == len(l:qflist)"
+ , GenericStatement "redraw!"
+ , GenericStatement "echohl ErrorMsg"
+ , GenericStatement "for l:item in l:invalid"
+ , GenericStatement "unsilent echomsg l:item.text"
+ , GenericStatement "endfor"
+ , GenericStatement "echohl NONE"
+ , LetStatement
+ { letLexpr = "l:base "
+ , letValue = "'Search for `' . l:lastsearch . '` failed'"
+ }
+ , LetStatement
+ { letLexpr = "l:suffix "
+ , letValue = "a:type == 'qf' && ferret#private#dispatch() ?"
+ }
+ , GenericStatement "\\ ' (run `:messages` to see details)' : ''"
+ , GenericStatement
+ "if l:lastsearch =~ '\\v^[' . \"'\" . '\"].+[^' . \"'\" . '\"]$'"
+ , GenericStatement
+ "call ferret#private#error(l:base . l:tip . l:suffix)"
+ , GenericStatement "else"
+ , GenericStatement "call ferret#private#error(l:base . l:suffix)"
+ , GenericStatement "endif"
+ , GenericStatement "endif"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#ack"
+ , functionArguments = ArgumentList [ Argument "..." ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:command" , letValue = "s:parse(a:000)" }
+ , GenericStatement "call ferret#private#hlsearch()"
+ , GenericStatement "if empty(&grepprg)"
+ , GenericStatement "return"
+ , GenericStatement "endif"
+ , GenericStatement "if ferret#private#async()"
+ , GenericStatement "call ferret#private#async#search(l:command, 1)"
+ , GenericStatement "elseif ferret#private#dispatch()"
+ , GenericStatement "call ferret#private#dispatch#search(l:command)"
+ , GenericStatement "else"
+ , GenericStatement
+ "call ferret#private#vanilla#search(l:command, 1)"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#lack"
+ , functionArguments = ArgumentList [ Argument "..." ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:command" , letValue = "s:parse(a:000)" }
+ , GenericStatement "call ferret#private#hlsearch()"
+ , GenericStatement "if empty(&grepprg)"
+ , GenericStatement "return"
+ , GenericStatement "endif"
+ , GenericStatement "if ferret#private#async()"
+ , GenericStatement "call ferret#private#async#search(l:command, 0)"
+ , GenericStatement "else"
+ , GenericStatement
+ "call ferret#private#vanilla#search(l:command, 0)"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#hlsearch"
+ , functionArguments = ArgumentList []
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement "if has('extra_search')"
+ , Empty
+ , LetStatement
+ { letLexpr = "l:hlsearch"
+ , letValue = "get(g:, 'FerretHlsearch', &hlsearch)"
+ }
+ , GenericStatement "if l:hlsearch"
+ , LetStatement
+ { letLexpr = "@/" , letValue = "g:ferret_lastsearch" }
+ , GenericStatement
+ "call feedkeys(\":let &hlsearch=1 | echo \\<CR>\", 'n')"
+ , GenericStatement "endif"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#acks"
+ , functionArguments = ArgumentList [ Argument "command" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:matches "
+ , letValue =
+ "matchlist(a:command, '\\v\\C^(([^|\"\\\\a-zA-Z0-9]).+\\2.*\\2)([cgeiI]*)$')"
+ }
+ , GenericStatement "if !len(l:matches)"
+ , GenericStatement
+ "call ferret#private#error( 'Ferret: Expected a substitution expression (/foo/bar/); got: ' . a:command )"
+ , GenericStatement "return"
+ , GenericStatement "endif"
+ , LetStatement
+ { letLexpr = "l:pattern " , letValue = "l:matches[1]" }
+ , LetStatement
+ { letLexpr = "l:options " , letValue = "l:matches[3]" }
+ , GenericStatement "if l:options !~# 'e'"
+ , LetStatement { letLexpr = "l:options ." , letValue = "'e'" }
+ , GenericStatement "endif"
+ , GenericStatement "if l:options !~# 'g'"
+ , LetStatement { letLexpr = "l:options ." , letValue = "'g'" }
+ , GenericStatement "endif"
+ , LetStatement
+ { letLexpr = "l:filenames" , letValue = "ferret#private#qargs()" }
+ , GenericStatement "if l:filenames ==# ''"
+ , GenericStatement
+ "call ferret#private#error( 'Ferret: Quickfix filenames must be present, but there are none ' . '(must use :Ack to find files before :Acks can be used)' )"
+ , GenericStatement "return"
+ , GenericStatement "endif"
+ , GenericStatement "execute 'args' l:filenames"
+ , GenericStatement "call ferret#private#autocmd('FerretWillWrite')"
+ , GenericStatement
+ "execute 'argdo' '%s' . l:pattern . l:options . ' | update'"
+ , GenericStatement "call ferret#private#autocmd('FerretDidWrite')"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#autocmd"
+ , functionArguments = ArgumentList [ Argument "cmd" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement
+ "if v:version > 703 || v:version == 703 && has('patch438')"
+ , GenericStatement
+ "execute 'silent doautocmd <nomodeline> User ' . a:cmd"
+ , GenericStatement "else"
+ , GenericStatement "execute 'silent doautocmd User ' . a:cmd"
+ , GenericStatement "endif"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "s:split"
+ , functionArguments = ArgumentList [ Argument "str" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement
+ "return split(a:str, '\\%(\\%(\\%(^\\|[^\\\\]\\)\\\\\\)\\@<!\\s\\)\\+\\zs')"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#ackcomplete"
+ , functionArguments =
+ ArgumentList
+ [ Argument "arglead" , Argument "cmdline" , Argument "cursorpos" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement
+ "return ferret#private#complete('Ack', a:arglead, a:cmdline, a:cursorpos)"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#lackcomplete"
+ , functionArguments =
+ ArgumentList
+ [ Argument "arglead" , Argument "cmdline" , Argument "cursorpos" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ GenericStatement
+ "return ferret#private#complete('Lack', a:arglead, a:cmdline, a:cursorpos)"
+ ]
+ }
+ , GenericStatement "if executable('ag')"
+ , LetStatement { letLexpr = "s:executable" , letValue = "'ag'" }
+ , GenericStatement "elseif executable('ack')"
+ , LetStatement { letLexpr = "s:executable" , letValue = "'ack'" }
+ , GenericStatement "elseif executable('grep')"
+ , LetStatement { letLexpr = "s:executable" , letValue = "'grep'" }
+ , GenericStatement "else"
+ , LetStatement { letLexpr = "s:executable" , letValue = "''" }
+ , GenericStatement "endif"
+ , LetStatement { letLexpr = "s:options " , letValue = "{" }
+ , GenericStatement
+ "\\ 'ack': [ '--ignore-ack-defaults', '--ignore-case', '--ignore-dir', '--ignore-directory', '--invert-match', '--known-types', '--literal', '--no-recurse', '--recurse', '--sort-files', '--type', '--word-regexp', '-1', '-Q', '-R', '-i', '-k', '-r', '-v', '-w', ], 'ag': [ '--all-types', '--all-text', '--case-sensitive', '--depth', '--follow', '--ignore', '--ignore-case', '--ignore-dir', '--invert-match', '--literal', '--max-count', '--skip-vcs-ignores', '--unrestricted', '--word-regexp', '-Q', '-U', '-a', '-i', '-m', '-s', '-t', '-u', '-v', '-w' ] }"
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#complete"
+ , functionArguments =
+ ArgumentList
+ [ Argument "cmd"
+ , Argument "arglead"
+ , Argument "cmdline"
+ , Argument "cursorpos"
+ ]
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:args"
+ , letValue = "s:split(a:cmdline[:a:cursorpos])"
+ }
+ , LetStatement { letLexpr = "l:command_seen" , letValue = "0" }
+ , LetStatement { letLexpr = "l:pattern_seen" , letValue = "0" }
+ , LetStatement { letLexpr = "l:position" , letValue = "0" }
+ , GenericStatement "for l:arg in l:args"
+ , LetStatement
+ { letLexpr = "l:position" , letValue = "l:position + len(l:arg)" }
+ , LetStatement
+ { letLexpr = "l:stripped"
+ , letValue = "substitute(l:arg, '\\s\\+$', '', '')"
+ }
+ , GenericStatement "if ferret#private#option(l:stripped)"
+ , GenericStatement "if a:cursorpos <= l:position"
+ , LetStatement
+ { letLexpr = "l:options"
+ , letValue = "get(s:options, s:executable, [])"
+ }
+ , GenericStatement
+ "return filter(l:options, 'match(v:val, l:stripped) == 0')"
+ , GenericStatement "endif"
+ , GenericStatement "elseif l:pattern_seen"
+ , GenericStatement "if a:cursorpos <= l:position"
+ , GenericStatement "return glob(a:arglead . '*', 1, 1)"
+ , GenericStatement "end"
+ , GenericStatement "elseif l:command_seen"
+ , LetStatement { letLexpr = "l:pattern_seen" , letValue = "1" }
+ , GenericStatement "elseif l:stripped ==# a:cmd"
+ , LetStatement { letLexpr = "l:command_seen" , letValue = "1" }
+ , GenericStatement "else"
+ , GenericStatement "end"
+ , GenericStatement "endfor"
+ , GenericStatement "return []"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#option"
+ , functionArguments = ArgumentList [ Argument "str" ]
+ , functionAttributes = [ "abort" ]
+ , functionBody = [ GenericStatement "return a:str =~# '^-'" ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#qargs"
+ , functionArguments = ArgumentList []
+ , functionAttributes = [ "abort" ]
+ , functionBody =
+ [ LetStatement { letLexpr = "l:buffer_numbers" , letValue = "{}" }
+ , GenericStatement "for l:item in getqflist()"
+ , LetStatement
+ { letLexpr = "l:buffer_numbers[l:item['bufnr']]"
+ , letValue = "bufname(l:item['bufnr'])"
+ }
+ , GenericStatement "endfor"
+ , GenericStatement
+ "return join(map(values(l:buffer_numbers), 'fnameescape(v:val)'))"
+ ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#qf_delete"
+ , functionArguments = ArgumentList []
+ , functionAttributes = [ "range" ]
+ , functionBody =
+ [ GenericStatement "call s:delete(a:firstline, a:lastline)" ]
+ }
+ , FunctionDeclaration
+ { functionBang = True
+ , functionName = "ferret#private#qf_delete_motion"
+ , functionArguments =
+ ArgumentList [ Argument "type" , Argument "..." ]
+ , functionAttributes = []
+ , functionBody =
+ [ LetStatement
+ { letLexpr = "l:selection" , letValue = "&selection" }
+ , LetStatement
+ { letLexpr = "&selection" , letValue = "'inclusive'" }
+ , LetStatement
+ { letLexpr = "l:firstline" , letValue = "line(\"'[\")" }
+ , LetStatement
+ { letLexpr = "l:lastline" , letValue = "line(\"']\")" }
+ , GenericStatement "call s:delete(l:firstline, l:lastline)"
+ , LetStatement
+ { letLexpr = "&selection" , letValue = "l:selection" }
+ ]
+ }
+ ]
+ , Unit
+ [ 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"
+ , 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"
+ ]
+ , Unit
+ [ 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 --vimgrep'" }
+ , GenericStatement
+ "elseif executable('ack') \" Ack: better than grep."
+ , LetStatement
+ { letLexpr = "s:ackprg "
+ , letValue = "'ack --column --with-filename'"
+ }
+ , 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"
+ , GenericStatement
+ "command! -nargs=+ -complete=customlist,ferret#private#ackcomplete Ack call ferret#private#ack(<f-args>)"
+ , GenericStatement
+ "command! -nargs=+ -complete=customlist,ferret#private#lackcomplete Lack call ferret#private#lack(<f-args>)"
+ , GenericStatement
+ "command! -nargs=1 Acks call ferret#private#acks(<q-args>)"
+ , GenericStatement
+ "command! FerretCancelAsync call ferret#private#async#cancel()"
+ , GenericStatement
+ "command! FerretPullAsync call ferret#private#async#pull()"
+ , GenericStatement "nnoremap <Plug>(FerretAck) :Ack<space>"
+ , GenericStatement "nnoremap <Plug>(FerretLack) :Lack<space>"
+ , GenericStatement
+ "nnoremap <Plug>(FerretAckWord) :Ack <C-r><C-w><CR>"
+ , GenericStatement
+ "nnoremap <Plug>(FerretAcks) :Acks <c-r>=(exists('g:ferret_lastsearch') ? '/' . g:ferret_lastsearch . '//' : ' ')<CR><Left>"
+ , LetStatement
+ { letLexpr = "s:map" , letValue = "get(g:, 'FerretMap', 1)" }
+ , GenericStatement "if s:map"
+ , GenericStatement
+ "if !hasmapto('<Plug>(FerretAck)') && maparg('<leader>a', 'n') ==# ''"
+ , GenericStatement "nmap <unique> <leader>a <Plug>(FerretAck)"
+ , GenericStatement "endif"
+ , GenericStatement
+ "if !hasmapto('<Plug>FerretLack') && maparg('<leader>l', 'n') ==# ''"
+ , GenericStatement "nmap <unique> <leader>l <Plug>(FerretLack)"
+ , GenericStatement "endif"
+ , GenericStatement
+ "if !hasmapto('<Plug>(FerretAckWord)') && maparg('<leader>s', 'n') ==# ''"
+ , GenericStatement "nmap <unique> <leader>s <Plug>(FerretAckWord)"
+ , GenericStatement "endif"
+ , GenericStatement
+ "if !hasmapto('<Plug>(FerretAcks)') && maparg('<leader>r', 'n') ==# ''"
+ , GenericStatement "nmap <unique> <leader>r <Plug>(FerretAcks)"
+ , GenericStatement "endif"
+ , GenericStatement "endif"
+ , GenericStatement
+ "command! -bar Qargs execute 'args' ferret#private#qargs()"
+ , LetStatement
+ { letLexpr = "s:commands"
+ , letValue = "get(g:, 'FerretQFCommands', 1)"
+ }
+ , GenericStatement "if s:commands"
+ , GenericStatement
+ "cabbrev <silent> <expr> cn ((getcmdtype() == ':' && getcmdpos() == 3) ? 'cn <bar> normal zz' : 'cn')"
+ , GenericStatement
+ "cabbrev <silent> <expr> cnf ((getcmdtype() == ':' && getcmdpos() == 4) ? 'cnf <bar> normal zz' : 'cnf')"
+ , GenericStatement
+ "cabbrev <silent> <expr> cp ((getcmdtype() == ':' && getcmdpos() == 3) ? 'cp <bar> normal zz' : 'cp')"
+ , GenericStatement
+ "cabbrev <silent> <expr> cpf ((getcmdtype() == ':' && getcmdpos() == 4) ? 'cpf <bar> normal zz' : 'cpf')"
+ , GenericStatement "endif"
+ , LetStatement
+ { letLexpr = "&cpoptions " , letValue = "s:cpoptions" }
+ , UnletStatement { unletBang = False , unletBody = "s:cpoptions" }
+ ]
+ ]
+ , CommandsAnnotation
+ , CommandAnnotation "Ack" (Just "{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."
+ ]
+ , CommandAnnotation "Lack" (Just "{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 "."
+ ]
+ , CommandAnnotation "Acks" (Just "/{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/" ]
+ , CommandAnnotation "Qargs" Nothing
+ , Paragraph
+ [ Plaintext "This"
+ , Whitespace
+ , Plaintext "is"
+ , Whitespace
+ , Plaintext "a"
+ , Whitespace
+ , Plaintext "utility"
+ , Whitespace
+ , Plaintext "function"
+ , Whitespace
+ , Plaintext "that"
+ , Whitespace
+ , Plaintext "is"
+ , Whitespace
+ , Plaintext "used"
+ , Whitespace
+ , Plaintext "by"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Link ":Acks"
+ , Whitespace
+ , Plaintext "command"
+ , Whitespace
+ , Plaintext "but"
+ , Whitespace
+ , Plaintext "is"
+ , Whitespace
+ , Plaintext "also"
+ , Whitespace
+ , Plaintext "generally"
+ , Whitespace
+ , Plaintext "useful"
+ , Whitespace
+ , Plaintext "enough"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "warrant"
+ , Whitespace
+ , Plaintext "being"
+ , Whitespace
+ , Plaintext "exposed"
+ , Whitespace
+ , Plaintext "publicly."
+ ]
+ , Paragraph
+ [ Plaintext "It"
+ , Whitespace
+ , Plaintext "takes"
+ , 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 "sets"
+ , Whitespace
+ , Plaintext "them"
+ , Whitespace
+ , Plaintext "as"
+ , Whitespace
+ , Link ":args"
+ , Whitespace
+ , Plaintext "so"
+ , Whitespace
+ , Plaintext "that"
+ , Whitespace
+ , Plaintext "they"
+ , Whitespace
+ , Plaintext "can"
+ , Whitespace
+ , Plaintext "be"
+ , Whitespace
+ , Plaintext "operated"
+ , Whitespace
+ , Plaintext "on"
+ , Whitespace
+ , Plaintext "en"
+ , Whitespace
+ , Plaintext "masse"
+ , Whitespace
+ , Plaintext "via"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Link ":argdo"
+ , Whitespace
+ , Plaintext "command."
+ ]
+ , 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}"
+ ]
+ ]
+ , 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)"
+ ]
+ , MappingAnnotation "<Plug>(FerretLack)"
+ , Paragraph
+ [ Plaintext "Ferret"
+ , Whitespace
+ , Plaintext "maps"
+ , Whitespace
+ , Plaintext "<leader>l"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Link "<Plug>(FerretLack)"
+ , Plaintext ","
+ , Whitespace
+ , Plaintext "which"
+ , Whitespace
+ , Plaintext "triggers"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Link ":Lack"
+ , 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>l, use <leader>y."
+ , "nmap <leader>y <Plug>(FerretLack)"
+ ]
+ , MappingAnnotation "<Plug>(FerretAckWord)"
+ , Paragraph
+ [ Plaintext "Ferret"
+ , Whitespace
+ , Plaintext "maps"
+ , Whitespace
+ , Plaintext "<leader>s"
+ , Whitespace
+ , Plaintext "(mnemonix:"
+ , Whitespace
+ , Plaintext "\"selection)"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Link "<Plug>(FerretAckWord)"
+ , Plaintext ","
+ , Whitespace
+ , Plaintext "which"
+ , Whitespace
+ , Plaintext "uses"
+ , Whitespace
+ , Link ":Ack"
+ , 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 "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>s, use <leader>z."
+ , "nmap <leader>z <Plug>(FerretAckWord)"
+ ]
+ , MappingAnnotation "<Plug>(FerretAcks)"
+ , Paragraph
+ [ Plaintext "Ferret"
+ , Whitespace
+ , Plaintext "maps"
+ , Whitespace
+ , Plaintext "<leader>r"
+ , Whitespace
+ , Plaintext "(mnemonic:"
+ , Whitespace
+ , Plaintext "\"replace\")"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Link "<Plug>(FerretAcks)"
+ , Plaintext ","
+ , Whitespace
+ , Plaintext "which"
+ , Whitespace
+ , Plaintext "triggers"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Link ":Acks"
+ , Whitespace
+ , Plaintext "command"
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Plaintext "fills"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "prompt"
+ , Whitespace
+ , Plaintext "with"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "last"
+ , Whitespace
+ , Plaintext "search"
+ , Whitespace
+ , Plaintext "term"
+ , Whitespace
+ , Plaintext "from"
+ , Whitespace
+ , Plaintext "Ferret."
+ , 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>r, use <leader>u."
+ , "nmap <leader>u <Plug>(FerretAcks)"
+ ]
+ , OptionsAnnotation
+ , OptionAnnotation "g:FerretDispatch" "boolean" (Just "1")
+ , Paragraph
+ [ Plaintext "Controls"
+ , Whitespace
+ , Plaintext "whether"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "use"
+ , Whitespace
+ , Plaintext "vim-dispatch"
+ , Whitespace
+ , Plaintext "(and"
+ , Whitespace
+ , Plaintext "specifically,"
+ , Whitespace
+ , Link ":Make"
+ , Plaintext ")"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "run"
+ , Whitespace
+ , Link ":Ack"
+ , Whitespace
+ , Plaintext "searches"
+ , Whitespace
+ , Plaintext "asynchronously,"
+ , Whitespace
+ , Plaintext "when"
+ , Whitespace
+ , Plaintext "available."
+ , Whitespace
+ , Plaintext "To"
+ , Whitespace
+ , Plaintext "prevent"
+ , Whitespace
+ , Plaintext "vim-dispatch"
+ , Whitespace
+ , Plaintext "from"
+ , Whitespace
+ , Plaintext "being"
+ , Whitespace
+ , Plaintext "used,"
+ , Whitespace
+ , Plaintext "set"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "0:"
+ ]
+ , Fenced [ "let g:FerretDispatch=0" ]
+ , OptionAnnotation "g:FerretHlsearch" "boolean" Nothing
+ , Paragraph
+ [ Plaintext "Controls"
+ , Whitespace
+ , Plaintext "whether"
+ , Whitespace
+ , Plaintext "Ferret"
+ , Whitespace
+ , Plaintext "should"
+ , Whitespace
+ , Plaintext "attempt"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "highlight"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "search"
+ , Whitespace
+ , Plaintext "pattern"
+ , Whitespace
+ , Plaintext "when"
+ , Whitespace
+ , Plaintext "running"
+ , Whitespace
+ , Link ":Ack"
+ , Whitespace
+ , Plaintext "or"
+ , Whitespace
+ , Link ":Lack"
+ , Plaintext "."
+ , Whitespace
+ , Plaintext "If"
+ , Whitespace
+ , Plaintext "left"
+ , Whitespace
+ , Plaintext "unset,"
+ , Whitespace
+ , Plaintext "Ferret"
+ , Whitespace
+ , Plaintext "will"
+ , Whitespace
+ , Plaintext "respect"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "current"
+ , Whitespace
+ , Plaintext "'hlsearch'"
+ , Whitespace
+ , Plaintext "setting."
+ , Whitespace
+ , Plaintext "To"
+ , Whitespace
+ , Plaintext "force"
+ , Whitespace
+ , Plaintext "highlighting"
+ , Whitespace
+ , Plaintext "on"
+ , Whitespace
+ , Plaintext "or"
+ , Whitespace
+ , Plaintext "off"
+ , Whitespace
+ , Plaintext "irrespective"
+ , Whitespace
+ , Plaintext "of"
+ , Whitespace
+ , Plaintext "'hlsearch',"
+ , Whitespace
+ , Plaintext "set"
+ , Whitespace
+ , Link "g:FerretHlsearch"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "1"
+ , Whitespace
+ , Plaintext "(on)"
+ , Whitespace
+ , Plaintext "or"
+ , Whitespace
+ , Plaintext "0"
+ , Whitespace
+ , Plaintext "(off):"
+ ]
+ , Fenced [ "let g:FerretHlsearch=0" ]
+ , 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" ]
+ , 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" ]
+ , OptionAnnotation "g:FerretLoaded" "any" Nothing
+ , Paragraph
+ [ Plaintext "To"
+ , Whitespace
+ , Plaintext "prevent"
+ , Whitespace
+ , Plaintext "Ferret"
+ , Whitespace
+ , Plaintext "from"
+ , Whitespace
+ , Plaintext "being"
+ , Whitespace
+ , Plaintext "loaded,"
+ , Whitespace
+ , Plaintext "set"
+ , Whitespace
+ , Link "g:FerretLoaded"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "any"
+ , Whitespace
+ , Plaintext "value"
+ , Whitespace
+ , Plaintext "in"
+ , Whitespace
+ , Plaintext "your"
+ , Whitespace
+ , Link ".vimrc"
+ , Plaintext "."
+ , Whitespace
+ , Plaintext "For"
+ , Whitespace
+ , Plaintext "example:"
+ ]
+ , Fenced [ "let g:FerretLoaded=1" ]
+ , 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" ]
+ , OptionAnnotation "g:FerretQFCommands" "boolean" (Just "1")
+ , Paragraph
+ [ Plaintext "Controls"
+ , Whitespace
+ , Plaintext "whether"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "set"
+ , Whitespace
+ , Plaintext "up"
+ , Whitespace
+ , Plaintext "custom"
+ , Whitespace
+ , Plaintext "versions"
+ , Whitespace
+ , Plaintext "of"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Link "quickfix"
+ , Whitespace
+ , Plaintext "commands,"
+ , Whitespace
+ , Link ":cn"
+ , Plaintext ","
+ , Whitespace
+ , Link ":cnf"
+ , Plaintext ","
+ , Whitespace
+ , Link ":cp"
+ , Whitespace
+ , Plaintext "an"
+ , Whitespace
+ , Link ":cpf"
+ , Plaintext "."
+ , Whitespace
+ , Plaintext "These"
+ , Whitespace
+ , Plaintext "overrides"
+ , Whitespace
+ , Plaintext "vertically"
+ , Whitespace
+ , Plaintext "center"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "match"
+ , Whitespace
+ , Plaintext "within"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "viewport"
+ , Whitespace
+ , Plaintext "on"
+ , Whitespace
+ , Plaintext "each"
+ , Whitespace
+ , Plaintext "jump."
+ , Whitespace
+ , Plaintext "To"
+ , Whitespace
+ , Plaintext "prevent"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "custom"
+ , Whitespace
+ , Plaintext "versions"
+ , Whitespace
+ , Plaintext "from"
+ , Whitespace
+ , Plaintext "being"
+ , Whitespace
+ , Plaintext "configured,"
+ , Whitespace
+ , Plaintext "set"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "0:"
+ ]
+ , Fenced [ "let g:FerretQFCommands=0" ]
+ , 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."
+ ]
+ , Paragraph
+ [ Plaintext "2."
+ , Whitespace
+ , Plaintext "Redistributions"
+ , Whitespace
+ , Plaintext "in"
+ , Whitespace
+ , Plaintext "binary"
+ , Whitespace
+ , Plaintext "form"
+ , Whitespace
+ , Plaintext "must"
+ , Whitespace
+ , Plaintext "reproduce"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "above"
+ , Whitespace
+ , Plaintext "copyright"
+ , Whitespace
+ , Plaintext "notice,"
+ , Whitespace
+ , Plaintext "this"
+ , Whitespace
+ , Plaintext "list"
+ , Whitespace
+ , Plaintext "of"
+ , Whitespace
+ , Plaintext "conditions"
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "following"
+ , Whitespace
+ , Plaintext "disclaimer"
+ , Whitespace
+ , Plaintext "in"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "documentation"
+ , Whitespace
+ , Plaintext "and/or"
+ , Whitespace
+ , Plaintext "other"
+ , Whitespace
+ , Plaintext "materials"
+ , Whitespace
+ , Plaintext "provided"
+ , Whitespace
+ , Plaintext "with"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "distribution."
+ ]
+ , Paragraph
+ [ Plaintext "THIS"
+ , Whitespace
+ , Plaintext "SOFTWARE"
+ , Whitespace
+ , Plaintext "IS"
+ , Whitespace
+ , Plaintext "PROVIDED"
+ , Whitespace
+ , Plaintext "BY"
+ , Whitespace
+ , Plaintext "THE"
+ , Whitespace
+ , Plaintext "COPYRIGHT"
+ , Whitespace
+ , Plaintext "HOLDERS"
+ , Whitespace
+ , Plaintext "AND"
+ , Whitespace
+ , Plaintext "CONTRIBUTORS"
+ , Whitespace
+ , Plaintext "\"AS"
+ , Whitespace
+ , Plaintext "IS\""
+ , Whitespace
+ , Plaintext "AND"
+ , Whitespace
+ , Plaintext "ANY"
+ , Whitespace
+ , Plaintext "EXPRESS"
+ , Whitespace
+ , Plaintext "OR"
+ , Whitespace
+ , Plaintext "IMPLIED"
+ , Whitespace
+ , Plaintext "WARRANTIES,"
+ , Whitespace
+ , Plaintext "INCLUDING,"
+ , Whitespace
+ , Plaintext "BUT"
+ , Whitespace
+ , Plaintext "NOT"
+ , Whitespace
+ , Plaintext "LIMITED"
+ , Whitespace
+ , Plaintext "TO,"
+ , Whitespace
+ , Plaintext "THE"
+ , Whitespace
+ , Plaintext "IMPLIED"
+ , Whitespace
+ , Plaintext "WARRANTIES"
+ , Whitespace
+ , Plaintext "OF"
+ , Whitespace
+ , Plaintext "MERCHANTABILITY"
+ , Whitespace
+ , Plaintext "AND"
+ , Whitespace
+ , Plaintext "FITNESS"
+ , Whitespace
+ , Plaintext "FOR"
+ , Whitespace
+ , Plaintext "A"
+ , Whitespace
+ , Plaintext "PARTICULAR"
+ , Whitespace
+ , Plaintext "PURPOSE"
+ , Whitespace
+ , Plaintext "ARE"
+ , Whitespace
+ , Plaintext "DISCLAIMED."
+ , Whitespace
+ , Plaintext "IN"
+ , Whitespace
+ , Plaintext "NO"
+ , Whitespace
+ , Plaintext "EVENT"
+ , Whitespace
+ , Plaintext "SHALL"
+ , Whitespace
+ , Plaintext "THE"
+ , Whitespace
+ , Plaintext "COPYRIGHT"
+ , Whitespace
+ , Plaintext "HOLDERS"
+ , Whitespace
+ , Plaintext "OR"
+ , Whitespace
+ , Plaintext "CONTRIBUTORS"
+ , Whitespace
+ , Plaintext "BE"
+ , Whitespace
+ , Plaintext "LIABLE"
+ , Whitespace
+ , Plaintext "FOR"
+ , Whitespace
+ , Plaintext "ANY"
+ , Whitespace
+ , Plaintext "DIRECT,"
+ , Whitespace
+ , Plaintext "INDIRECT,"
+ , Whitespace
+ , Plaintext "INCIDENTAL,"
+ , Whitespace
+ , Plaintext "SPECIAL,"
+ , Whitespace
+ , Plaintext "EXEMPLARY,"
+ , Whitespace
+ , Plaintext "OR"
+ , Whitespace
+ , Plaintext "CONSEQUENTIAL"
+ , Whitespace
+ , Plaintext "DAMAGES"
+ , Whitespace
+ , Plaintext "(INCLUDING,"
+ , Whitespace
+ , Plaintext "BUT"
+ , Whitespace
+ , Plaintext "NOT"
+ , Whitespace
+ , Plaintext "LIMITED"
+ , Whitespace
+ , Plaintext "TO,"
+ , Whitespace
+ , Plaintext "PROCUREMENT"
+ , Whitespace
+ , Plaintext "OF"
+ , Whitespace
+ , Plaintext "SUBSTITUTE"
+ , Whitespace
+ , Plaintext "GOODS"
+ , Whitespace
+ , Plaintext "OR"
+ , Whitespace
+ , Plaintext "SERVICES;"
+ , Whitespace
+ , Plaintext "LOSS"
+ , Whitespace
+ , Plaintext "OF"
+ , Whitespace
+ , Plaintext "USE,"
+ , Whitespace
+ , Plaintext "DATA,"
+ , Whitespace
+ , Plaintext "OR"
+ , Whitespace
+ , Plaintext "PROFITS;"
+ , Whitespace
+ , Plaintext "OR"
+ , Whitespace
+ , Plaintext "BUSINESS"
+ , Whitespace
+ , Plaintext "INTERRUPTION)"
+ , Whitespace
+ , Plaintext "HOWEVER"
+ , Whitespace
+ , Plaintext "CAUSED"
+ , Whitespace
+ , Plaintext "AND"
+ , Whitespace
+ , Plaintext "ON"
+ , Whitespace
+ , Plaintext "ANY"
+ , Whitespace
+ , Plaintext "THEORY"
+ , Whitespace
+ , Plaintext "OF"
+ , Whitespace
+ , Plaintext "LIABILITY,"
+ , Whitespace
+ , Plaintext "WHETHER"
+ , Whitespace
+ , Plaintext "IN"
+ , Whitespace
+ , Plaintext "CONTRACT,"
+ , Whitespace
+ , Plaintext "STRICT"
+ , Whitespace
+ , Plaintext "LIABILITY,"
+ , Whitespace
+ , Plaintext "OR"
+ , Whitespace
+ , Plaintext "TORT"
+ , Whitespace
+ , Plaintext "(INCLUDING"
+ , Whitespace
+ , Plaintext "NEGLIGENCE"
+ , Whitespace
+ , Plaintext "OR"
+ , Whitespace
+ , Plaintext "OTHERWISE)"
+ , Whitespace
+ , Plaintext "ARISING"
+ , Whitespace
+ , Plaintext "IN"
+ , Whitespace
+ , Plaintext "ANY"
+ , Whitespace
+ , Plaintext "WAY"
+ , Whitespace
+ , Plaintext "OUT"
+ , Whitespace
+ , Plaintext "OF"
+ , Whitespace
+ , Plaintext "THE"
+ , Whitespace
+ , Plaintext "USE"
+ , Whitespace
+ , Plaintext "OF"
+ , Whitespace
+ , Plaintext "THIS"
+ , Whitespace
+ , Plaintext "SOFTWARE,"
+ , Whitespace
+ , Plaintext "EVEN"
+ , Whitespace
+ , Plaintext "IF"
+ , Whitespace
+ , Plaintext "ADVISED"
+ , Whitespace
+ , Plaintext "OF"
+ , Whitespace
+ , Plaintext "THE"
+ , Whitespace
+ , Plaintext "POSSIBILITY"
+ , Whitespace
+ , Plaintext "OF"
+ , Whitespace
+ , Plaintext "SUCH"
+ , Whitespace
+ , Plaintext "DAMAGE."
+ ]
+ , 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"
+ , SubheadingAnnotation "1.2a (16 May 2016)"
+ , List
+ [ ListItem
+ [ Plaintext "Add"
+ , Whitespace
+ , Plaintext "optional"
+ , Whitespace
+ , Plaintext "support"
+ , Whitespace
+ , Plaintext "for"
+ , Whitespace
+ , Plaintext "running"
+ , Whitespace
+ , Plaintext "searches"
+ , Whitespace
+ , Plaintext "asynchronously"
+ , Whitespace
+ , Plaintext "using"
+ , Whitespace
+ , Plaintext "Vim's"
+ , Whitespace
+ , Link "+job"
+ , Whitespace
+ , Plaintext "feature"
+ , Whitespace
+ , Plaintext "(enabled"
+ , Whitespace
+ , Plaintext "by"
+ , Whitespace
+ , Plaintext "default"
+ , Whitespace
+ , Plaintext "in"
+ , Whitespace
+ , Plaintext "sufficiently"
+ , Whitespace
+ , Plaintext "recent"
+ , Whitespace
+ , Plaintext "versions"
+ , Whitespace
+ , Plaintext "of"
+ , Whitespace
+ , Plaintext "Vim);"
+ , Whitespace
+ , Plaintext "see"
+ , Whitespace
+ , Link "g:FerretJob"
+ , Plaintext ","
+ , Whitespace
+ , Link ":FerretCancelAsync"
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Link ":FerretPullAsync"
+ , Plaintext "."
+ ]
+ ]
+ , SubheadingAnnotation "1.1.1 (7 March 2016)"
+ , List
+ [ ListItem
+ [ Plaintext "Fix"
+ , Whitespace
+ , Plaintext "another"
+ , Whitespace
+ , Plaintext "edge"
+ , Whitespace
+ , Plaintext "case"
+ , Whitespace
+ , Plaintext "when"
+ , Whitespace
+ , Plaintext "searching"
+ , Whitespace
+ , Plaintext "for"
+ , Whitespace
+ , Plaintext "patterns"
+ , Whitespace
+ , Plaintext "containing"
+ , Whitespace
+ , Plaintext "\"#\","
+ , Whitespace
+ , Plaintext "only"
+ , Whitespace
+ , Plaintext "manifesting"
+ , Whitespace
+ , Plaintext "under"
+ , Whitespace
+ , Plaintext "dispatch.vim."
+ ]
+ ]
+ , SubheadingAnnotation "1.1 (7 March 2016)"
+ , List
+ [ ListItem
+ [ Plaintext "Fix"
+ , Whitespace
+ , Plaintext "edge"
+ , Whitespace
+ , Plaintext "case"
+ , Whitespace
+ , Plaintext "when"
+ , Whitespace
+ , Plaintext "searching"
+ , Whitespace
+ , Plaintext "for"
+ , Whitespace
+ , Plaintext "strings"
+ , Whitespace
+ , Plaintext "of"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "form"
+ , Whitespace
+ , Plaintext "\"<foo>\"."
+ ]
+ , ListItem
+ [ Plaintext "Fix"
+ , Whitespace
+ , Plaintext "edge"
+ , Whitespace
+ , Plaintext "case"
+ , Whitespace
+ , Plaintext "when"
+ , Whitespace
+ , Plaintext "searching"
+ , Whitespace
+ , Plaintext "for"
+ , Whitespace
+ , Plaintext "patterns"
+ , Whitespace
+ , Plaintext "containing"
+ , Whitespace
+ , Plaintext "\"#\""
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Plaintext "\"%\"."
+ ]
+ , ListItem
+ [ Plaintext "Provide"
+ , Whitespace
+ , Plaintext "completion"
+ , Whitespace
+ , Plaintext "for"
+ , Whitespace
+ , Code "ag"
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Code "ack"
+ , Whitespace
+ , Plaintext "options"
+ , Whitespace
+ , Plaintext "when"
+ , Whitespace
+ , Plaintext "using"
+ , Whitespace
+ , Link ":Ack"
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Link ":Lack"
+ , Plaintext "."
+ ]
+ , ListItem
+ [ Plaintext "Fix"
+ , Whitespace
+ , Plaintext "display"
+ , Whitespace
+ , Plaintext "of"
+ , Whitespace
+ , Plaintext "error"
+ , Whitespace
+ , Plaintext "messages"
+ , Whitespace
+ , Plaintext "under"
+ , Whitespace
+ , Plaintext "dispatch.vim."
+ ]
+ ]
+ , SubheadingAnnotation "1.0 (28 December 2015)"
+ , 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)."
+ ]
+ , ListItem
+ [ Plaintext "Add"
+ , Whitespace
+ , Link "g:FerretQFHandler"
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Link "g:FerretLLHandler"
+ , Whitespace
+ , Plaintext "options"
+ , Whitespace
+ , Plaintext "(patch"
+ , Whitespace
+ , Plaintext "from"
+ , Whitespace
+ , Plaintext "Daniel"
+ , Whitespace
+ , Plaintext "Silva)."
+ ]
+ , ListItem
+ [ Plaintext "Make"
+ , Whitespace
+ , Link "<Plug>"
+ , Whitespace
+ , Plaintext "mappings"
+ , Whitespace
+ , Plaintext "accessible"
+ , Whitespace
+ , Plaintext "even"
+ , Whitespace
+ , Link "g:FerretMap"
+ , Whitespace
+ , Plaintext "is"
+ , Whitespace
+ , Plaintext "set"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "0."
+ ]
+ , ListItem
+ [ Plaintext "Fix"
+ , Whitespace
+ , Plaintext "failure"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "report"
+ , Whitespace
+ , Plaintext "filename"
+ , Whitespace
+ , Plaintext "when"
+ , Whitespace
+ , Plaintext "using"
+ , Whitespace
+ , Code "ack"
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Plaintext "explicitly"
+ , Whitespace
+ , Plaintext "scoping"
+ , Whitespace
+ , Plaintext "search"
+ , Whitespace
+ , Plaintext "to"
+ , Whitespace
+ , Plaintext "a"
+ , Whitespace
+ , Plaintext "single"
+ , Whitespace
+ , Plaintext "file"
+ , Whitespace
+ , Plaintext "(patch"
+ , Whitespace
+ , Plaintext "from"
+ , Whitespace
+ , Plaintext "Daniel"
+ , Whitespace
+ , Plaintext "Silva)."
+ ]
+ , ListItem
+ [ Plaintext "When"
+ , Whitespace
+ , Plaintext "using"
+ , Whitespace
+ , Code "ag"
+ , Plaintext ","
+ , Whitespace
+ , Plaintext "report"
+ , Whitespace
+ , Plaintext "multiple"
+ , Whitespace
+ , Plaintext "matches"
+ , Whitespace
+ , Plaintext "per"
+ , Whitespace
+ , Plaintext "line"
+ , Whitespace
+ , Plaintext "instead"
+ , Whitespace
+ , Plaintext "of"
+ , Whitespace
+ , Plaintext "just"
+ , Whitespace
+ , Plaintext "the"
+ , Whitespace
+ , Plaintext "first"
+ , Whitespace
+ , Plaintext "(patch"
+ , Whitespace
+ , Plaintext "from"
+ , Whitespace
+ , Plaintext "Daniel"
+ , Whitespace
+ , Plaintext "Silva)."
+ ]
+ , ListItem
+ [ Plaintext "Improve"
+ , Whitespace
+ , Plaintext "content"
+ , Whitespace
+ , Plaintext "and"
+ , Whitespace
+ , Plaintext "display"
+ , Whitespace
+ , Plaintext "of"
+ , Whitespace
+ , Plaintext "error"
+ , Whitespace
+ , Plaintext "messages."
+ ]
+ ]
+ , SubheadingAnnotation "0.3 (24 July 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."
+ ]
+ ]
+ , SubheadingAnnotation "0.2 (16 July 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)."
+ ]
+ ]
+ , SubheadingAnnotation "0.1 (8 July 2015)"
+ , List
+ [ ListItem
+ [ Plaintext "Initial"
+ , Whitespace
+ , Plaintext "release,"
+ , Whitespace
+ , Plaintext "extracted"
+ , Whitespace
+ , Plaintext "from"
+ , Whitespace
+ , Plaintext "my"
+ , Whitespace
+ , Plaintext "dotfiles"
+ , Whitespace
+ , Plaintext "(https://github.com/wincent/wincent)."
+ ]
+ ]
+ ]
--- /dev/null
+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" }
+ ]
+ ]
+ ]