1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
" 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
|