Project [ DocBlock [ PluginAnnotation "Pinnacle" "Highlight group manipulation for Vim" , TOC [ "Intro" , "Installation" , "Website" , "License" , "Development" , "Authors" , "History" ] ] , HeadingAnnotation "Intro" , Paragraph [ Plaintext "Pinnacle" , Whitespace , Plaintext "provides" , Whitespace , Plaintext "functions" , Whitespace , Plaintext "for" , Whitespace , Plaintext "manipulating" , Whitespace , Link ":highlight" , Whitespace , Plaintext "groups." ] , HeadingAnnotation "Installation" , Paragraph [ Plaintext "To" , Whitespace , Plaintext "install" , Whitespace , Plaintext "Pinnacle," , Whitespace , Plaintext "use" , Whitespace , Plaintext "your" , Whitespace , Plaintext "plug-in" , Whitespace , Plaintext "management" , Whitespace , Plaintext "system" , Whitespace , Plaintext "of" , Whitespace , Plaintext "choice." ] , Paragraph [ Plaintext "If" , Whitespace , Plaintext "you" , Whitespace , Plaintext "don't" , Whitespace , Plaintext "have" , Whitespace , Plaintext "a" , Whitespace , Plaintext "\"plug-in" , Whitespace , Plaintext "management" , Whitespace , Plaintext "system" , Whitespace , Plaintext "of" , Whitespace , Plaintext "choice\"," , Whitespace , Plaintext "I" , Whitespace , Plaintext "recommend" , Whitespace , Plaintext "Pathogen" , Whitespace , Plaintext "(https://github.com/tpope/vim-pathogen)" , Whitespace , Plaintext "due" , Whitespace , Plaintext "to" , Whitespace , Plaintext "its" , Whitespace , Plaintext "simplicity" , Whitespace , Plaintext "and" , Whitespace , Plaintext "robustness." , Whitespace , Plaintext "Assuming" , Whitespace , Plaintext "that" , Whitespace , Plaintext "you" , Whitespace , Plaintext "have" , Whitespace , Plaintext "Pathogen" , Whitespace , Plaintext "installed" , Whitespace , Plaintext "and" , Whitespace , Plaintext "configured," , Whitespace , Plaintext "and" , Whitespace , Plaintext "that" , Whitespace , Plaintext "you" , Whitespace , Plaintext "want" , Whitespace , Plaintext "to" , Whitespace , Plaintext "install" , Whitespace , Plaintext "vim-docvim" , Whitespace , Plaintext "into" , Whitespace , Code "~/.vim/bundle" , Plaintext "," , Whitespace , Plaintext "you" , Whitespace , Plaintext "can" , Whitespace , Plaintext "do" , Whitespace , Plaintext "so" , Whitespace , Plaintext "with:" ] , Fenced [ "git clone https://github.com/wincent/pinnacle.git ~/.vim/bundle/pinnacle" ] , 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/pinnacle.git ~/vim/bundle/pinnacle" , "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 "Pinnacle" , Whitespace , Plaintext "source" , Whitespace , Plaintext "code" , Whitespace , Plaintext "repo" , Whitespace , Plaintext "is" , Whitespace , Plaintext "at:" ] , Paragraph [ Plaintext "http://git.wincent.com/pinnacle.git" ] , Paragraph [ Plaintext "Mirrors" , Whitespace , Plaintext "exist" , Whitespace , Plaintext "at:" ] , List [ ListItem [ Plaintext "https://github.com/wincent/pinnacle" ] , ListItem [ Plaintext "https://gitlab.com/wincent/pinnacle" ] , ListItem [ Plaintext "https://bitbucket.org/ghurrell/pinnacle" ] ] , 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=5360" ] , 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/pinnacle/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 "pinnacle-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 vim-docvim-$VERSION.zip HEAD -- ." ] , List [ ListItem [ Plaintext "Upload" , Whitespace , Plaintext "to" , Whitespace , Plaintext "http://www.vim.org/scripts/script.php?script_id=5360" ] ] , HeadingAnnotation "Authors" , Paragraph [ Plaintext "Pinnacle" , 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.1 (30 March 2016)" , List [ ListItem [ Plaintext "Initial" , Whitespace , Plaintext "release." ] ] , Project [ Unit [ FunctionDeclaration { functionBang = True , functionName = "pinnacle#sub_newlines" , functionArguments = ArgumentList [ Argument "string" ] , functionAttributes = [ "abort" ] , functionBody = [ GenericStatement "return tr(a:string, \"\\r\\n\", ' ')" ] } , FunctionDeclaration { functionBang = True , functionName = "pinnacle#capture_line" , functionArguments = ArgumentList [ Argument "command" ] , functionAttributes = [ "abort" ] , functionBody = [ GenericStatement "redir => l:capture" , GenericStatement "execute a:command" , GenericStatement "redir END" , GenericStatement "return pinnacle#sub_newlines(l:capture)" ] } , FunctionDeclaration { functionBang = True , functionName = "pinnacle#capture_highlight" , functionArguments = ArgumentList [ Argument "group" ] , functionAttributes = [ "abort" ] , functionBody = [ GenericStatement "return pinnacle#capture_line('0verbose silent highlight ' . a:group)" ] } , FunctionDeclaration { functionBang = True , functionName = "pinnacle#extract_highlight" , functionArguments = ArgumentList [ Argument "group" ] , functionAttributes = [ "abort" ] , functionBody = [ LetStatement { letLexpr = "l:group " , letValue = "pinnacle#capture_highlight(a:group)" } , GenericStatement "while l:group =~# 'links to'" , LetStatement { letLexpr = "l:index " , letValue = "stridx(l:group, 'links to') + len('links to')" } , LetStatement { letLexpr = "l:linked " , letValue = "strpart(l:group, l:index + 1)" } , LetStatement { letLexpr = "l:group " , letValue = "pinnacle#capture_highlight(l:linked)" } , GenericStatement "endwhile" , LetStatement { letLexpr = "l:matches " , letValue = "matchlist(l:group, '\\\\s\\+\\(.*\\)')" } , LetStatement { letLexpr = "l:original " , letValue = "l:matches[1]" } , GenericStatement "return l:original" ] } , FunctionDeclaration { functionBang = True , functionName = "pinnacle#italicize" , functionArguments = ArgumentList [ Argument "group" ] , functionAttributes = [ "abort" ] , functionBody = [ GenericStatement "return pinnacle#decorate('italic', a:group)" ] } , FunctionDeclaration { functionBang = True , functionName = "pinnacle#embolden" , functionArguments = ArgumentList [ Argument "group" ] , functionAttributes = [ "abort" ] , functionBody = [ GenericStatement "return pinnacle#decorate('bold', a:group)" ] } , FunctionDeclaration { functionBang = True , functionName = "pinnacle#decorate" , functionArguments = ArgumentList [ Argument "style" , Argument "group" ] , functionAttributes = [ "abort" ] , functionBody = [ LetStatement { letLexpr = "l:original " , letValue = "pinnacle#extract_highlight(a:group)" } , GenericStatement "for l:lhs in ['gui', 'term', 'cterm']" , LetStatement { letLexpr = "l:matches " , letValue = "matchlist(" } , GenericStatement "\\ l:original, '^\\([^ ]\\+ \\)\\?' . '\\(' . l:lhs . '=[^ ]\\+\\)' . '\\( .\\+\\)\\?$' )" , GenericStatement "if l:matches == []" , LetStatement { letLexpr = "l:original ." , letValue = "' ' . l:lhs . '=' . a:style" } , GenericStatement "else" , LetStatement { letLexpr = "l:start " , letValue = "l:matches[1]" } , LetStatement { letLexpr = "l:value " , letValue = "l:matches[2]" } , LetStatement { letLexpr = "l:end " , letValue = "l:matches[3]" } , GenericStatement "if l:value =~# '.*' . a:style . '.*'" , GenericStatement "continue" , GenericStatement "else" , LetStatement { letLexpr = "l:original " , letValue = "l:start . l:value . ',' . a:style . l:end" } , GenericStatement "endif" , GenericStatement "endif" , GenericStatement "endfor" , GenericStatement "return pinnacle#sub_newlines(l:original)" ] } ] ] ]