plugin/unobtrusive_fold.vim
214888c9
 ""
 " @section About
 " - Version: 1.0.0
 " - Author:  Robert Cranston
 " - License: ISC
 " - URL:     https://git.rcrnstn.net/rcrnstn/vim-unobtrusive-fold
 " @order intro config commands functions example about
 
 ""
 " @section Introduction, intro
 " unobtrusive-fold provides commands that define folds from text that blends in
 " with the rest of the content, such as comments or markup headings.
 " Optionally, this can be combined with folds for indented paragraphs. Folds
 " are automatically ended when the indentation drops below that of the line
 " where the fold was introduced. It also provides 'foldtext' function and a
 " command for debugging 'foldexpr's.
 
 ""
 " @section Example
 " Example |vimrc|:
 " >
 "   set commentstring=
 "   set shiftwidth=2
 "   set textwidth=79
 "   set fillchars+=fold:─
 "   set foldtext=unobtrusive_fold#text()
 "
 "   syntax enable
 "   filetype plugin indent on
 "
 "   autocmd FileType *        UnobtrusiveFoldComment
 "   autocmd FileType markdown UnobtrusiveFoldChar #
 
 "" Guard
 if exists('g:loaded_unobtrusive_fold') || &compatible
   finish
 endif
 let g:loaded_unobtrusive_fold = 1
 
 "" Commands
 
 "" :UnobtrusiveFoldComment
 
 ""
 " Sets the current window's 'foldmethod', 'foldexpr', and plugin-internal
 " variables based on the current buffer's 'commentstring'. Does nothing when it
 " is empty. Give ! to enable indented paragraph folding.
 "
 " Defines folds with a fold level equal to the number of times the last
 " character (ignoring whitespace) of the first part of 'commentstring' is
 " repeated (not including the first occurrence) at the start of line. For
 " example, if 'commentstring' is `/* %s */`, `/**` starts a level 1 fold,
 " `/***` starts a level 2 fold, etc.
 command -bar -bang -nargs=0 UnobtrusiveFoldComment
 \ call unobtrusive_fold#comment(<q-bang>)
 
 "" :UnobtrusiveFoldChar
 
 ""
 " Sets the current window's 'foldmethod', 'foldexpr' and plugin-internal
 " variables based on {char}. Lines in syntax groups whose names contain
 " "Comment", "Code", or "Snippet" are ignored. Give ! to enable indented
 " paragraph folding.
 "
 " Defines folds with a fold level equal to the number of times {char} is
 " repeated at the start of line (including the first occurrence) at the start
 " of line. For example, if {char} is `#`, `#` starts a level 1 fold, `##`
 " starts a level 2 fold, etc.
 command -bar -bang -nargs=1 UnobtrusiveFoldChar
 \ call unobtrusive_fold#char(<q-bang>, <f-args>)
 
 "" :UnobtrusiveFoldDebug
 
 ""
 " Inserts the return value of 'foldexpr' and the effective |foldlevel()| into
 " the leftmost columns of the current buffer.
 command -bar -nargs=0 UnobtrusiveFoldDebug
 \ call unobtrusive_fold#debug()