spacevim/bundle/org-mode/autoload/org/fold.vim
JIe 2bb7059579
Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
init
2024-08-21 14:17:26 +08:00

120 lines
4.2 KiB
VimL

function! org#fold#level(line)
if g:org_folds == 0
return 0
endif
if exists('w:sparse_on')
\ && w:sparse_on
\ && (get(s:sparse_lines, a:line) == 1)
if index(b:v.sparse_list, a:line + 1) >= 0
return '<0'
endif
let sparse = index(b:v.sparse_list, a:line)
if sparse >= 0
return '>99'
endif
let sparse = index(b:v.fold_list, a:line)
if sparse >= 0
return '<0'
endif
endif
let [l:text, l:nexttext] = getline(a:line, a:line+1)
if l:text =~ '^\*\+\s'
let b:v.myAbsLevel = s:Ind(a:line)
elseif (b:v.lasttext_lev ># '') && (l:text !~ s:remstring) && (l:nexttext !~ '^\*\+\s') && (b:v.lastline == a:line - 1)
"elseif (b:v.lasttext_lev ># '') && (l:text !~ s:remstring) && (l:nexttext !~ '^\*\+\s\|^\s*:SYNOPSIS:') && (b:v.lastline == a:line - 1)
"if (b:v.lasttext_lev ># '') && (l:text !~ s:remstring) && (l:nexttext !~ '^\*\+\s') && (b:v.lastline == a:line - 1)
let b:v.lastline = a:line
return b:v.lasttext_lev
endif
let l:nextAbsLevel = s:Ind(a:line + 1)
if l:text =~ '^\*\+\s'
" we're on a heading line
let b:v.lasttext_lev = ''
"let b:v.myAbsLevel = s:Ind(a:line)
if l:nexttext =~ b:v.drawerMatch
let b:v.lev = '>' . string(b:v.myAbsLevel + 4)
elseif l:nexttext =~ s:remstring
let b:v.lev = '>' . string(b:v.myAbsLevel + 6)
elseif (l:nexttext !~ b:v.headMatch) && (a:line != line('$'))
let b:v.lev = '>' . string(b:v.myAbsLevel + 3)
elseif l:nextAbsLevel > b:v.myAbsLevel
let b:v.lev = '>' . string(b:v.myAbsLevel)
elseif l:nextAbsLevel < b:v.myAbsLevel
let b:v.lev = '<' . string(l:nextAbsLevel)
else
let b:v.lev = '<' . b:v.myAbsLevel
endif
let b:v.prevlev = b:v.myAbsLevel
else
"we have a text line
if b:v.lastline != a:line - 1 " backup to headline to get bearings
if l:text =~ b:v.drawerMatch
let b:v.prevlev = s:Ind(s:OrgPrevHead_l(a:line))
else
"don't just back up, recalc previous lines
" to set variables correctly
let prevhead = s:OrgPrevHead_l(a:line)
if prevhead == 0
" shortcircuit here, it's blank line prior to any head
return -1
endif
let b:v.prevlev = s:Ind(prevhead)
let i = prevhead
"for item in range(prevhead,a:line-1)
" call OrgFoldLevel(item)
"endfor
endif
"let b:v.prevlev = s:Ind(s:OrgPrevHead_l(a:line))
endif
if l:text =~ b:v.drawerMatch
let b:v.lev = '>' . string(b:v.prevlev + 4)
elseif (l:text =~ s:remstring)
if (getline(a:line - 1) =~ b:v.headMatch) && (l:nexttext =~ s:remstring)
let b:v.lev = string(b:v.prevlev + 5)
elseif (l:nexttext !~ s:remstring) ||
\ (l:nexttext =~ b:v.drawerMatch)
let b:v.lev = '<' . string(b:v.prevlev + 4)
else
let b:v.lev = b:v.prevlev + 4
endif
elseif l:text[0] != '#'
let b:v.lev = (b:v.prevlev + 2)
let b:v.lasttext_lev = b:v.lev
elseif b:v.src_fold
if l:text =~ '^#+begin_src'
let b:v.lev = '>' . (b:v.prevlev + 2)
elseif l:text =~ '^#+end_src'
let b:v.lev = '<' . (b:v.prevlev + 2)
endif
else
let b:v.lev = (b:v.prevlev + 2)
endif
if l:nexttext =~ '^\* '
" this is for perf reasons, closing fold
" back to zero avoids foldlevel calls sometimes
let b:v.lev = '<0'
elseif l:nexttext =~ '^\*\+\s'
let b:v.lev = '<' . string(l:nextAbsLevel)
endif
endif
let b:v.lastline = a:line
return b:v.lev
endfunction
function! s:Ind(line)
" used to get level of a heading (todo : rename this function)
return 2 + (len(matchstr(getline(a:line), '^\**\s')) - 2) / b:v.levelstars
endfunction