Выражение Vim Fold не работает - PullRequest
0 голосов
/ 12 июня 2018

Я реализовал довольно простое выражение свертки для Markdown , но по какой-то причине оно не работает.Я вставил несколько echom сообщений в функцию FoldExpr, и я вижу их в сообщениях, и они верны.Так что, кажется, применяется, но нет складок.Помимо того, что я установил foldlevel на ноль, zM также не имеет никакого эффекта.

Кто-нибудь видит сбой?

ftplugin/markdown_fold.vim :

" Generate the folds text for the `foldtext` option.
" Simply use the first line (which should contain the header)
" and extend it by the number of lines in this section.
"
function! FoldText()
  let l:title = getline(v:foldstart)
  let l:line_count = (v:foldend - v:foldstart)
  let l:line_text = l:line_count > 1 ? 'lines' : 'line'
  let l:text = l:title . ' [' . l:line_count . ' ' . l:line_text . ']'
  return l:text
endfunction

" Return the fold level for the `foldexpr` option.
" Checks if the current line is a header.
" The level is equal to the number of hashes of the header.
" All lines which are not a header have the same level as their predecessor.
"
function! FoldExpr()
  let l:line = getline(v:lnum)
  let l:count = len(matchstr(l:line, '^#\+'))

  if l:count > 0
    return '>0'
  else
    return '='
  endif
endfunction


" Use custom fold expression and text.
setlocal foldmethod=expr
setlocal foldexpr=FoldExpr()
setlocal foldtext=FoldText()

" Fold everything per default.
setlocal foldlevel=0
setlocal foldminlines=0

1 Ответ

0 голосов
/ 24 октября 2018

Это >0 не имеет смысла.К сожалению, Вим принимает это без жалоб.Согласно :help fold-expr, значение сгиба 0 означает , линия не в сгибе .Чтобы начать фолд первого уровня, вместо этого верните >1.

...