Skip to main content
2 of 3
added 650 characters in body

Markdown folding in vim 8.2

I'm using vim 8.2 on Win 10. I want to enable markdown folding with the built-in markdown.vim.

But it will not work. I have tried solutions from other questions (e.g., Enable Expr Folding in Markdown and How to fold markdown using the built-in markdown mode?), but to no avail.

My vimrc contains...

let g:markdown_folding = 1
let g:markdown_fenced_languages = ['vim', 'yaml', 'python', 'bash=sh', 'sql', 'git', 'make', 'html', 'css', 'javascript', 'js=javascript', 'json=javascript', 'xml']
syntax enable
set nocompatible

My file is detected as markdown, as shown here...

:filetype returns detection:ON plugin:ON indent:ON
:set ft returns markdown
:set foldmethod? returns manual

:scriptnames output includes...

27: C:\Program Files (x86)\Vim\vim82\ftplugin\markdown.vim
30: C:\Program Files (x86)\Vim\vim82\syntax\markdown.vim

I do not have a vimwiki plugin (one user reported getting rid of vimwiki plugin solved the issue)

Yet zc, zR, zM, and zo all result in E490: No fold found, no matter where I place the cursor (on the ##, on the heading name, or inside the text associated with that heading)

Hmmm...

I just found another question regarding this topic (No folding of markdown files) which contains what seems to be a solution, but which is a bit beyond my vim skill level. Does anyone recommend I try that solution? I'd rather not unless it truly is the only solution to my problem.

Further info per comments...

:version contains +folding
:verbose set foldmethod? returns foldmethod=manual

markdown.vim contains the following if-statement..

if has("folding") && exists("g:markdown_folding")
  setlocal foldexpr=MarkdownFold()
  setlocal foldmethod=expr
  setlocal foldtext=MarkdownFoldText()
  let b:undo_ftplugin .= " foldexpr< foldmethod< foldtext<"
endif

has("folding") is true
has("g:markdown_folding") is false

AHA!!!

.. and the reason markdown_folding was false? ...a typo in my gvimrc (!)

I fixed the typo and folding is operational!