Contents
- Basic features
- Advanced features
-
[https://help.github.com/articles/github-flavored-markdown GitHub …
- Newlines
- Multiple underscores in words
- URL autolinking
- Fenced code blocks
- [https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments …
- Quick quoting
- Name and Team @mentions autocomplete
- Emoji autocomplete
- Issue autocompletion
- Zen Mode (fullscreen) writing
- Closing issues via commit messages
- References
- Markdown Extra
- MultiMarkdown
- Pandoc
- Discount
- StackOverflow extensions
- RDoc Markdown
- [http://www.stack.nl/~dimitri/doxygen/manual/markdown.html Doxygen …
Markdown
Markdown is a semi-structured markup language originally designed for blogs, which is now used in several wikis as well.
It is now widely used in the software developer community, because it is the preferred authoring markup used by GitHub and StackOverflow. See Introduction to GFM and Markdown help respectively for what variant is supported in each.
The syntax shares many similarities with WikiCreole, ReST and our own markup. Therefore, the markdown syntax would fit well with our current syntax, in particular the rules for nesting paragraphs. The new WikiEngine should also make it possible to implement optional or conditional support for Markdown, for the features that conflict with the current syntax.
This page lists the details of the basic syntax, the advanced syntax and its popular extensions.
Basic features
PARAGRAPHS, HEADERS, BLOCKQUOTES
A First Level Header ==================== A Second Level Header --------------------- Now is the time for all good men to come to the aid of their country. This is just a regular paragraph. The quick brown fox jumped over the lazy dog's back. ### Header 3 > This is a blockquote. > > This is the second paragraph in the blockquote. > > ## This is an H2 in a blockquote
The first level and second level headers are really a thing to have, as it's also supported in reStructuredText.
The ###
for sections is problematic, as this conflicts with WikiCreole's numbered lists.
PHRASE EMPHASIS
Some of these words *are emphasized*. Some of these words _are emphasized also_. Use two asterisks for **strong emphasis**. Or, if you prefer, __use two underscores instead__.
These ones must be handled with care.
LISTS
Unnumbered lists, same as us with *
and -
but also +
.
Numbered lists, same as us.
But:
* A list item. With multiple paragraphs. * Another item in the list.
This is a huge win and one of the main motivations behind the new engine. (see #8140, #1936)
LINKS
This:
This is an [example link](http://example.com/).
and that:
This is an [example link](http://example.com/ "With a Title").
References:
I get 10 times more traffic from [Google][1] than from [Yahoo][2] or [MSN][3]. [1]: http://google.com/ "Google" [2]: http://search.yahoo.com/ "Yahoo Search" [3]: http://search.msn.com/ "MSN Search" I start my morning with a cup of coffee and [The New York Times][NY Times]. [ny times]: http://www.nytimes.com/
IMAGES
![alt text](/path/to/img.jpg "Title") ![alt text][id] [id]: /path/to/img.jpg "Title"
So we'll have to find another way than the usual !...
for escaping links. In Markdown, it's usually \
which is used for escaping markup.
At first it looks like a very simple alternative to the Image macro, however I've seen things like:
[![Build Status](https://secure.travis-ci.org/libgit2/libgit2.png?branch=development)](http://travis-ci.org/libgit2/libgit2)
i.e. the image link can be written inside the label part of a normal link (like other inline markup), which can be a challenge! But we also wanted that already for our own TracLinks, see #9123.
Note that tricky stuff like [`o]o`](http://example.com)
easily confuses the GitHub parser.
CODE
We have `...`
also.
But see below.
Advanced features
INLINE HTML
This is a regular paragraph. <table> <tr> <td>Foo</td> </tr> </table> This is another regular paragraph.
The original spec mention that the content of these elements is not parsed as Markdown, but some extensions allow for it.
So this *might* be an alternative to our WikiProcessors for WikiHtml.
BLOCKQUOTES
"Markdown allows you to be lazy and only put the > before the first line of a hard-wrapped paragraph:"
> This is a blockquote with two paragraphs. 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.
LISTS
"It looks nice if you indent every line of the subsequent paragraphs, but here again, Markdown will allow you to be lazy:"
* This is a list item with two paragraphs. This is the second paragraph in the list item. You're only required to indent the first line. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. * Another item in the same list.
This breaks the base assumption of the vertical/horizontal parsing.
CODE
``There is a literal backtick (`) here.``
GitHub Flavored Markdown
Newlines
This is our "standard" respect new line setting. Applied in tickets, not in wiki pages.
Multiple underscores in words
Sure, perform_complicated_task shouldn't become performcomplicatedtask.
We could even auto-verbatim these.
URL autolinking
We have this feature already.
Fenced code blocks
``` verbatim text here ```
With optional syntax-highlighting: ```ruby
.
Well, in fact our usual #!processor args
should apply here (```processor args
).
See #10734.
Task Lists
Aha! Thought about them since a long time, and finally GitHub did it.
It's only possible to support it if we're able to rewrite the original wiki text from the parsed data.
Quick quoting
Well, that's more an UI thing, but why not.
Name and Team @mentions autocomplete
Once we have a better notion of users. But @user
syntax seems to have become the de-facto standard (I would have preferred ~user though).
Auto-complete could be used for a great deal of other things (WikiPageNames and WikiMacros, source paths, attachment names, etc. See #9296).
Emoji autocomplete
Some kind of integration with the WikiExtras (|...|)
→ :...:
.
Issue autocompletion
Intelligent auto-completion, perhaps even with filtering. Well, this is also an UI topic, nothing special about the syntax.
Zen Mode (fullscreen) writing
Also UI.
Closing issues via commit messages
We have this feature already.
References
* SHA: be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 * User@SHA ref: mojombo@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 * User/Project@SHA: mojombo/god@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 * \#Num: #1 * User/#Num: mojombo#1 * User/Project#Num: mojombo/god#1
References to SHA1 numbers are/should be unique enough for not having to ask the user to add the repository name. However, if it's added, then we know explicitly where to go (in case the same commit is present in multiple repositories).
Markdown Extra
MultiMarkdown
- footnotes
- tables
- citations and bibliography (works best in LaTeX using BibTeX)
- math support
- automatic cross-referencing ability
- smart typography, with support for multiple languages
- image attributes
- table and image captions
- definition lists
- glossary entries (LaTeX only)
- document metadata, such as title, author, etc.