vim-markdown icon indicating copy to clipboard operation
vim-markdown copied to clipboard

Small `g:markdown_minlines` truncates set of `<backtick>`s (such as `<backtick> class s{~s();} <backtick> text <backtick> class x{~x();} <backtick>` to `class s{~s();} <backtick> text <backtick> class x{~x();}`, which has _strikethrough_ of `s();} <backtick> text <backtick> class x{`)

Open SwuduSusuwu opened this issue 1 year ago • 2 comments

Was told that this ( https://github.com/vim/vim/issues/15406 ) is not an explicit problem with Vim's core, but with Vim's Markdown module.

The problem with sin sync fromstart or g:markdown_minlines 6666 (other than performance) is that this is just a local fix (does not suit open source projects which you contribute to).

SwuduSusuwu avatar Jul 31 '24 18:07 SwuduSusuwu

The problem is that the minlines window is small (which clips off the top of the block) to process the scripts fast, but Markdown must use the context of <backticks> which exists past this window. Proposed fix: do not process Markdown across <backtick>s; <backtick> (which begins or closes a code block) should have Markdown stop; Thus <backtick> class s{~s();} <backtick> text <backtick> class x{~x();} <backtick> / class s{~s();} <backtick> text <backtick> class x{~x();} must both have the ~ ignored (as the ~ crosses <backtick>s). If you do this, all sizes of minlines can process truth.

SwuduSusuwu avatar Jul 31 '24 20:07 SwuduSusuwu

Proposed fix 2: post-/: if(1 & context_symbols['<backtick>'].size()) { execute("sin sync fromstart" /* or "let g:markdown_minlines 6666" */); }

The rest of vim's languages/syntaxes should have such fixes; Proposed fix 2 is generalizable to: for(auto symbol : context_symbols) {if(1 & symbol.size()) { execute("sin sync fromstart" /* or "let g:markdown_minlines 6666" */); return; }}

SwuduSusuwu avatar Jul 31 '24 21:07 SwuduSusuwu