Given markdown; # a Execute (Toc does not set nomodifiable on other files): " Sanity check. Assert &modifiable :Toc :lclose :edit a Assert &modifiable Given markdown; header 1 ======== test header 2 -------- test ### header 3 test Execute (Toc setex headers): :Toc Expect (setex headers): header 1 header 2 header 3 Given markdown; # header 1 test ## header 2 test ### header 3 test Execute (Toc atx headers): :Toc Expect (atx headers): header 1 header 2 header 3 Given markdown; ATX tests. # h1 space #h1 nospace # h1 2 spaces # h1 trailing hash # ## h2 space ##h2 nospace ## h2 trailing hash ## ### h3 space ###h3 nospace ### h3 trailing hash ### #### h4 ##### h5 ###### h6 --- Relative positions. # h1 before h2 ## h2 between h1s # h1 after h2 --- Setex tests. setex h1 ======== setex h2 -------- setex h1 single punctuation = setex h1 punctuation longer than header ================================ Prevent list vs Setex confusion: - not Setex - because list --- Mixed tests. setex h1 before atx =================== ## atx h2 ### atx h3 # atx h1 setex h2 ------------------ ### atx h3 2 Execute (Toc multiple headers): :Toc Expect (multiple headers): h1 space h1 nospace h1 2 spaces h1 trailing hash h2 space h2 nospace h2 trailing hash h3 space h3 nospace h3 trailing hash h4 h5 h6 h1 before h2 h2 between h1s h1 after h2 setex h1 setex h2 setex h1 single punctuation setex h1 punctuation longer than header setex h1 before atx atx h2 atx h3 atx h1 setex h2 atx h3 2 Execute: :lclose Given markdown; # header 1 ## header 2 ### header 3 Execute (Toc cursor on the current header): normal! 4G :Toc AssertEqual line('.'), 2 :lclose normal! G :Toc AssertEqual line('.'), 3 :lclose