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 "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//" ] , Paragraph [ Plaintext "Press" , Whitespace , Code "" , 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 "" , 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 s instead of default e:" , "nmap s (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 "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 "(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//" ] , 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 "." ] , 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(, , , )'" , 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 (Scalpel) :' . s:command . \"/\\\\v<=expand('')>//\"" , GenericStatement "execute 'vnoremap (ScalpelVisual) :' . s:command . \"/\\\\v<=scalpel#cword(GetCurpos())>//\"" , LetStatement { letLexpr = "s:map" , letValue = "get(g:, 'ScalpelMap', 1)" } , GenericStatement "if s:map" , GenericStatement "if !hasmapto('(Scalpel)') && maparg('e', 'n') ==# ''" , GenericStatement "nmap e (Scalpel)" , GenericStatement "endif" , GenericStatement "if !hasmapto('(ScalpelVisual)') && maparg('e', 'v') ==# ''" , GenericStatement "vmap e (ScalpelVisual)" , GenericStatement "endif" , GenericStatement "endif" , LetStatement { letLexpr = "&cpoptions " , letValue = "s:cpoptions" } , UnletStatement { unletBang = False , unletBody = "s:cpoptions" } ] ] ]