markdown-mode Test Cases

1. Lists

Unordered lists:

Ordered lists:

  1. This is an ordered list

  2. With a second element.

  3. And a forty-fourth element.

  4. Remember, Markdown doesn’t care which number you use.

List items with bold and italic:

Bold and italic phrases at the beginning of lines:

not a list also not a list

2. Blockquotes

this is a test of the blockquote mechanism

3. Two Inline Links on One Line

Contributed by Ryan Barrett on 2007-07-02

thanks! the new version 1.4 works great. very cool.

i did notice a minor bug. if there are two inline links in the same line, e.g. baz , it colors the text between the links (baz) as well.

i’m guessing this is because the inline link regexp is greedy. if you switch it to non-greedy - if elisp can do that - or to something like ‘[And this is a valid reference definition!]+]’ if not, that might do the trick.

4. Empty Inline Links

5. Bold and Italics on the Same Line

Contributed by Conal Elliott on 2007-08-27

By the way, here are two syntax-highlighting glitches I’ve seen so far:

foo and doo or ziddle zop Oh – what’s happening here?

6. Reverse Order Italic then Bold

Why doesn’t the bold part get picked up? ziddle zop or foo and doo

7. Two Inline Links in One Line

Contributed by Alastair Rankine on 2007-09-10

Thanks for this, I have been waiting for an emacs markdown mode for ages!

One minor quibble is in the highlighting of inline links. As currently (1.4) implemented the presence of a close paren on the same line as an inline link will highlight the link and the subsequent text:

[blah](this bit will be highlighted) and so (will this bit)

I think this is because of greedy regexes. Here is a simple patch to address.

8. Reference-Style Link with a Space

Here’s a [link] with a space between the components.

9. Inline Code

Single backtick code fragments as well as double`backtick fragments are supported.

10. Single Underscore and Asterisk

This is a _ single underscore and a * single asterisk. They should not trigger font locking.

11. Double Underscores and Asterisks

Neither should a double **asterisk and double__ underscore!

12. List-Like Strings in Preformatted Text

To make lists look nice, you can wrap items with hanging indents:

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    Suspendisse id sem consectetuer libero luctus adipiscing.

13. Multi-Line Italic and Bold

bold phrase spanning two lines asdf same line test

italic phrase spanning two lines italic same line test

14. Reference Links

This document was created in GNU Emacs using . It provides syntax highlighting for Markdown Homepage documents which allows reference-style links like these. The reference definitions can even contain alternate text such as Alternate Text.

15. Escaping

ab *literal asterisks* asdf inside * literal asterisks asd lkj

ab *this should be italic* yz
ab *this should be italic* yz
ab *this should be italic* yz
ab *this should be italic* yz

16. Single Letter and Word on Same Line

a single a bold letter and bold word test asdf
a single a italic letter and italic word test asdf
a single a bold letter and bold word test asdf
a single a italic letter italic word test asdf

17. Hanging Indents

18. Links in Preformatted Text

Here’s an example of reference links in action:

This document was created in GNU Emacs using [markdown-mode][].  It
provides syntax highlighting for [Markdown][] documents which allows
reference-style links like these.  The reference definitions can even
contain alternate text such as [this one][id].

 [markdown-mode]: http://jrblevin.freeshell.org/software/markdown-mode
 [Markdown]:      http://daringfireball.net/projects/markdown
 [id]:            http://reference-link.com/with/alt "Alternate Text"

19. Slash-Star in Preformatted Text

svn commit -m "Imported RCS project"
svn add image.png binaries/*
svn commit -m "Imported additional project files"

This text gets counted as part of the block quote too. But it can be ended by a star-slash: */ It is as if markdown-mode is using C++ style comments.

Fixed by commit d81138d.

20. Underscores in Code Blocks

Contributed by shindo on 2008-01-20

get_something_by_name()

21. Escaped Characters

Escaped backticks: `not code`

Escaped underscores: don’t_italicize_this

Escaped asterisks: *also not italic*

Escaped hash marks:
# This is not a heading

22. Adjacent Wiki Links

[[Two]] [[WikiLinks]] [[InARow]]

23. SmartyPants

This is a test of “SmartyPants,” a progrm written by John Gruber for generating typographically correct HTML entities–ones such as the em-dash and ellipsis…

24. Horizontal Rules




25. Asterisks and Underscores Across Blocks

Asterisks *should

not match across* block boundaries.

Underscores _should

not match across_ block boundaries.

Double Asterisks **should

not match across** block boundaries.

Double underscores __should

not match across__ block boundaries.

But, this should still match.

So should this.

Addressed by commit d81138d.

26. Underscores Within Words

Code fragments can_have_underscores_inside_like this.

27. Code Blocks Spanning Lines

Markdown allows code fragments to span across lines.

Let’s make sure that double` backtick`code fragments work this way too.

However, they should `not

match` across blocks.

Here’s another valid one.

28. Pre Blocks and Nested Lists

29. Colon After Wiki Link

[[AnotherLink]]:note

30. Incorrect Parsing of List Paragraph

Contributed by Luciano Gerber on April 4, 2012.

It is interesting to see what happens when one queries social upheaval and protopalatial era.

The preceding text should not be matched as a preformatted block.

31. Footnotes

This is a footnote marker,[^1] but this is not.And this is a valid reference definition!

32. Carat as Implicit Reference Link

This is a valid markdown link: And this is a valid reference definition!

33. Email Address Inside Bold and Italic Spans

Lorem amet.

Lorem amet.

34. URL Inside Bold and Italic Spans

markdown-mode homepage

markdown-mode homepage

35. Complex Preformatted Code Block

class Employee < ActiveRecord::Base
  attr_accessible :github_username, :name

  def self.syncify!
    begin
      employee_sync = GitOrganized::GithubEmployeeSync.new(
        GitOrganized::Organization.new(
          GitOrganized.config.default_org,
          ["employees-pull", "employees-push"]
        ),
        Sources.new
      )

      employee_sync.sync
    rescue Github::Error::ServiceError => e
      retry
    end
  end

  after_save do |employee| Employee.syncify! end
  after_destroy do |employee| Employee.syncify! end
end

36. Fenced Code Blocks

Fenced code blocks begin with three or more tildes and end with a line with at least as many tildes.

program hello
  implicit none
  print '(a)', 'Hello, world!'
end program hello

They may also have a lang attribute.

program hello
  implicit none
  print '(a)', 'Hello, world!'
end program hello

In Kramdown, one specifies the language identifier as follows:

program hello
  implicit none
  print '(a)', 'Hello, world!'
end program hello

or with a Maruku-style inline attribute list

program hello
  implicit none
  print '(a)', 'Hello, world!'
end program hello

{: .language-fortran}