1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- " Vim filetype plugin file
- " Original Author: Maxim Kim <habamax@gmail.com>
- " Language: asciidoc
- " Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
- " Last Change: 2024 Jan 16
- if exists("b:did_ftplugin")
- finish
- endif
- let b:did_ftplugin = 1
- if exists('b:undo_ftplugin')
- let b:undo_ftplugin .= "|setl cms< com< fo< flp< inex< efm< cfu< fde< fdm<"
- else
- let b:undo_ftplugin = "setl cms< com< fo< flp< inex< efm< cfu< fde< fdm<"
- endif
- " gf to open include::file.ext[] and link:file.ext[] files
- setlocal includeexpr=substitute(v:fname,'\\(link:\\\|include::\\)\\(.\\{-}\\)\\[.*','\\2','g')
- setlocal comments=
- setlocal commentstring=//\ %s
- setlocal formatoptions+=cqn
- setlocal formatlistpat=^\\s*[\\[({]\\?\\([0-9]\\+
- setlocal formatlistpat+=\\\|[a-zA-Z]\\)[\\]:.)}]\\s\\+
- setlocal formatlistpat+=\\\|^\\s*-\\s\\+
- setlocal formatlistpat+=\\\|^\\s*[*]\\+\\s\\+
- setlocal formatlistpat+=\\\|^\\s*[.]\\+\\s\\+
- function AsciidocFold()
- let line = getline(v:lnum)
- if (v:lnum == 1) && (line =~ '^----*$')
- return ">1"
- endif
- let nested = get(g:, "asciidoc_foldnested", 1)
- " Regular headers
- let depth = match(line, '\(^=\+\)\@<=\( .*$\)\@=')
- " Do not fold nested regular headers
- if depth > 1 && !nested
- let depth = 1
- endif
- if depth > 0
- " fold all sections under title
- if depth > 1 && !get(g:, "asciidoc_fold_under_title", 1)
- let depth -= 1
- endif
- " check syntax, it should be asciidocTitle or asciidocH
- let syncode = synstack(v:lnum, 1)
- if len(syncode) > 0 && synIDattr(syncode[0], 'name') =~ 'asciidoc\%(H[1-6]\)\|Title'
- return ">" . depth
- endif
- endif
- return "="
- endfunction
- if has("folding") && get(g:, 'asciidoc_folding', 0)
- setlocal foldexpr=AsciidocFold()
- setlocal foldmethod=expr
- let b:undo_ftplugin .= "|setl foldexpr< foldmethod< foldtext<"
- endif
|