aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorreptee <[email protected]>2025-09-15 12:45:28 +0200
committerGitHub <[email protected]>2025-09-15 12:45:28 +0200
commita0cfb3fd31bc3729266cc3a7aaac1416df183445 (patch)
tree188945541576851557ac34e3b19c01cd45bd0197 /test
parent0ce85b0cfa8e5d3155dddc77b1408b4d7d7890fa (diff)
Vimdoc writer (#11132)
Support for vimdoc, documentation format used by vim in its help pages. Relies heavily on definition lists and precise text alignment to generate tags.
Diffstat (limited to 'test')
-rw-r--r--test/Tests/Old.hs18
-rw-r--r--test/tables.vimdoc65
-rw-r--r--test/vimdoc/definition-lists.markdown70
-rw-r--r--test/vimdoc/definition-lists.vimdoc71
-rw-r--r--test/vimdoc/headers-numbered.vimdoc108
-rw-r--r--test/vimdoc/headers.markdown45
-rw-r--r--test/vimdoc/headers.vimdoc94
-rw-r--r--test/vimdoc/vim-online-doc.markdown42
-rw-r--r--test/vimdoc/vim-online-doc.vimdoc53
-rw-r--r--test/writer.vimdoc669
10 files changed, 1235 insertions, 0 deletions
diff --git a/test/Tests/Old.hs b/test/Tests/Old.hs
index d74fa3d36..2dcccf013 100644
--- a/test/Tests/Old.hs
+++ b/test/Tests/Old.hs
@@ -257,6 +257,24 @@ tests pandocPath =
[ test' "pod" ["-f", "pod", "-t", "native"]
"pod-reader.pod" "pod-reader.native"
]
+ , testGroup "vimdoc" [ testGroup "writer" $
+ writerTests' "vimdoc" ++
+ [ test' "vimdoc-specific definition lists"
+ ["-s", "-r", "markdown", "-w", "vimdoc", "--toc", "--columns=78"]
+ "vimdoc/definition-lists.markdown" "vimdoc/definition-lists.vimdoc"
+ , test' "linking to docs"
+ ["-s", "-r", "markdown", "-w", "vimdoc", "--toc", "--columns=78"]
+ "vimdoc/vim-online-doc.markdown" "vimdoc/vim-online-doc.vimdoc"
+ , test' "unnumbered TOC up to level 2 headers"
+ ["-s", "-r", "markdown", "-w", "vimdoc", "--toc", "--columns=78",
+ "--toc-depth=2"]
+ "vimdoc/headers.markdown" "vimdoc/headers.vimdoc"
+ , test' "numbered TOC"
+ ["-s", "-r", "markdown", "-w", "vimdoc", "--toc", "--columns=78",
+ "-N"]
+ "vimdoc/headers.markdown" "vimdoc/headers-numbered.vimdoc"
+ ]
+ ]
]
where
test' = test pandocPath
diff --git a/test/tables.vimdoc b/test/tables.vimdoc
new file mode 100644
index 000000000..0f0492095
--- /dev/null
+++ b/test/tables.vimdoc
@@ -0,0 +1,65 @@
+Simple table with caption:
+
+ Right Left Center Default ~
+ 12 12 12 12
+ 123 123 123 123
+ 1 1 1 1
+
+ Demonstration of simple table syntax.
+
+Simple table without caption:
+
+ Right Left Center Default ~
+ 12 12 12 12
+ 123 123 123 123
+ 1 1 1 1
+
+Simple table indented two spaces:
+
+ Right Left Center Default ~
+ 12 12 12 12
+ 123 123 123 123
+ 1 1 1 1
+
+ Demonstration of simple table syntax.
+
+Multiline table with caption:
+
+ Centered Left Right Default aligned
+ Header Aligned Aligned ~
+
+ First row 12.0 Example of a row that
+ spans multiple lines.
+
+ Second row 5.0 Here's another one.
+ Note the blank line
+ between rows.
+
+ Here's the caption. It may span multiple lines.
+
+Multiline table without caption:
+
+ Centered Left Right Default aligned
+ Header Aligned Aligned ~
+
+ First row 12.0 Example of a row that
+ spans multiple lines.
+
+ Second row 5.0 Here's another one.
+ Note the blank line
+ between rows.
+
+Table without column headers:
+
+ 12 12 12 12
+ 123 123 123 123
+ 1 1 1 1
+
+Multiline table without column headers:
+
+ First row 12.0 Example of a row that
+ spans multiple lines.
+
+ Second row 5.0 Here's another one.
+ Note the blank line
+ between rows.
diff --git a/test/vimdoc/definition-lists.markdown b/test/vimdoc/definition-lists.markdown
new file mode 100644
index 000000000..a075d5125
--- /dev/null
+++ b/test/vimdoc/definition-lists.markdown
@@ -0,0 +1,70 @@
+---
+vimdoc-prefix: pandoc
+abstract: "A short description"
+filename: "definition-lists.txt"
+author: Author
+title: Title
+---
+
+## Basic
+
+Term 1
+: Definition I
+
+Term 2
+: Definition II
+
+Term 3
+: Definition III
+
+## Code
+
+<!-- Source: <https://github.com/ggandor/leap.nvim/blob/c4a215acef90749851d85ddba08bc282867b50eb/doc/leap.txt#L283-L294> -->
+
+`leap.opts.keys.next_target`
+: Jump to the next available target (use the previous search pattern if no input
+ has been given). `:h leap-repeat`
+
+`leap.opts.keys.prev_target`
+: Jump to the previous target (revert `next_target`).
+
+`leap.opts.keys.next_group`
+: Shift to the next group of labeled targets.
+
+`leap.opts.keys.prev_group`
+: Shift to the previous group of labeled targets (revert `next_group`).
+
+## Span
+
+[Important concept]{#important-concept}
+: Definition
+
+[I am too long to fit on the same line as a reference, so reference is put above me!]{#i-am-too-long}
+: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua.
+
+## Commands
+
+In markdown vim commands are represented as inline code starting with colon (ie.
+`:MyCommand`), but writer strips the backticks
+
+`:FnlCompileBuffer`{#:FnlCompileBuffer}
+
+: Compiles current active fennel buffer
+
+`:FnlCompile[!]`{#:FnlCompile}
+
+: Diff compiles all indexed fennel files
+ If bang! is present then forcefully compiles all `source` files
+
+`:[range]Fnl {expr}`{#:Fnl}
+
+: Evaluates {expr} or range
+
+ ```
+ :'<,'>Fnl
+
+ :Fnl (print "Hello World")
+
+ :Fnl (values some_var)
+ ```
diff --git a/test/vimdoc/definition-lists.vimdoc b/test/vimdoc/definition-lists.vimdoc
new file mode 100644
index 000000000..3061de6be
--- /dev/null
+++ b/test/vimdoc/definition-lists.vimdoc
@@ -0,0 +1,71 @@
+*definition-lists.txt* A short description
+
+ Title by Author
+
+
+ Type |gO| to see the table of contents.
+
+Basic ........................................................... |pandoc-basic|
+Code ............................................................. |pandoc-code|
+Span ............................................................. |pandoc-span|
+Commands ..................................................... |pandoc-commands|
+
+------------------------------------------------------------------------------
+Basic *pandoc-basic*
+
+Term 1
+ Definition I
+Term 2
+ Definition II
+Term 3
+ Definition III
+
+------------------------------------------------------------------------------
+Code *pandoc-code*
+
+`leap.opts.keys.next_target`
+ Jump to the next available target (use the previous search pattern if no
+ input has been given). |leap-repeat|
+`leap.opts.keys.prev_target`
+ Jump to the previous target (revert `next_target`).
+`leap.opts.keys.next_group`
+ Shift to the next group of labeled targets.
+`leap.opts.keys.prev_group`
+ Shift to the previous group of labeled targets (revert `next_group`).
+
+------------------------------------------------------------------------------
+Span *pandoc-span*
+
+Important concept *pandoc-important-concept*
+ Definition
+ *pandoc-i-am-too-long*
+I am too long to fit on the same line as a reference, so reference is put
+above me!
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua.
+
+------------------------------------------------------------------------------
+Commands *pandoc-commands*
+
+In markdown vim commands are represented as inline code starting with colon
+(ie. `:MyCommand`), but writer strips the backticks
+
+:FnlCompileBuffer *:FnlCompileBuffer*
+ Compiles current active fennel buffer
+
+:FnlCompile[!] *:FnlCompile*
+ Diff compiles all indexed fennel files If bang! is present then forcefully
+ compiles all `source` files
+
+:[range]Fnl {expr} *:Fnl*
+ Evaluates {expr} or range
+
+ >
+ :'<,'>Fnl
+
+ :Fnl (print "Hello World")
+
+ :Fnl (values some_var)
+<
+
+ vim:tw=78:sw=4:ts=4:ft=help:norl:et:
diff --git a/test/vimdoc/headers-numbered.vimdoc b/test/vimdoc/headers-numbered.vimdoc
new file mode 100644
index 000000000..4bbb48107
--- /dev/null
+++ b/test/vimdoc/headers-numbered.vimdoc
@@ -0,0 +1,108 @@
+ Type |gO| to see the table of contents.
+
+1. unremarkable header 1 ............................... |unremarkable-header-1|
+ 1.1 unremarkable header 2 ............................ |unremarkable-header-2|
+ 1.1.1 unremarkable header 3 ...................... |unremarkable-header-3|
+ 1.1.2 unremarkable header 3 .................... |unremarkable-header-3-1|
+ unremarkable header 2 .............................. |unremarkable-header-2-1|
+ unremarkable header 3 ............................ |unremarkable-header-3-2|
+ unremarkable header 3 ............................ |unremarkable-header-3-3|
+2. bold italic underline strikethrough ............................... |short11|
+ 2.1 superscript2 subscript3 ........................................ |short21|
+ 2.1.1 smallcaps code inline math display math .................. |short31|
+ 2.1.2 link image ............................................... |short32|
+3. Long header 1 long header 1 long header 1 long header 1 long heade... |long1|
+ 3.1 Long header 2 long header 2 long header 2 long header 2 long h... |long21|
+ 3.1.1 Long header 3 long header 3 long header 3 long header 3.... |long31|
+ 3.1.2 Long header 3 long header 3 long header 3 long header 3.... |long32|
+ 3.2 Long header 2 long header 2 long header 2 long header 2 long h... |long22|
+ 3.2.1 Long header 3 long header 3 long header 3 long header 3.... |long33|
+ 3.2.2 Long header 3 long header 3 long header 3 long header 3.... |long34|
+4. ... |long-header-1-long-header-1-long-header-1-long-header-1-long-header-1-long-header-1-long-header-1|
+ 4.1 ... |long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2|
+ 4.1.1 ... |long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3|
+ 4.1.2 ... |long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-1|
+ 4.2 ... |long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-1|
+ 4.2.1 ... |long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-2|
+ 4.2.2 ... |long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-3|
+
+
+Headers with a short title and implicit ref. Last 3 headers are unnumbered.
+
+==============================================================================
+unremarkable header 1 *unremarkable-header-1*
+
+------------------------------------------------------------------------------
+unremarkable header 2 *unremarkable-header-2*
+
+UNREMARKABLE HEADER 3 *unremarkable-header-3*
+
+UNREMARKABLE HEADER 3 *unremarkable-header-3-1*
+
+------------------------------------------------------------------------------
+unremarkable header 2 *unremarkable-header-2-1*
+
+UNREMARKABLE HEADER 3 *unremarkable-header-3-2*
+
+UNREMARKABLE HEADER 3 *unremarkable-header-3-3*
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+Headers with various inline elements
+
+==============================================================================
+bold italic underline strikethrough *short11*
+
+------------------------------------------------------------------------------
+superscript2 subscript3 *short21*
+
+SMALLCAPS `code` `$inline math$` `$display math$` *short31*
+
+LINK example.com *short32*
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+Headers with a long name and explicit short ref
+
+==============================================================================
+Long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 *long1*
+
+------------------------------------------------------------------------------
+Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 *long21*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long31*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long32*
+
+------------------------------------------------------------------------------
+Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 *long22*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long33*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long34*
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+Headers with a long name and implicit ref.
+
+Since implicit ref is very lengthy, there is no way to fit it. Therefore title
+is not rendered and the references exceed the columns (textwidth) limit
+
+==============================================================================
+Long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 *long-header-1-long-header-1-long-header-1-long-header-1-long-header-1-long-header-1-long-header-1*
+
+------------------------------------------------------------------------------
+Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 *long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-1*
+
+------------------------------------------------------------------------------
+Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 *long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-1*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-2*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-3*
+
+ vim:tw=78:sw=4:ts=4:ft=help:norl:et:
diff --git a/test/vimdoc/headers.markdown b/test/vimdoc/headers.markdown
new file mode 100644
index 000000000..fa285c8b1
--- /dev/null
+++ b/test/vimdoc/headers.markdown
@@ -0,0 +1,45 @@
+Headers with a short title and implicit ref. Last 3 headers are unnumbered.
+
+# unremarkable header 1
+## unremarkable header 2
+### unremarkable header 3
+### unremarkable header 3
+## unremarkable header 2 {.unnumbered}
+### unremarkable header 3 {.unnumbered}
+### unremarkable header 3 {.unnumbered}
+
+---
+
+Headers with various inline elements
+
+# **bold** *italic* [underline]{.underline} ~strikethrough~ {#short11}
+## superscript^2^ subscript~3~ {#short21}
+### [smallcaps]{.smallcaps} `code` $inline math$ $$display math$$ {#short31}
+### [link](example.com) ![image](https://duckduckgo.com/favicon.ico) {#short32}
+
+---
+
+Headers with a long name and explicit short ref
+
+# Long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 {#long1}
+## Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 {#long21}
+### Long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 {#long31}
+### Long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 {#long32}
+## Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 {#long22}
+### Long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 {#long33}
+### Long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 {#long34}
+
+---
+
+Headers with a long name and implicit ref.
+
+Since implicit ref is very lengthy, there is no way to fit it. Therefore title
+is not rendered and the references exceed the columns (textwidth) limit
+
+# Long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 long header 1
+## Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2
+### Long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 long header 3
+### Long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 long header 3
+## Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2
+### Long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 long header 3
+### Long header 3 long header 3 long header 3 long header 3 long header 3 long header 3 long header 3
diff --git a/test/vimdoc/headers.vimdoc b/test/vimdoc/headers.vimdoc
new file mode 100644
index 000000000..a73e69770
--- /dev/null
+++ b/test/vimdoc/headers.vimdoc
@@ -0,0 +1,94 @@
+ Type |gO| to see the table of contents.
+
+unremarkable header 1 .................................. |unremarkable-header-1|
+ unremarkable header 2 ................................ |unremarkable-header-2|
+ unremarkable header 2 .............................. |unremarkable-header-2-1|
+bold italic underline strikethrough .................................. |short11|
+ superscript2 subscript3 ............................................ |short21|
+Long header 1 long header 1 long header 1 long header 1 long header 1... |long1|
+ Long header 2 long header 2 long header 2 long header 2 long heade... |long21|
+ Long header 2 long header 2 long header 2 long header 2 long heade... |long22|
+... |long-header-1-long-header-1-long-header-1-long-header-1-long-header-1-long-header-1-long-header-1|
+ ... |long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2|
+ ... |long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-1|
+
+
+Headers with a short title and implicit ref. Last 3 headers are unnumbered.
+
+==============================================================================
+unremarkable header 1 *unremarkable-header-1*
+
+------------------------------------------------------------------------------
+unremarkable header 2 *unremarkable-header-2*
+
+UNREMARKABLE HEADER 3 *unremarkable-header-3*
+
+UNREMARKABLE HEADER 3 *unremarkable-header-3-1*
+
+------------------------------------------------------------------------------
+unremarkable header 2 *unremarkable-header-2-1*
+
+UNREMARKABLE HEADER 3 *unremarkable-header-3-2*
+
+UNREMARKABLE HEADER 3 *unremarkable-header-3-3*
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+Headers with various inline elements
+
+==============================================================================
+bold italic underline strikethrough *short11*
+
+------------------------------------------------------------------------------
+superscript2 subscript3 *short21*
+
+SMALLCAPS `code` `$inline math$` `$display math$` *short31*
+
+LINK example.com *short32*
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+Headers with a long name and explicit short ref
+
+==============================================================================
+Long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 *long1*
+
+------------------------------------------------------------------------------
+Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 *long21*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long31*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long32*
+
+------------------------------------------------------------------------------
+Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 *long22*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long33*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long34*
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+Headers with a long name and implicit ref.
+
+Since implicit ref is very lengthy, there is no way to fit it. Therefore title
+is not rendered and the references exceed the columns (textwidth) limit
+
+==============================================================================
+Long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 long header 1 *long-header-1-long-header-1-long-header-1-long-header-1-long-header-1-long-header-1-long-header-1*
+
+------------------------------------------------------------------------------
+Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 *long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-1*
+
+------------------------------------------------------------------------------
+Long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 long header 2 *long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-long-header-2-1*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-2*
+
+LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 LONG HEADER 3 *long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-long-header-3-3*
+
+ vim:tw=78:sw=4:ts=4:ft=help:norl:et:
diff --git a/test/vimdoc/vim-online-doc.markdown b/test/vimdoc/vim-online-doc.markdown
new file mode 100644
index 000000000..ecc80b400
--- /dev/null
+++ b/test/vimdoc/vim-online-doc.markdown
@@ -0,0 +1,42 @@
+# Online vim documentation
+
+While vim documentation can be accessed with `:help`, it may be beneficial to
+link to the websites inside readme/markdown docs. Two most common websites are:
+
+- <https://vimhelp.org/> and
+- <https://neovim.io/doc/user>
+
+Also it is not uncommon to reference documentation as `:h <topic>`
+
+## Links to vimhelp.org {#vimhelp-links}
+
+For introduction to writing help files see
+<https://vimhelp.org/helphelp.txt.html#help-writing>
+
+Named link: [vimhelp link](https://vimhelp.org/helphelp.txt.html#help-writing)
+
+## Links to neo.vimhelp.org {#neo-vimhelp-links}
+
+For introduction to writing help files see
+<https://neo.vimhelp.org/helphelp.txt.html#help-writing>
+
+Named link: [vimhelp link](https://neo.vimhelp.org/helphelp.txt.html#help-writing)
+
+## Links to neovim.io {#neovim-io-links}
+
+For introduction to writing help files see
+<https://neovim.io/doc/user/helphelp.html#help-writing>
+
+Named link: [neovim.io link](https://neovim.io/doc/user/helphelp.html#help-writing)
+
+You can also reference whole files with topic omitted:
+<https://neovim.io/doc/user/vim_diff.html>
+
+## :h-style documentation {#colon-h-docs}
+
+For introduction to writing help files see
+`:h help-writing`
+
+Long name for `:help` is also supported: `:help help-writing`
+
+This is malformed: `:help help-writing `, but this is not: `:help help-writing`
diff --git a/test/vimdoc/vim-online-doc.vimdoc b/test/vimdoc/vim-online-doc.vimdoc
new file mode 100644
index 000000000..179454f91
--- /dev/null
+++ b/test/vimdoc/vim-online-doc.vimdoc
@@ -0,0 +1,53 @@
+ Type |gO| to see the table of contents.
+
+Online vim documentation ............................ |online-vim-documentation|
+ Links to vimhelp.org ......................................... |vimhelp-links|
+ Links to neo.vimhelp.org ................................. |neo-vimhelp-links|
+ Links to neovim.io ......................................... |neovim-io-links|
+ :h-style documentation ........................................ |colon-h-docs|
+
+==============================================================================
+Online vim documentation *online-vim-documentation*
+
+While vim documentation can be accessed with `:help`, it may be beneficial to
+link to the websites inside readme/markdown docs. Two most common websites
+are:
+
+- https://vimhelp.org/ and
+- https://neovim.io/doc/user
+
+Also it is not uncommon to reference documentation as |<topic>|
+
+------------------------------------------------------------------------------
+Links to vimhelp.org *vimhelp-links*
+
+For introduction to writing help files see |help-writing|
+
+Named link: vimhelp link |help-writing|
+
+------------------------------------------------------------------------------
+Links to neo.vimhelp.org *neo-vimhelp-links*
+
+For introduction to writing help files see |help-writing|
+
+Named link: vimhelp link |help-writing|
+
+------------------------------------------------------------------------------
+Links to neovim.io *neovim-io-links*
+
+For introduction to writing help files see |help-writing|
+
+Named link: neovim.io link |help-writing|
+
+You can also reference whole files with topic omitted: |vim_diff.txt|
+
+------------------------------------------------------------------------------
+:h-style documentation *colon-h-docs*
+
+For introduction to writing help files see |help-writing|
+
+Long name for `:help` is also supported: |help-writing|
+
+This is malformed: |help-writing|, but this is not: |help-writing|
+
+ vim:tw=78:sw=4:ts=4:ft=help:norl:et:
diff --git a/test/writer.vimdoc b/test/writer.vimdoc
new file mode 100644
index 000000000..daacdae02
--- /dev/null
+++ b/test/writer.vimdoc
@@ -0,0 +1,669 @@
+ Pandoc Test Suite by John MacFarlane, Anonymous
+
+
+ Type |gO| to see the table of contents.
+
+
+This is a set of tests for pandoc. Most of them are adapted from John Gruber's
+markdown test suite.
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Headers *headers*
+
+--------------------------------------------------------------------------------
+Level 2 with an embedded link /url *level-2-with-an-embedded-link*
+
+LEVEL 3 WITH EMPHASIS *level-3-with-emphasis*
+
+Level 4 *level-4*
+
+Level 5 *level-5*
+
+================================================================================
+Level 1 *level-1*
+
+--------------------------------------------------------------------------------
+Level 2 with emphasis *level-2-with-emphasis*
+
+LEVEL 3 *level-3*
+
+with no blank line
+
+--------------------------------------------------------------------------------
+Level 2 *level-2*
+
+with no blank line
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Paragraphs *paragraphs*
+
+Here's a regular paragraph.
+
+In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item.
+Because a hard-wrapped line in the middle of a paragraph looked like a list
+item.
+
+Here's one with a bullet. * criminey.
+
+There should be a hard line break
+here.
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Block Quotes *block-quotes*
+
+E-mail style:
+
+ This is a block quote. It is pretty short.
+
+ Code in a block quote:
+
+ >
+ sub status {
+ print "working";
+ }
+<
+ A list:
+
+ 1. item one
+ 2. item two
+
+ Nested block quotes:
+
+ nested
+
+ nested
+
+This should not be a block quote: 2 > 1.
+
+And a following paragraph.
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Code Blocks *code-blocks*
+
+Code:
+
+>
+ ---- (should be four hyphens)
+
+ sub status {
+ print "working";
+ }
+
+ this code block is indented by one tab
+<
+And:
+
+>
+ this code block is indented by two tabs
+
+ These should not be escaped: \$ \\ \> \[ \{
+<
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Lists *lists*
+
+--------------------------------------------------------------------------------
+Unordered *unordered*
+
+Asterisks tight:
+
+- asterisk 1
+- asterisk 2
+- asterisk 3
+
+Asterisks loose:
+
+- asterisk 1
+
+- asterisk 2
+
+- asterisk 3
+
+Pluses tight:
+
+- Plus 1
+- Plus 2
+- Plus 3
+
+Pluses loose:
+
+- Plus 1
+
+- Plus 2
+
+- Plus 3
+
+Minuses tight:
+
+- Minus 1
+- Minus 2
+- Minus 3
+
+Minuses loose:
+
+- Minus 1
+
+- Minus 2
+
+- Minus 3
+
+--------------------------------------------------------------------------------
+Ordered *ordered*
+
+Tight:
+
+1. First
+2. Second
+3. Third
+
+and:
+
+1. One
+2. Two
+3. Three
+
+Loose using tabs:
+
+1. First
+
+2. Second
+
+3. Third
+
+and using spaces:
+
+1. One
+
+2. Two
+
+3. Three
+
+Multiple paragraphs:
+
+1. Item 1, graf one.
+
+ Item 1. graf two. The quick brown fox jumped over the lazy dog's back.
+
+2. Item 2.
+
+3. Item 3.
+
+--------------------------------------------------------------------------------
+Nested *nested*
+
+- Tab
+ - Tab
+ - Tab
+
+Here's another:
+
+1. First
+2. Second:
+ - Fee
+ - Fie
+ - Foe
+3. Third
+
+Same thing but with paragraphs:
+
+1. First
+
+2. Second:
+
+ - Fee
+ - Fie
+ - Foe
+
+3. Third
+
+--------------------------------------------------------------------------------
+Tabs and spaces *tabs-and-spaces*
+
+- this is a list item indented with tabs
+
+- this is a list item indented with spaces
+
+ - this is an example list item indented with tabs
+
+ - this is an example list item indented with spaces
+
+--------------------------------------------------------------------------------
+Fancy list markers *fancy-list-markers*
+
+(2) begins with 2
+
+(3) and now 3
+
+ with a continuation
+
+ iv. sublist with roman numerals, starting with 4
+ v. more items
+ (A) a subsublist
+ (B) a subsublist
+
+Nesting:
+
+A. Upper Alpha
+ I. Upper Roman.
+ (6) Decimal start with 6
+ c) Lower alpha with paren
+
+Autonumbering:
+
+1. Autonumber.
+2. More.
+ 1. Nested.
+
+Should not be a list item:
+
+M.A. 2007
+
+B. Williams
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Definition Lists *definition-lists*
+
+Tight using spaces:
+
+apple
+ red fruit
+orange
+ orange fruit
+banana
+ yellow fruit
+
+Tight using tabs:
+
+apple
+ red fruit
+orange
+ orange fruit
+banana
+ yellow fruit
+
+Loose:
+
+apple
+ red fruit
+
+orange
+ orange fruit
+
+banana
+ yellow fruit
+
+Multiple blocks with italics:
+
+apple
+ red fruit
+
+ contains seeds, crisp, pleasant to taste
+
+orange
+ orange fruit
+
+ >
+ { orange code block }
+<
+ orange block quote
+
+Multiple definitions, tight:
+
+apple
+ red fruit
+ computer
+orange
+ orange fruit
+ bank
+
+Multiple definitions, loose:
+
+apple
+ red fruit
+
+ computer
+
+orange
+ orange fruit
+
+ bank
+
+Blank line after term, indented marker, alternate markers:
+
+apple
+ red fruit
+
+ computer
+
+orange
+ orange fruit
+
+ 1. sublist
+ 2. sublist
+
+================================================================================
+HTML Blocks *html-blocks*
+
+Simple block on one line:
+
+foo
+And nested without indentation:
+
+foo
+
+bar
+Interpreted markdown in a table:
+
+This is emphasized
+And this is strong
+Here's a simple block:
+
+foo
+
+This should be a code block, though:
+
+>
+ <div>
+ foo
+ </div>
+<
+As should this:
+
+>
+ <div>foo</div>
+<
+Now, nested:
+
+foo
+This should just be an HTML comment:
+
+Multiline:
+
+Code block:
+
+>
+ <!-- Comment -->
+<
+Just plain comment, with trailing spaces on the line:
+
+Code:
+
+>
+ <hr />
+<
+Hr's:
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Inline Markup *inline-markup*
+
+This is emphasized, and so is this.
+
+This is strong, and so is this.
+
+An emphasized link /url.
+
+This is strong and em.
+
+So is this word.
+
+This is strong and em.
+
+So is this word.
+
+This is code: `>`, `$`, `\`, `\$`, `<html>`.
+
+This is strikeout.
+
+Superscripts: abcd ahello ahello there.
+
+Subscripts: H2O, H23O, Hmany of themO.
+
+These should not be superscripts or subscripts, because of the unescaped spaces:
+a^b c^d, a~b c~d.
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Smart quotes, ellipses, dashes *smart-quotes-ellipses-dashes*
+
+"Hello," said the spider. "'Shelob' is my name."
+
+'A', 'B', and 'C' are letters.
+
+'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.'
+
+'He said, "I want to go."' Were you alive in the 70's?
+
+Here is some quoted '`code`' and a "quoted link
+http://example.com/?foo=1&bar=2".
+
+Some dashes: one---two --- three---four --- five.
+
+Dashes between numbers: 5--7, 255--66, 1987--1999.
+
+Ellipses...and...and....
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+LaTeX *latex*
+
+-
+- `$2+2=4$`
+- `$x \in y$`
+- `$\alpha \wedge \omega$`
+- `$223$`
+- `$p$`-Tree
+- Here's some display math:
+ `$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$`
+- Here's one that has a line break in it: `$\alpha + \omega \times x^2$`.
+
+These shouldn't be math:
+
+- To get the famous equation, write `$e = mc^2$`.
+- $22,000 is a lot of money. So is $34,000. (It worked if "lot" is emphasized.)
+- Shoes ($20) and socks ($5).
+- Escaped `$`: $73 this should be emphasized 23$.
+
+Here's a LaTeX table:
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Special Characters *special-characters*
+
+Here is some unicode:
+
+- I hat: Î
+- o umlaut: ö
+- section: §
+- set membership: ∈
+- copyright: ©
+
+AT&T has an ampersand in their name.
+
+AT&T is another way to write it.
+
+This & that.
+
+4 < 5.
+
+6 > 5.
+
+Backslash: \
+
+Backtick: `
+
+Asterisk: *
+
+Underscore: _
+
+Left brace: {
+
+Right brace: }
+
+Left bracket: [
+
+Right bracket: ]
+
+Left paren: (
+
+Right paren: )
+
+Greater-than: >
+
+Hash: #
+
+Period: .
+
+Bang: !
+
+Plus: +
+
+Minus: -
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Links *links*
+
+--------------------------------------------------------------------------------
+Explicit *explicit*
+
+Just a URL /url/.
+
+URL and title /url/.
+
+URL and title /url/.
+
+URL and title /url/.
+
+URL and title /url/
+
+URL and title /url/
+
+with_underscore /url/with_underscore
+
+Email link [email protected]
+
+Empty .
+
+--------------------------------------------------------------------------------
+Reference *reference*
+
+Foo bar /url/.
+
+With embedded [brackets] /url/.
+
+b /url/ by itself should be a link.
+
+Indented once /url.
+
+Indented twice /url.
+
+Indented thrice /url.
+
+This should [not][] be a link.
+
+>
+ [not]: /url
+<
+Foo bar /url/.
+
+Foo biz /url/.
+
+--------------------------------------------------------------------------------
+With ampersands *with-ampersands*
+
+Here's a link with an ampersand in the URL http://example.com/?foo=1&bar=2.
+
+Here's a link with an amersand in the link text: AT&T http://att.com/.
+
+Here's an inline link /script?foo=1&bar=2.
+
+Here's an inline link in pointy braces /script?foo=1&bar=2.
+
+--------------------------------------------------------------------------------
+Autolinks *autolinks*
+
+With an ampersand: http://example.com/?foo=1&bar=2
+
+- In a list?
+- http://example.com/
+- It should.
+
+An e-mail address: [email protected]
+
+ Blockquoted: http://example.com/
+
+Auto-links should not occur here: `<http://example.com/>`
+
+>
+ or here: <http://example.com/>
+<
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Images *images*
+
+From "Voyage dans la Lune" by Georges Melies (1902):
+
+Here is a movie icon.
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+================================================================================
+Footnotes *footnotes*
+
+Here is a footnote reference, |footnote1| and another. |footnote2| This should
+not be a footnote reference, because it contains a space.[^my note] Here is an
+inline note. |footnote3|
+
+ Notes can go in quotes. |footnote4|
+
+1. And in list items. |footnote5|
+
+This paragraph should not be part of the note, as it is not indented.
+
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ *footnote1*
+Here is the footnote. It can go anywhere after the footnote reference. It need
+not be placed at the end of the document.
+
+ *footnote2*
+Here's the long note. This one contains multiple blocks.
+
+Subsequent blocks are indented to show that they belong to the footnote (as with
+list items).
+
+>
+ { <code> }
+<
+If you want, you can indent every line, but you can also be lazy and just indent
+the first line of each block.
+
+ *footnote3*
+This is easier to type. Inline notes may contain links http://google.com and `]`
+verbatim characters, as well as [bracketed text].
+
+ *footnote4*
+In quote.
+
+ *footnote5*
+In list.
+
+ vim:tw=80:sw=4:ts=4:ft=help:norl:et: